An open API service indexing awesome lists of open source software.

https://github.com/ctripcorp/vi

帮助了解和控制应用
https://github.com/ctripcorp/vi

Last synced: about 1 year ago
JSON representation

帮助了解和控制应用

Awesome Lists containing this project

README

          

Cornerstone(基石)
================

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

Cornerstone(基石)是携程框架部门研发的内部可视化组件VI的开源版本,VI产品创意来源于ebay同名产品VI,VI是validation internals的缩写,字面意思可以理解为“内部验证”。你可以将VI理解为应用的窗口。 VI的一个目标就是把原本的应用黑盒子,变成一个透明的盒子。
在携程,VI主要是一个应用及应用相关环境的可视化工具,和应用健康状态及启动管理的工具(目前已是ctrip集团健康检测和点火标准)。
将开源版本命名为cornerstone是希望在这个组件里解决更多的基础问题,让开发和运营更简单和高效。

# Features
* **无中心,无强依赖(仅强依赖slf4j和gson)**
* **小而独立**
* **寄生在应用里**
* **WEB展示和数据收集都在一个组件里**
* **数据实时**
* **数据覆盖面广(目标是暴露应用相关的一切)**
* **对应用影响小(不访问时,不消耗运行资源)**
* **极强扩展性**
* **启动管理**
* **缓存管理**
* **日志查看**
* **GC日志分析**
* **多环境配置管理**
* **大部分jdk tool web化**
* **支持无埋点实时metrics**
* **支持无埋点实时"debug"**

# 和JMX的关系
* **cornerstone里使用大量标准jmx mbean获取数据,并提供自动将特有的component status类(极易使用)转换为mbean并注册(大大简化mbean开发成本)。**
* **和jconsole以及jvisualvm 比的优势:**
* 使用公司sso认证
* 无需应用开启额外端口.
* 图形展示上更灵活
* 数据更丰富


# 何时需要Cornerstone
当想了解应用健康状况。当想了解应用启动过程。当想了解使用组件的运行情况时。当需要定位问题时。当你需要暴露应用运行数据时。当想了解应用各类资源占用情况时。当想查找各类配置时。当需要给应用性能调优时 。。。
总之,你所关心应用运行的一切,都可以通过这个窗口了解和控制。

# 如何使用
**(特别注意:目前VI只支持JDK>=1.7应用)**
- 任何java应用都可以接入VI,VI接入有两种模式,寄生模式和自主模式。
寄生模式VI会寄生在已有的WEB容器里,不需要新开端口。
自主模式,等于在应用上启动一个http协议的web服务。

- VI主要功能演示都在cornerstone-example子项目中。
这是一个web项目,将编译后的war包部署到tomcat里即可运行,例如将这个war包部署在本地的端口为8080的tomcat服务器,访问路径为http://localhost:8080/cornerstone-example-0/@in。

- **想快速了解VI,可以使用spring boot example项目, 运行简单,使用方便**
- mvn方式: 在项目根目录运行 **mvn -pl spring-boot-example spring-boot:run** 即运行了一个含VI的spring boot应用。
运行端口为9090,可以使用http://localhost:9090/@in 来访问VI。
- IDE方式: 直接运行项目中**ServiceStarter.java** 的main方法,来运行或调试。

- 下面主要介绍**寄生模式**(自主模式可以参考cornerstone-server里的测试用例)
web和spring项目只需依赖vi的jar包即可使用。可以自己编译cornerstone子模块得到jar包,也可以使用[预编译好的jar包(寄生模式)](https://raw.githubusercontent.com/ctripcorp/cornerstone/master/release/vi-0.2.0-alpha.zip)。

当web或spring boot应用使用默认的寄生模式接入VI后,VI会接管[应用路径]/@in的路径。
例如tomcat应用,如果部署完成后的访问根路径为http://localhost/tomcat-demo, 那么可以使用 http://localhost/tomcat-demo/@in 来访问VI。

# Screenshots
![默认界面](https://raw.githubusercontent.com/ctripcorp/cornerstone/master/doc/imgs/cs-main.png)
![启动日志](https://raw.githubusercontent.com/ctripcorp/cornerstone/master/doc/imgs/cs-ignite.png)
![实时metrics](https://raw.githubusercontent.com/ctripcorp/cornerstone/master/doc/imgs/cs-metrics.png)
![动态埋点](https://raw.githubusercontent.com/ctripcorp/cornerstone/master/doc/imgs/cs-debug.png)
![GC日志分析](https://raw.githubusercontent.com/ctripcorp/cornerstone/master/doc/imgs/cs-gc.png)

# Developers
* tyaloo

# License
The project is licensed under the [Apache 2 license](https://github.com/ctripcorp/apollo/blob/master/LICENSE).