Syslog作为一种工业标准的协议,被广泛应用于日志记录和管理。将Zabbix告警推送给Syslog服务器可以实现告警信息的集中管理、提高运维效率、促进跨平台协同处理、增强系统安全性以及便于历史数据追溯等多重优势。这种整合方式有助于运维团队更好地应对复杂多变的IT环境挑战,确保系统的稳定性和安全性。
用户需要将zabbix产生的告警事件推送给rsyslog服务器,syslog服务器再对事件日志进行分析处理.
服务器 | IP地址 |
ZabbixServer | 192.168.200.195 |
Rsyslog服务器 | 192.168.200.128 |
*Rsyslog服务器防火墙需要放通 UDP/514端口
推送脚本需要修改实际Rsyslog服务器IP地址
1、新建脚本
/usr/bin/python3 /itops/zabbix/share/zabbix/alertscripts/kk.py '{EVENT.DATE} {EVENT.TIME}' {HOST.ID} {HOST.HOST} {EVENT.NSEVERITY} '{EVENT.NAME}'
zabbix内置支持的宏可以查阅zabbix官方手册
https://www.zabbix.com/documentation/6.0/zh/manual/appendix/macros/supported_by_location?hl=%E5%91%8A%E8%AD%A6
2、新建动作
3、上传脚本到 /itops/zabbix/share/zabbix/alertscripts 目录下
以下是推送syslog脚本kk.py
#!/usr/bin/python3 #_*_ coding:utf-8 _*_ #模拟发送syslog日志 ################### # make: 青灯 # version: v1.0 # date: 2024-5-28 ################### import socket from datetime import datetime import time import sys class Message: def __init__(self): self.syslog_server_ip = '192.168.200.128' # syslog服务器的IP地址 self.port = 514 # syslog的默认UDP端口 self.datetime=sys.argv[1].replace('.','-') self.hostId=sys.argv[2] self.hostname=sys.argv[3] self.priority=int(sys.argv[4]) self.message=sys.argv[5] def __call__(self): if self.priority == 1: priority_text = "信息" elif self.priority == 2: priority_text = "警告" elif self.priority == 3: priority_text = "次要" elif self.priority == 4: priority_text = "严重" elif self.priority == 5: priority_text = "紧急" else: priority_text = "未知" alertMessage="{0},{1},{2},{3} {4}".format(self.datetime,self.hostId,priority_text,self.hostname,self.message) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(alertMessage.encode('utf-8'), (self.syslog_server_ip,self.port)) sock.close() if __name__ == "__main__": main = Message() main()
给脚本赋权
chmod 755 /itops/zabbix/share/zabbix/alertscripts/kk.py chown itops: /itops/zabbix/share/zabbix/alertscripts/kk.py
修改rsyslog服务主配置文件
vim /etc/rsyslog.conf $ModLoad imudp $UDPServerRun 514 *.* ?RemoteLogsFile
主配置文件有引用子配置文件目录,不影响主配置文件,在子配置文件添加
创建 rsyslog配置子目录
mkdir /etc/rsyslog.d/ vi /etc/rsyslog.d/remote.conf $template RemoteLogsFile,"/var/log/remotelogs/%fromhost-ip%/%fromhost-ip%.log"
重启rsyslog服务
systemctl stop rsyslog.service systemctl start rsyslog.service
查看514端口是否启用
ss -nul
防火墙放通UDP/514端口
firewall-cmd --permanent --add-port=514/udp firewall-cmd --reload
验证:
1、rsyslog服务器监听 UDP/514端口流量
tcpdump -i ens33 -A 'udp port 514' #ens33为网卡名称,以实际为准
2、zabbix手动关闭告警,触发产生新告警
3、rsyslog服务器记录产生的告警日志
syslog日志格式
May 27 16:16:37 2024-05-27 17: 51:49,10756,严重,TCP_192.168.200.1_57673 [TCP]192.168.200.1_57673_wpscloudsvr 端口持续3次探测异常
错误信息