open-falcon之告警篇

在上一篇博文中,已经演示了怎样部署一套基础的监控服务端,下面要开始安装agent收集指标信息以及配置告警,实现监控
基础环境信息:

1
2
server端: 192.168.36.183
agent: 192.168.36.17

编译安装agent

编译agent

客户端agent,我们只需要编译一次即可,以后所有的agent都可以直接使用这个包了。
在server端机器进行客户端编译:

1
2
3
4
cd /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
falcon-agent

部署agent

将包发送到客户机器上,解压

1
2
3
mkdir -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
11
cp 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本机的所有详细信息,一般这个不建议监听可访问地址,上边讲过。
agent info

接着登录dashbord就可以看见新加的agentd了
相关的监控信息也会出来,按需查看即可

配置告警:

编译安装mail-provider

这里务必注意了,告警需要alarm插件的调用,而alarm需要redis,所以必须启动redis,否则报警不成功
如果之前启动server的时候没有启动redis,那么启动redis之后要记得重启一下server,否则一大堆问题。

open-falcon实现邮件报警

$GOPATH –> /opt/go

在服务端机器执行以下的步骤,告警是放在server端的
以下操作在server端执行

编译mail-provider
1
2
3
4
5
6
7
8
9
cd $GOPATH/src
cd github.com/open-falcon/
# 下载mail-provider源码
git clone https://github.com/open-falcon/mail-provider.git
cd mail-provider/
# 安装go依赖
go get ./...
./control build
./control pack
安装mail-provider
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mkdir /opt/open-falcon/mail-provider
tar zxf falcon-mail-provider-0.0.1.tar.gz -C /opt/open-falcon/mail-provider/
cd /opt/open-falcon/mail-provider/
vim cfg.json #修改一下配置文件,邮件相关的信息
{
"debug": true,
"http": {
"listen": "0.0.0.0:4000",
"token": ""
},
"smtp": {
"addr": "smtp.163.com:25",
"username": "yourname@163.com",
"password": "password@123",
"from": "yourname163.com"
}
}

# 开启mail-provider
./control start
测试邮件发送:
1
curl http://127.0.0.1:4000/sender/mail -d "tos=1653581786@qq.com&subject=报警测试&content=这是一封测试邮件"

发送邮件测试一下 –> 返回success成功

需要实现告警还需要一个sender组件:
上边的邮件发送插件可以用你们自己开发的接口或者三方工具都行,sender使用post方式触发

编译安装sender

编译sender:

1
2
3
4
5
6
7
8
https://github.com/open-falcon-archive/sender
cd $GOPATH/src
cd github.com/open-falcon/
git clone https://github.com/open-falcon/sender.git
cd sender/
go get ./...
./control build
./control pack

安装sender

1
2
3
mkdir /opt/open-falcon/sender
tar zxf falcon-sender-0.0.0.tar.gz -C /opt/open-falcon/sender/
cd /opt/open-falcon/sender/

修改一下配置文件:

1
2
vim cfg.json 
就是将mail那里修改成http://127.0.0.1:4000/sender/mail

启动sender

1
./control start

到这里基础的环境就准备的差不多了,接下来去添加一下监控和告警条件

配置监控和告警

需要注意,open-falcon接受告警不是单个用户的,需要定义一个告警接收组,这里区别于zabbix

用户/组管理

user manage

创建告警组

new group

创建HostGroup

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

创建策略模板

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

绑定策略模板到HostGroup

bind

这样简单的监控就算是可以实现了

保证server端redis正常的话,关闭一下agentd的6379端口,监听一下日志

1
tailf var/app.log  #可以查看下日志可以看到提示邮件已经发出去了

alarmlog

报警间隔自己修改了,默认5min

1
2
vim /usr/local/open-falcon/judge/config/cfg.json   #配置文件中配置了连续两个报警之间至少相隔的秒数
"minInterval": 300,

告警信息

此时在alarm-dashbord也应该出现告警信息。
alarm-dashbord

配置nodata

https://github.com/open-falcon-archive/nodata
这个东西就是监控项在没有数据返回的时候,返回一个自定义的值,比如agentd挂了,就没办法上报数据了,这时候nodata就发挥作用了,我自定义一个-1,告诉运维,有agentd挂了。

新建nodata

new nodata

到dashboard上查看相应的counter

nodata1

查看一下对应的出图

nodata2
  可以观察到,这个新建的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
nodata3

nodata实现告警

跟上边告警一样,我新建一个告警模板
nodtemplete
然后将模板绑定到hostgroup上
nodatabind

测试nodata告警

我关闭36.17上的agent进程
./control stop

dashboard上agent.avlie counter

观察一下出图
nodata4
注意这里是agent.avlie而不再是agent.alive/module=nodata,pdl=falcon了,这个带tags的counter已经不会采集数据,你可以在界面删除它
可以看到,agent的值从1到-1,异常,将会触发告警,我这里会有邮件触发。

告警alarm-dashbord

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