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

ops/2024/10/20 10:57:39/

需求场景:

用户需要将zabbix产生的告警事件推送给rsyslog服务器,syslog服务器再对事件日志进行分析处理.
环境配置信息
服务器 IP地址
ZabbixServer 192.168.200.195
Rsyslog服务器 192.168.200.128
*Rsyslog服务器防火墙需要放通 UDP/514端口
推送脚本需要修改实际Rsyslog服务器IP地址

zabbix_10">zabbix配置:

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、新建动作![在这里插入图片描述](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 sysclass 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配置
修改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次探测异常

http://www.ppmy.cn/ops/126960.html

相关文章

[实时计算flink]Flink SQL作业快速入门

本文通过简单的示例,带您快速体验Flink SQL作业的创建、部署和启动等操作,以了解Flink SQL作业的操作流程。 前提条件 如果您使用RAM用户或RAM角色等身份访问,需要确认已具有Flink控制台相关权限,详情请参见权限管理。 已创建Fl…

【C++】使用vscode进行 C/C++ 开发,内含c_cpp_properties.json、launch.json 和 tasks.json解释

在 Visual Studio Code (VSCode) 中进行 C/C 开发时,这三个 .json 文件(c_cpp_properties.json、launch.json 和 tasks.json)分别用于配置编译、调试和代码提示等功能。它们是 VSCode 配置环境的一部分,由 C/C 扩展生成&#xff0…

在Debian and Ubuntu上安装pgRouting

1、查看系统类型 lsb_release -cs2、追加资源库列表 sudo sh -c echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list3、导入资源库的KEY,更新库列表 sudo apt install wget c…

「4.4」祖孙询问

「4.4」祖孙询问 题目描述 已知一棵 n 个节点的有根树。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。 输入格式 输入第一行包括一个整数 n 表示节点个数; 接下来 n 行每行一对整数对 a 和 b 表示 a 和 b 之…

TCP 全连接队列与 tcpdump 抓包

TCP 相关实验 理解 listen 的第二个参数 基于刚才封装的 TcpSocket 实现以下测试代码对于服务器, listen 的第二个参数设置为 1, 并且不调用 accept test_server.cc C #include "tcp_socket.hpp" int main(int argc, char* argv[]) {if (argc ! 3) {printf("…

在线绘图工具drawio,visio的平替

Draw.io:灵活高效的在线绘图工具推荐 在工作和项目管理中,流程图、架构图和思维导图等可视化图表是非常重要的沟通工具。Draw.io(现更名为diagrams.net)是一个强大且免费的在线绘图工具,适用于创建各种类型的图表。它功…

Debug-029-el-table实现自动滚动分批请求数据

前情提要 最近做了一个小优化,还是关于展示大屏方面的。大屏中使用el-table展示列表数据,最初的方案是将数据全部返回,确实随着数据变多有性能问题,有时请求时间比较长。这里做的优化就是实现列表的滚动到距离底部一定高度时再次请…

如何使用Websocket订阅实时股票价格

WebSocket和HTTP请求在工作原理和使用场景上存在显著区别。首先,HTTP是一种无状态的协议,客户端发起请求,服务器响应后,连接通常会关闭。如果客户端需要再次获取数据,必须发起新的请求。这种"请求-响应"模型…