Zabbix进阶实战!将告警推送到Syslog服务器详细教程

需求场景:

用户需要将zabbix产生的告警事件推送给rsyslog服务器,syslog服务器再对事件日志进行分析处理.

环境配置信息

服务器 IP地址

ZabbixServer 192.168.200.195

Rsyslog服务器 192.168.200.128

*Rsyslog服务器防火墙需要放通 UDP/514端口

推送脚本需要修改实际Rsyslog服务器IP地址

zabbix配置:

1、新建脚本

c 复制代码
/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、新建动作![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/501d07f3d58148b8ac177af38f7bb13e.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ee7d25401b3d4b83a8d1c2fd8edda341.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0788dddc5e89437a9df6c8bacebb80c2.png)
3、上传脚本到 /itops/zabbix/share/zabbix/alertscripts 目录下
以下是推送syslog脚本kk.py

```cpp
#!/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()

给脚本赋权

c 复制代码
chmod 755 /itops/zabbix/share/zabbix/alertscripts/kk.py
chown itops:  /itops/zabbix/share/zabbix/alertscripts/kk.py

Rsyslog配置

修改rsyslog服务主配置文件

c 复制代码
vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
*.* ?RemoteLogsFile

主配置文件有引用子配置文件目录,不影响主配置文件,在子配置文件添加

创建 rsyslog配置子目录

c 复制代码
mkdir /etc/rsyslog.d/
vi /etc/rsyslog.d/remote.conf
$template RemoteLogsFile,"/var/log/remotelogs/%fromhost-ip%/%fromhost-ip%.log"

重启rsyslog服务

c 复制代码
systemctl stop rsyslog.service
systemctl start rsyslog.service

查看514端口是否启用

c 复制代码
ss -nul

防火墙放通UDP/514端口

c 复制代码
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload 

验证:

1、rsyslog服务器监听 UDP/514端口流量

c 复制代码
tcpdump -i ens33 -A 'udp port 514'    #ens33为网卡名称,以实际为准

2、zabbix手动关闭告警,触发产生新告警

3、rsyslog服务器记录产生的告警日志

syslog日志格式

c 复制代码
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次探测异常
相关推荐
星恒随风3 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
坤坤子吖8 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
青瓦梦滋8 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
沫璃染墨9 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp
Felven10 小时前
华为鲲鹏920s芯片serdestool工具使用说明
linux·运维·服务器·华为·鲲鹏920·serdestool
LabVIEW开发10 小时前
Omron PLC:接 LabVIEW 常踩的 5 个坑
服务器·网络·labview·labview知识·labview功能·labview程序
我是koten16 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
爱吃奥利奥_wen1 天前
SQL Server 基础语法详解:从建库建表到约束与增删改查
服务器·数据库·oracle
Android系统攻城狮1 天前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
雪落漂泊1 天前
Linux进程(五):进程地址空间篇
linux·运维·服务器