系统监控
应用监控
Macula是用大众点评开源的CAT作为应用监控的服务器端,并通过插件集成,具体开启应用监控的步骤如下:
首先:如果你是WEB应用需要依赖macula-plugins-catex插件,如果是Dubbo应用,需要依赖macula-plugins-cat插件
创建client.xml
/data/appdatas/cat/目录下,新建一个client.xml文件(线上环境是OP配置) 如果系统是windows环境,则在eclipse运行的盘,比如D盘,新建/data/appdatas/cat/目录,新建client.xml文件 /data/appdatas/cat/client.xml,此文件有OP控制,这里的Domain名字用来做开关,如果一台机器上部署了多个应用,可以指定把一个应用的监控关闭。
<config mode="client">
<servers>
<server ip="10.66.13.115" port="2280" />
</servers>
</config>
alpha、beta这个配置需要自己在此目录添加 预发以及生产环境这个配置需要通知到对应OP团队,让他们统一添加,自己上线时候做下检查即可 a、10.66.13.115:2280端口是指向测试环境的cat地址 b、配置可以加入CAT的开关,用于关闭CAT消息发送,将enabled改为false,如下表示将mobile-api这个项目关闭
<config mode="client">
<servers>
<server ip="10.66.13.115" port="2280" />
</servers>
<domain id="mobile-api" enabled="false"/>
</config>
配置
1) macula.properties
#监控开启,默认是true,不开启监控
monitor.disabled = false
2) web.xml,将下面的Filter加在最前面的filter中
<!-- Cat Filter -->
<filter>
<filter-name>maculaPluginsCat</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- Cat Filter Mapping -->
<filter-mapping>
<filter-name>maculaPluginsCat</filter-name>
<servlet-name>appServlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
这将开启对所有URL请求的监控,但是默认排除了资源文件。
3) log4j.properties
### cat appender ###
log4j.appender.cat=org.macula.plugins.cat.log4j.CatAppender
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=WARN, stdout, fileout, cat
开启log4j发送到Cat,只有Error或以上级别的日志会发送
4) Druid DataSource配置
<property name="proxyFilters">
<list>
<bean class="org.macula.plugins.cat.druid.CatFilter" />
</list>
</property>
druid数据源中添加上述配置开启对SQL的监控。
5) Spring Service监控 依赖macula-plugins-cat插件默认会开启对@Service注解的方法的监控
6) Dubbo监控 给dubbo配置上CatConsumerFilter和CatProviderFilter即可完成对dubbo分布式访问的监控,默认已经开启了这两个Filter。
同时,在消费端需要配置:
<dubbo:reference id="registryService" interface="com.alibaba.dubbo.registry.RegistryService" check="false" />
如果是直接连接没有注册中心的,不能配置上述registryService,通过给reference添加provider参数来配置。
<dubbo:reference id="demoService" interface="org.macula.plugins.dubbo.test.api.DemoService" >
<dubbo:parameter key="provider" value="hello-app"/>
</dubbo:reference>
上述配置的主要目的就是让消费方知道调用的Service的Application Name是什么,这样CAT监控的时候就可以相互关联起来。
7) 埋点监控 请查看Cat文档,特别是业务指标监控,需要在Cat后台添加相应的指标名称,然后才能够显示。
8) 转义送到CAT的URL
在你的webapp中找到xxx-servlet.xml,添加如下配置
<bean class="org.macula.plugins.cat.web.RequestToNameBridge" />
然后在xxx-app.xml中添加如下配置
<bean class="org.macula.plugins.cat.web.DefaultRequestToNameImpl" />
当然,你也可以自己实现真实的URL请求地址的转义,具体可以参考DefaultRequestToNameImpl的实现方式。
从macula-plugins-monitor迁移到CAT监控
如果之前有使用macula-plugins-monitor监控,需要现在web.xml中注释掉如下配置
<!-- Monitor HTTP -->
<!--
<filter>
<filter-name>maculaPluginsMonitoring</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
-->
<!--
<filter-mapping>
<filter-name>maculaPluginsMonitoring</filter-name>
<servlet-name>appServlet</servlet-name>
</filter-mapping>
-->
<!--
<listener>
<listener-class>org.macula.plugins.monitor.SessionListener</listener-class>
</listener>
-->
在你的webapp的pom.xml中,取消对macula-plugins-monitor的依赖
<!--
<dependency>
<groupId>org.macula.plugins</groupId>
<artifactId>macula-plugins-monitor</artifactId>
</dependency>
-->
搜寻DefaultRequestToNameImpl和RequestToNameBridge,将这两个bean定义拿掉。
移动应用监控
TODO
浏览器监控
TODO