背景
因为公司api接口时不时的被人攻击,频繁的撞库,所以需要一套完整的监控体系来管理所有的接口。组内其他人正在快速迭代一个初期的监控报警体系,而我闲着没事就顺便看了下大众点评的cat,刚好以前的同事他们公司的目前使用的架构里面就用到了cat,大大加深了我想研究的心。cat能查到的文档太少了,可能是官网提供的文档足够使用了,但是对于小白用户来说,官网的文档还是需要一些实际代码的理解,不过等细入之后才发现cat是多么灵活,算是大众点评的良心之作啊。
搭建、文档
cat github地址:https://github.com/dianping/cat
相关文档:搭建文档
怎么搭建就不细说了,这里记录下大家cat-home 需要注意的地方
- data/appdatas/cat 目录是存放cat-home 配置文件的相对地址,如果是window就是相对于项目部属所在的磁盘
- data/applogs/cat 目录是存放cat-home 的log日志
cat有个很重要的概念,就是domain,一个domain可以对应成一个project,比如cat-home打包成war
也是一个domain, cat-home默认是服务端 也是客户端,也就是说cat-home自身也会被监控,这就是
为什么cat-home /META-INF/cat目录里面会有clinet.xml
- cat-home 也就是cat服务器端是支持集群的,如果有多个服务端那么在client.xml就得配置多个
服务端的信息
<config mode="client">
<servers>
<server ip="10.1.1.1" port="2280" http-port="8080"/>
<server ip="10.1.1.2" port="2280" http-port="8080"/>
<server ip="10.1.1.3" port="2280" http-port="8080"/>
</servers>
</config>
-cat服务端的server.xml,如果是集群remote-servers 就配置多个,如果用到了hdfs 就配置,需要注意的就是local-mode=”false” 如果配置成true 就不会使用数据库了
<config local-mode="false" hdfs-machine="false" job-machine="false" alert-machine="false">
<storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">
<hdfs id="logview" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="logview"/>
<hdfs id="dump" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="dump"/>
<hdfs id="remote" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="remote"/>
</storage>
<console default-domain="Cat" show-cat-domain="true">
<remote-servers>10.1.1.1:8080,10.1.1.2:8080,10.1.1.3:8080</remote-servers>
</console>
</config>
- 客户端路由修改下,集群和单个都需要修改成对于的ip
- 客户端集成其实文档已经说的很详细了,基本配置下就可以。
使用
如果客户端已经接入了,比如名字叫domain=mobileapi,首先要添加项目,然后项目组分配
告警的接口需要我们自己去实现
-我们可以对埋点进行监控,什么是埋点,其实就是这个
Cat.logMetricForCount(key)
我们可以对埋的点进行指标监控,比如这个方法在一定时间内被执行多少次就直接报警啊
- 报警级别和联系人设置 和报警接口
报警接口代码 我们可以重写
监控效果
略
client端接入代码
https://github.com/ggj2010/javabase/tree/master/mobiletechnology