在上一篇博文中,已经演示了怎样部署一套基础的监控服务端,下面要开始安装agent收集指标信息以及配置告警,实现监控
基础环境信息:1
2server端: 192.168.36.183
agent: 192.168.36.17
编译安装agent
编译agent
客户端agent,我们只需要编译一次即可,以后所有的agent都可以直接使用这个包了。
在server端机器进行客户端编译:1
2
3
4cd /opt/go/src/github.com/open-falcon/falcon-plus/modules/agent #这个目录之前在编译server的时候使用过
go get ./... #需要主机可以连接外网,通过go get下载相关源码包。
./control build
./control pack #编译pack 出的包,在其他agent主机上部署时,无需连接外网 ,pack出的包,可以类似的理解为由c源代码编译后得出的二进制文件。
观察一下我们需要的压缩包falcon-agent-5.1.2.tar.gz
部署agent
将包发送到客户机器上,解压1
2
3mkdir -p /usr/local/open-falcon/agent
cd /usr/local/open-falcon/agent
tar -xf falcon-agent-5.1.2.tar.gz -C ./
修改相关的配置1
2
3
4
5
6
7
8
9
10
11cp cfg.example.json cfg.json
ip --> agent会自动探测本机ip
hostname --> 默认通过`hostname`获取,如果你自定义了就会覆盖,这个在dashboard显示的就是endpoint
heartbeat[addr] --> 192.168.36.183
ignore --> 选择你要忽略的监控项
# 这里基本选择默认就行,按需修改,这里注意一下1988端口,这个是会暴露agent机器的所有指标信息,建议改成localhost
"http": {
"enabled": true,
"listen": "127.0.0.1:1988",
"backdoor": false
},
开启falcon-agent./falcon-agent start
检查falcon-agent是否正常./falcon-agent -check
通过访问http://192.168.36.17:1988/ 可以看到agent本机的所有详细信息,一般这个不建议监听可访问地址,上边讲过。
接着登录dashbord就可以看见新加的agentd了
相关的监控信息也会出来,按需查看即可
配置告警:
编译安装mail-provider
这里务必注意了,告警需要alarm插件的调用,而alarm需要redis,所以必须启动redis,否则报警不成功
如果之前启动server的时候没有启动redis,那么启动redis之后要记得重启一下server,否则一大堆问题。
open-falcon实现邮件报警
$GOPATH –> /opt/go
在服务端机器执行以下的步骤,告警是放在server端的
以下操作在server端执行
编译mail-provider
1 | cd $GOPATH/src |
安装mail-provider
1 | mkdir /opt/open-falcon/mail-provider |
测试邮件发送:
1 | curl http://127.0.0.1:4000/sender/mail -d "tos=1653581786@qq.com&subject=报警测试&content=这是一封测试邮件" |
发送邮件测试一下 –> 返回success成功
需要实现告警还需要一个sender组件:
上边的邮件发送插件可以用你们自己开发的接口或者三方工具都行,sender使用post方式触发
编译安装sender
编译sender:
1 | https://github.com/open-falcon-archive/sender |
安装sender
1 | mkdir /opt/open-falcon/sender |
修改一下配置文件:1
2vim cfg.json
就是将mail那里修改成http://127.0.0.1:4000/sender/mail
启动sender1
./control start
到这里基础的环境就准备的差不多了,接下来去添加一下监控和告警条件
配置监控和告警
需要注意,open-falcon接受告警不是单个用户的,需要定义一个告警接收组,这里区别于zabbix
用户/组管理

创建告警组

创建HostGroup
hostgroup 的作用很简单,就是我需要跑的程序都是在某些机器上,那我直接把这些机器都加入到同一个hostgroup即可,不用每台机器都添加一个模板了

创建策略模板
这里all(#1)==0 为告警触发条件,意思是最后一次返回的值等于0就告警
具体的参考:http://book.open-falcon.org/zh_0_2/distributed_install/judge.html

绑定策略模板到HostGroup

这样简单的监控就算是可以实现了
保证server端redis正常的话,关闭一下agentd的6379端口,监听一下日志1
tailf var/app.log #可以查看下日志可以看到提示邮件已经发出去了

报警间隔自己修改了,默认5min1
2vim /usr/local/open-falcon/judge/config/cfg.json #配置文件中配置了连续两个报警之间至少相隔的秒数
"minInterval": 300,
告警信息
此时在alarm-dashbord也应该出现告警信息。
配置nodata
https://github.com/open-falcon-archive/nodata
这个东西就是监控项在没有数据返回的时候,返回一个自定义的值,比如agentd挂了,就没办法上报数据了,这时候nodata就发挥作用了,我自定义一个-1,告诉运维,有agentd挂了。
新建nodata

到dashboard上查看相应的counter

查看一下对应的出图

可以观察到,这个新建的counter由nodata创建是成功的,但是返回的值确实一直是异常的返回,也就是我们自定义的-1
监控原生的那个agent.alive,他是没有标签的,所以nodata那里配置不应该打上tag.当我们按照官方教程上那么设置tag之后,nodata就会去监控agent.alive/module=nodata,pdl=falcon这一项,这一Counter本来就没有数据,是nodata自己创建的。所以nodata每次都去获取agent.alive/module=nodata,pdl=falcon这项数据,发现为空,返回-1,所以这一项肯定是永远为-1的。
修改nodata
接下来到nodata上去掉一开始打的tags
nodata实现告警
跟上边告警一样,我新建一个告警模板
然后将模板绑定到hostgroup上
测试nodata告警
我关闭36.17上的agent进程./control stop
dashboard上agent.avlie counter
观察一下出图
注意这里是agent.avlie而不再是agent.alive/module=nodata,pdl=falcon了,这个带tags的counter已经不会采集数据,你可以在界面删除它
可以看到,agent的值从1到-1,异常,将会触发告警,我这里会有邮件触发。
告警alarm-dashbord

到这里实现了简单的告警,以及策略的编写和配置了nodata,sender。下一篇将会是简单应用监控。