监控思路:zabbix通过http代理方式,zabbix通过http方式定期去调用ELK查询。zabbix即获得ELK查询结果。然后zabbix为ELK查询结果中的某个字段值设置监控并配置触发器,触发zabbix告警
具体例子:
ELK日志原文
<37>Aug 16 11:38:41 JQ_Juniper_SRX4100_active sshd: *SSHD_LOGIN_FAILED*: Login failed for user 'xxx' from host '127.0.0.1'
1.ELK中配置查询语句
查询语句调试位置: kibana--->开发工具
GET /syslog-*/_search?
{
"query": {
"bool": {
"must": [],
"filter": [
{
"match_all": {}
},
{
"range": {
"@timestamp": {
"format": "strict_date_optional_time",
"gte": "now-5m",
"lte": "now"
}
}
},
{
"match": {
"event_name": "SSHD_LOGIN_FAILED"
}
}
],
"should": [],
"must_not": []
}
},
"size": 1
}
5分钟没有登录失败时,可以看到value值为0
15天有登录失败日志时,可以看到value值大于0(我的ELK日志里是有3条登录失败日志)
所以zabbix可以通过对value值的监控来判断ELK中是否存在登录失败记录。当发现有失败登录记录时,zabbix触发告警通知用户。
下面就来配置zabbix
2.zabbix配置
在zabbix选择一台主机(主机网络和ELK网络能互通即可) 配置---->主机----->选择网络能与ELK互通的主机---->选择监控项---->创建监控项
点击zabbix的 检测----->最新数据--->找到对应主机和刚配置的监控项
可以看到zabbix这边已经能拿到ELK的数据了。点开历史记录查看详细信息,可以看到数据格式是json的。但zabbix没法对整段json数据进行判断是否要触发告警。所以我们真正想要的数据值是这个value的值。然后针对这个value值设置配置告警。
获取value值配置:
回到主机配置那
配置好后选择更新,然后去查看zabbix最新数据(一般要等一会)
我们看到已经能拿到value值了,然后针对value值配置触发器和告警即可。vaule值大于0就触发告警。(都是会配置触发器和告警的大佬,这里就不展示配置了)
最后实现告警如下: