ELK-使用logstash-output-zabbix插件实现日志通过zabbix告警
ELK-使用logstash-output-zabbix插件实现日志通过zabbix告警
实现的效果:elk收集上来的日志中含有报错时(例如error等),logstash过滤出来将这部分日志打到zabbix,再通过zabbix结合钉钉或者企业微信告警。

要在已有elk、zabbix等平台,且日志已经收集到elk的前提下再通过logstash-output-zabbix插件去实现日志zabbix告警。
logstash-output-zabbix插件安装
在部署有logstash的机器上,安装logstash-output-zabbix插件
查看已安装的插件
/usr/share/logstash/bin/logstash-plugin list

安装logstash-output-zabbix插件
/usr/share/logstash/bin/logstash-plugin install logstash-output-zabbix

编辑logstash配置文件
安装好插件后,就可以配置logstash了,配置文件的位置如下

我这里以收集交换机的日志为例
vim /etc/logstash/conf.d/switch_zabbix.conf
主要分为三个部分
input输入源,配置日志信息的来源
filter过滤器,将日志处理成想要的格式
output输出源,将日志发送到指定的位置
input { #输入源,指定日志数据的来源
redis {
host => "192.168.30.30" #指定redis的服务器
port => "6379"
db => "0" #制定对应的数据库
key => "192.168.10.10_log" #指定对应的键
data_type => "list" #列表形式
}
}
filter { #过滤器
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:message_timestamp} %{SYSLOGHOST:hostname} %{DATA:message_program}(?:\[%{POSINT:message_pid}\])?: %{GREEDYDATA:message_content}" }
} #通过grok对message字段的数据进行字段划分,将message字段划分为5个子字段。其中,message_content字段会在output中用到。
mutate {
add_field => ["[zabbix_key]","oslogs"] #自定义新增的字段,字段名是zabbix_key,值为oslogs,zabbix中会用到
add_field => ["[zabbix_host]","192.168.10.10"] #自定义新增的字段,主机名与zabbix web中“主机名称”需要保持一致
remove_field => ["@version","message"] #删除不需要的字段
convert => ["upstream_time", "float"] #将时间进行转换,方便后期使用
convert => ["request_time", "float"]
}
}
output { #输出源
stdout {}
if [message_content] =~ /(changed to up|changed to down)/ { #定义在message_content字段中,需要过滤的关键字信息,当message_content字段中出现给出的这些关键字,那么就将这些信息发送给zabbix。
zabbix {
zabbix_host =>"[zabbix_host]" #这个zabbix_host对应上面filter部分中给出的值
zabbix_key =>"[zabbix_key]" #这个zabbix_key对应上面filter部分中给出的值
zabbix_server_host =>"192.168.20.20" #zabbix服务的IP地址
zabbix_server_port =>"10051" #zabbix端口号
zabbix_value =>"message_content" #指定要传给zabbix监控项item(oslogs)的值, zabbix_value默认的值是"message"字段,因为上面我们已经删除了"message"字段,因此,这里需要重新指定,根据上面filter部分对"message"字段的内容划分,这里指定为"message_content"字段,其实,"message_content"字段输出的就是服务器上具体的日志内容。
}
}
}
添加完配置文件后,重启logstash
systemctl restart logstash
在zabbix上创建模板

创建监控项
这里的键值就是前面logstash配置文件中自定义的值

创建触发器

根据模板创建主机

查看最新数据,验证日志是否打到了zabbix
可以看到在logstash中定义的关键字信息相关的日志已经被发送到zabbix
if [message_content] =~ /(changed to up|changed to down)/ {
zabbix {
zabbix_host =>"[zabbix_host]"
zabbix_key =>"[zabbix_key]"
zabbix_server_host =>"192.168.20.20"
zabbix_server_port =>"10051"
zabbix_value =>"message_content"
}
}

后续工作,依据具体使用需求将zabbix告警发送到钉钉或企业微信即可。
参考文章:https://blog.csdn.net/wanger5354/article/details/122620615?fromshare=blogdetail&sharetype=blogdetail&sharerId=122620615&sharerefer=PC&sharesource=Wangjiachenga&sharefrom=from_link
更多推荐
所有评论(0)