上一篇已经写了falcon的基础安装配置以及简单的使用说明,现在来记录下一些业务相关的监控如何做,截图居多。心疼流量三秒…其实实现方法都不难,设计一个良好的命名规范以及科学的分组,实际上对监控来说是十分必要的。还有就是要对监控指标的判断做个性化设置,最好就是看图的话一眼就概览全局(要让图清晰直观的反应状况),报警的话做到真实有效人性化。这篇里面只涉及如何对常见服务进行配置。
- 对于基础监控:cpu、内存、IO、网络适合折线图;而磁盘使用量这些其实设置多维度报警即可(如磁盘使用率>80%且小于20G报警)
- 对于服务和端口:监控出数字显示服务总数量,服务正常数量、服务异常数量,然后配置报警即可
- 对于业务监控:对业务指标使用折线图一般都是适用的
监控自定义服务进程或端口
**Tips:**一般而言,对于某一服务仅监听服务或端口取其一即可,因为一般而言进程挂了端口自然也就down了,这两者是有直接关联的。但也分业务,具体看需求吧
监控端口
**Tips:**端口监控,falcon现在的机制是配置完策略agent才会去采集这些信息。可参考官网说明
- 设置端口监控模板
- 模板关联至主机组
- 然后就可以收到报警信息了(这里为测试方便监控了Mysql的3306端口,有值就报警)
监控服务
**Tips:**官方给出两种方案,一种取/proc/$pid/status这里面的name字段,另一种取/proc/$pid/cmdline里的name字段,这里拿mysql举例,个人推荐cmdline,因为name字段很容易重复
- 获取两个字段
1 2
ps axu | grep mysql #root 5465 0.0 0.0 113176 1600 ? S May18 0:00 /bin/sh /usr/libexec/mysql55/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
#mysql 5658 0.0 1.2 1336076 101032 ? Sl May18 27:08 /usr/libexec/mysql55/mysqld –basedir=/usr –datadir=/var/lib/mysql –plugin-dir=/usr/lib64/mysql/plugin –user=mysql –log-error=/var/log/mysqld.log –pid-file=/var/run/mysqld/mysqld.pid –socket=/var/lib/mysql/mysql.sock #tai_ops 28522 0.0 0.0 110408 868 pts/0 S+ 03:04 0:00 grep mysql cat /proc/5465/status | grep -i name #Name: mysqld_safe cat /proc/5465/cmdline #/bin/sh/usr/libexec/mysql55/mysqld_safe–datadir=/var/lib/mysql–socket=/var/lib/mysql/mysql.sock–pid-file=/var/run/mysqld/mysqld.pid–basedir=/usr–user=mysql cat /proc/5658/status | grep -i name #Name: mysqld cat /proc/5658/cmdline #/usr/libexec/mysql55/mysqld–basedir=/usr–datadir=/var/lib/mysql–plugin-dir=/usr/lib64/mysql/plugin–user=mysql–log-error=/var/log/mysqld.log–pid-file=/var/run/mysqld/m
|
|
- web配置如下
- 出图如下
Mysql监控
由于小米官方给出的方案是需要go环境进行的编译的,所以就直接在falcon的server机器上进行编译,然后拿编译的包对mysql机器进行分发部署
- 下载并编译监控mysql的脚本源码
这里监控连接数据库的用户必须是root不然会access deney
1 2 3 4 5 6 7 8 9 10
cd $GOPATH/src/github.com/open-falcon git clone https://github.com/open-falcon/mymon.git cd mymon go get ./... go build -o mymon #crontab设置 crontab -e 或直接写配置 #* * * * * cd $GOPATH/src/github.com/open-falcon/mymon && ./mymon -c etc/mon.cfg #echo '* * * * * cd $GOPATH/src/github.com/open-falcon/mymon && ./mymon -c etc/mon.cfg' > /etc/cron.d/mymon tar czvf mysql_monitor.tar.gz mymon etc/ #然后去部署这个tar包即可
- 调试正常后log输出
具体监控项、tag等信息都可以通过日志获得,安装文档中有队metric的汇总表
… {“level”:“debug”,“msg”:“MetaData Metric:Innodb_mutex_spin_waits Endpoint:ip-10-222-0-63 Value:302 CounterType:COUNTER Tags:port=3306 Timestamp:1499389081 Step:60”,“time”:“2017-07-07T00:58:01Z”} {“level”:“debug”,“msg”:“MetaData Metric:Innodb_mutex_spin_rounds Endpoint:ip-10-222-0-63 Value:1780 CounterType:COUNTER Tags:port=3306 Timestamp:1499389081 Step:60”,“time”:“2017-07-07T00:58:01Z”} {“level”:“debug”,“msg”:“MetaData Metric:Innodb_mutex_os_waits Endpoint:ip-10-222-0-63 Value:42 CounterType:COUNTER Tags:port=3306 Timestamp:1499389081 Step:60”,“time”:“2017-07-07T00:58:01Z”} {“level”:“debug”,“msg”:“MetaData Metric:Is_slave Endpoint:ip-10-222-0-63 Value:0 CounterType:GAUGE Tags:port=3306 Timestamp:1499389081 Step:60”,“time”:“2017-07-07T00:58:01Z”} {“level”:“info”,“msg”:“Send response 127.0.0.1:3306: success”,“time”:“2017-07-07T00:58:01Z”} {“level”:“debug”,“msg”:“Send to http://10.222.0.44:1988/v1/push, size: 1”,“time”:“2017-07-07T00:58:01Z”} {“level”:“debug”,“msg”:“MetaData Metric:mysql_alive_local Endpoint:ip-10-222-0-63 Value:1 CounterType:GAUGE Tags:port=3306 Timestamp:1499389081 Step:60”,“time”:“2017-07-07T00:58:01Z”} {“level”:“info”,“msg”:“Alive data response 127.0.0.1:3306: success”,“time”:“2017-07-07T00:58:01Z”}
- Web配置举例
- 出图如下
nginx监控
这个目前没什么需求,就直接先参考小米给出的方案吧,其实都大同小异,有需求的话之后可能会自己写一些业务方面的监控脚本。到时候再共享
关于排错
- 绘图数据流向及验证
agent->transfer->graph->query->dashboard **可以从 graph 的http接口进行验证