🙊
关于作者
  • 个人简历
  • 联系作者
  • 运维日常记录
    • RAID 磁盘阵列
    • MBR 与 GPT 分区
    • Linux 命令行判断GPT和MBR分区
    • CentoS 7 系统 扩容根分区
  • Linux运维学习笔记
    • 计算机网络基础知识
    • Linux 系统启动过程
    • Linux 命令基本格式
    • Linux 文件删除原理
    • Linux 目录结构说明
    • Linux 查看命令帮助信息
    • Linux Yum 命令
    • Linux Apt 命令
  • Linux 运维管理
    • Linux 硬件管理
    • Linux 软件管理
    • Linux 磁盘管理
    • Linux 系统管理
    • Linux 网络管理
    • Linux 用户和组管理
    • Linux 文件与目录管理
    • Linux 文件压缩与解压缩管理
    • Linux SSL证书自动更新管理
  • 运维环境搭建
    • CentOS 7 安装与优化
    • CentOS 安装高版本Node.js
    • CentOS 升级安装Python2.7.X
    • CentOS 安装 Python3.8.X
    • CentOS 安装 PHP7.4.X
    • CentOS 安装 Mysql 8.0
    • CentOS 安装 Zabbix 5.0
    • Windows Server 部署 IIS
    • Cronsun 任务管理器部署
    • Teltport 堡垒机部署
    • Jump Server 堡垒机搭建及使用
    • CI & CD 持续集成部署
    • ELK6.5.0+Filebeat 日志系统部署
    • Lustre 分布式并行文件系统部署
  • 系统安全加固
    • Linux 操作系统加固
    • Windows 操作系统安全加固
    • Password 安全加固
    • OpenSSL 安全加固
    • NFS 服务安全加固
    • Rsync 服务安全加固
    • IIS 服务安全加固
    • PHP 语言环境安全加固
    • Apache 服务安全加固
    • Nginx 服务安全加固
    • Tomcat 服务安全加固
    • MySQL 服务安全加固
    • PostgreSQL 服务安全加固
    • Redis 服务安全加固
    • MongoDB 服务安全加固
    • 暴力破解攻击和防御
  • 云原生运维教程
    • Docker 理论
    • Docker 基本架构
    • Docker 基本概念
    • Docker 基本使用
      • 容器
      • 镜像
      • 仓库
    • Docker 存储
    • Docker 网络
    • Docker 安装
  • Linux 系统故障排查
    • Linux 系统重置密码方法
    • Linux 系统误操作修改目录权限为 777 修复方法
  • Windows 系统故障排查
    • Windows 和 Windows Server 中启用/禁用 SMBv1、SMBv2 和 SMBv3
    • Windows10建立映射网络驱动器报错,无法挂载共享文件系统,解决办法
  • 运维工具使用
    • 常用 Git 命令简介及使用
    • 常用 SVN 命令简介及使用
    • 常用 Vi / Vim 文本编辑工具简介及使用
    • 国内常用加速源使用及配置
    • 软碟通制作U启动和再生龙恢复Linux系统及备份
    • 常用JetBrains系列IDE快捷键
  • 中间件教程学习
    • Nginx 极简教程
    • Nginx 安装
    • Nginx 配置
    • Nginx 问题集
    • Mysql 教程
    • Mysql 运维
    • Mysql 原理
    • Redis 教程
    • Redis 持久化
    • Redis 复制
    • Redis 哨兵
    • Redis 集群
    • Redis 运维
    • PostgreSQL 教程
    • H2 教程
    • SqLite 教程
    • 数据库中间件 flyway
  • Nginx 入门教程
  • MySQL 入门教程
  • Nosql 数据库
  • 常用工具快捷键
    • Windows10常用快捷键大全
  • Group 1
由 GitBook 提供支持
在本页
  • 前言
  • 一、安装要求
  • 内存和磁盘
  • CPU
  • 其他硬件
  • 具体配置参考官方文档
  • 关闭NFtables和SElinux
  • 安装系统常用软件包
  • 二、安装 Zabbix 服务端
  • Zabbix 官方源
  • 替换为阿里云Zabbix源
  • 安装 Zabbix 服务端
  • 安装Apache和MariaDB并启动
  • 数据库根用户添加密码及安全设置
  • 三、启动Zabbix Server进程
  • 在zabbix_server.conf中编辑配置
  • 编辑Zabbix前端的PHP配置
  • 启动 Zabbix 服务器和代理进程,并设置开机自启动
  • Zabbix前端可以在浏览器中通过 http://localhost/zabbix 进行访问。
  • 配置 Zabbix 前端
  • 解决Zabbix 图形中文乱码
  • 四、安装 Zabbix 客户端
  • 关闭NFtables和SElinux
  • 安装系统常用软件包
  • Zabbix 官方源
  • 替换为阿里云Zabbix源
  • 安装 Zabbix 客户端
  • 配置zabbix_agent.conf客户端
  • 启动 Zabbix 代理进程,并设置开机自启动
  • 五、Zabbix5.0 监控 Nginx
  • 安装 Nginx
  • 查看当前Nginx是否已安装内置运行状态模块
  • 开启运行状态模块,编辑Nginx配置文件
  • 编写监控脚本
  • 创建自定义监控项
  • 六、Zabbix Server Web界面添加被监控主机
  • 配置——主机群组——创建主机群组——输入组名
  • 配置——主机——创建主机
  • 配置——模板——创建模板
  • 主机——监控项——创建监控项
  • 主机——触发器——创建触发器
  • 主机——图形——创建图形
  • 七、在Zabbix Server 中添加告警媒介
  • 添加企业微信机器人告警脚本
  • 管理——报警媒介类型——创建媒介类型
  • 管理——报警媒介类型——Message templates
  • 用户设置——报警媒介——添加媒介类型
  • 配置——动作——创建动作——添加触发器
  • 八、测试故障,查看报表是否已经推送成功
  • 报表——动作日志

这有帮助吗?

  1. 运维环境搭建

CentOS 安装 Zabbix 5.0

上一页CentOS 安装 Mysql 8.0下一页Windows Server 部署 IIS

最后更新于3年前

这有帮助吗?

博客作者:联系请,搬运不易,希望请作者喝咖啡,可以点击联系

前言

说明:本文介绍CentOS 8.3 搭建 Zabbix5.0 监控平台安装及相关要求

一、安装要求

内存和磁盘

Zabbix同时需要物理内存和磁盘空间。刚开始使用Zabbix,建议128MB物理内存和256MB可用磁盘空间。然而, 具体需要的内存大小和磁盘空间要根据主机数量和监控参数而定。如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库中预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。分配给连接的内存数量,取决于数据库引擎的配置。

CPU

根据监控参数及选择的数据库引擎,Zabbix,特别是Zabbix数据库,可能需要大量的CPU资源,

其他硬件

如果需要启用短信(SMS)通知功能,需要串行通讯口(serial communication port)和串行GSM调制解调器(serial GSM modem)。USB转串行转接器也同样可以工作。

关闭NFtables和SElinux

systemctl disable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

安装系统常用软件包

dnf install -y sysstat traceroute  net-tools telnet  tree  \
net-snmp-utils  vim lrzsz tcpdump wget git zip tar

二、安装 Zabbix 服务端

Zabbix 官方源

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm

替换为阿里云Zabbix源

sed -i '3c baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/$basearch/' /etc/yum.repos.d/zabbix.repo

安装 Zabbix 服务端

dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent vim

安装Apache和MariaDB并启动

dnf install -y @httpd @mariadb
systemctl enable --now httpd mariadb

数据库根用户添加密码及安全设置

mysql_secure_installation

步骤如下:

  • 要求你配置VALIDATE PASSWORD component(验证密码组件): 输入y ,回车进入该配置

  • 选择密码验证策略等级, 我这里选择0 (low),回车

  • 输入新密码两次

  • 确认是否继续使用提供的密码?输入y ,回车

  • 移除匿名用户? 输入y ,回车

  • 不允许root远程登陆? 不需要输入y,需要远程登陆输入n ,回车

  • 移除test数据库? 输入y ,回车

  • 重新载入权限表? 输入y ,回车

查询下root是否可以远程登陆,没有就配置一下

mysql -uroot -p

use mysql;
select host,user from user;

配置远程登陆

mysql -uroot -p

use mysql;
update user set host='%' where user='root';
flush privileges;
exit

关闭MySQL主机查询dns

MySQL会反向解析远程连接地址的dns记录,如果MySQL主机无法连接外网,则dns可能无法解析成功,导致第一次连接MySQL速度很慢,所以在配置中可以关闭该功能。

给/etc/my.cnf文件,添加配置

echo "[mysqld] 
skip-name-resolve" >> /etc/my.cnf

重启服务

systemctl restart mysqld

创建zabbix数据库,在数据库主机上运行以下内容。

mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
show databases;
create user zabbix@localhost identified by 'password';
flush privileges;
grant all privileges on zabbix.* to zabbix@localhost;
quit;

在 Zabbix 服务端主机上导入初始架构和数据。

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

三、启动Zabbix Server进程

zabbix_server.conf 配置说明

  • ListenPort 监听端口,默认10051

  • SourceIP 源ip,默认为空,可以写机器ip地址

    SourceIP=机器ip

  • LogType 日志类型,system\file\console,默认file

  • LogFile 日志路径,默认/var/log/zabbix/zabbix_server.log

    LogFile=/var/log/zabbix/zabbix_server.log

  • LogFileSize 日志大小,0-1024MB,0禁用自动日志轮换

    LogFileSize=0

  • DebugLevel 调试级别,0~5,默认为3显示waring信息

  • PidFile pid文件,默认/var/run/zabbix/zabbix_server.pid

    PidFile=/var/run/zabbix/zabbix_server.pid

  • SockerDir socker文件夹,默认/var/run/zabbix

    SocketDir=/var/run/zabbix

  • DBHOst 数据库地址,默认127.0.0.1

  • DBName 数据库名称,默认 zabbix

    DBName=zabbix

  • DBSchema 数据库dschema,默认 空

  • DBUser 数据库用户,默认zabbix

    DBUser=zabbix

  • DBPassword 数据库密码

    DBPassword=zabbixmysql

  • DBSocket DBScoket地址

  • DBPort 数据库端口,默认为空,

  • HistoryStorageURL 历史存储的HTTP地址

  • HistoryStorageTypes 用逗号分隔的类型列表,uint\dbl\str\log\text

  • HistoryStorageDateIndex 是否历史记录预处理 0 disable,1 enable

  • ExportDir 导出路径

  • ExportFileSize 导出文件大小1M~1G,默认1G

  • StartPollers 预分叉的轮询器实例数,默认5

  • StartIPMIPollers IPMI轮询器数量

  • StartPreprocessors 启动预处理器数量,默认3

  • StartPollersUnreachable 无法访问是轮询次数

  • StartTrappers

  • StartPingers ICMP预习处理数

  • StartDiscoverers 发现者预处理数

  • StartHTTPPollers HTTP查询器预处理数

  • StartTimers 计时器数

  • JavaGateway zabbix网关ip地址或主机名,仅在启动java轮询器时需要

    JavaGateway=机器当前ip

  • JavaGatewayPort zabbix网关的监听端口,默认10052

  • StartJavaPollers java轮询器预处理数

    StartJavaPollers=5

  • StartVMwareCollectors 虚拟收集器的数量

  • SNMPTrapperFile SNMPtrapper文件,从snmp守护进程传递到服务器的临时文件

    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

  • StartSNMPTrapper 为1,启动SNMPTrapper

  • ListenIP trapper监听的端口列表,用逗号分隔

  • CacheSize 缓存

  • Timeout SNMP服务和外部检查超时时间

    Timeout=4

  • AlertScriptsPath 预警脚本位置

    AlertScriptsPath=/usr/lib/zabbix/alertscripts

  • ExternalScripts 外部脚本路径

    ExternalScripts=/usr/lib/zabbix/externalscripts

  • LogSlowQueries 定义数据库慢查询时长,单位毫秒

    LogSlowQueries=3000

  • StatsAllowedIP 允许访问的ip列表,用逗号分隔0.0.0.0/0代表所有ipv4地址

    StatsAllowedIP=0.0.0.0/0

在zabbix_server.conf中编辑配置

vim /etc/zabbix/zabbix_server.conf
ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

编辑Zabbix前端的PHP配置

PHP 优化,如有需要可根据相关参数进行优化

vim /etc/php.ini 
  • expose_php = Off # 禁止显示php版本的信息

  • short_open_tag = On # 取消前面的;,修改为On。表示支持php短标签

  • cgi.fix_pathinfo=1 # 将注释去掉,开启PHP的pathinfo伪静态功能。

  • post_max_size = 100M # 单提交的最大数据,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的,默认8M

  • upload_max_filesize = 50M #上载文件的最大许可大小 ,默认2M

  • max_execution_time = 600 # 脚本运行的最长时间,默认30秒

  • max_input_time = 600 # 脚本可以消耗的时间,默认60秒

  • memory_limit = 256M # 脚本运行最大消耗的内存,根据你的需求更改数值,默认128M

  • date.timezone = asia/shanghai #设置时区

sed -i '$a php_value[date.timezone] = Asia/Shanghai' /etc/php-fpm.d/zabbix.conf

启动 Zabbix 服务器和代理进程,并设置开机自启动

systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable --now zabbix-server zabbix-agent httpd php-fpm

配置 Zabbix 前端

  1. 输入数据库连接端口,zabbix数据库密码,输入名称

  2. 默认的用户是Admin,密码为zabbix,该用户是超级用户,输入登录信息后,点击Sign In按钮,进行登录 左下角设置可以切换语言

数据库配置,输入数据库连接端口,zabbix数据库密码

Zabbix Server 配置,输入名称

确认配置信息

默认的用户是Admin,密码为zabbix

更换web页面显示语言,切换为zh_CN

解决Zabbix 图形中文乱码

字体文件目录:

zabbix 4.0:/usr/share/zabbix/fonts/
zabbix 4.2:/usr/share/zabbix/assets/fonts/
zabbix5.0:/usr/share/zabbix/assets/fonts

php 脚本文件位置:

/usr/share/zabbix/include/defines.inc.php

我这里安装的是zabbix5.0,进入到/usr/share/zabbix/assets/fonts目录,可以看到一个graphfont.ttf软连接,默认指向/etc/alternatives/zabbix-web-font这个字体文件,由于php配置文件已经配置好了graphfont.ttf,所以这个软连接指向哪个字体文件就使用哪个文件

下载一个微软雅黑字体

cd /usr/share/zabbix/assets/fonts
wget https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf
mv -f msyh.ttf /usr/share/fonts/dejavu/DejaVuSans.ttf
systemctl restart zabbix-server 

四、安装 Zabbix 客户端

关闭NFtables和SElinux

systemctl disable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

安装系统常用软件包

dnf install -y sysstat traceroute  net-tools telnet  tree  \
net-snmp-utils  vim lrzsz tcpdump wget git zip tar

注意:这里需要下载和Zabbix Server版本一致的Zabbix Agent 软件包和Yum源

Zabbix 官方源

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm

替换为阿里云Zabbix源

sed -i '3c baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/$basearch/' /etc/yum.repos.d/zabbix.repo

安装 Zabbix 客户端

dnf -y install  zabbix-agent zabbix-sender

配置zabbix_agent.conf客户端

zabbix_agent.conf配置说明

  • PidFile Pid文件

    PidFile=/var/run/zabbix/zabbix_agentd.pid

  • LogType 日志类型,system\file\console,默认file

  • LogFile 日志文件

    LogFile=/var/log/zabbix/zabbix_agentd.log

  • LogFileSize 日志大小,0-1024MB,0禁用自动日志轮换

    LogFileSize=0

  • DebugLevel 调试级别,0~5,默认为3显示waring信息

  • SourceIP 源IP,默认为空,可以写机器IP地址

    SourceIP=机器IP

  • AllowKey 允许执行的项目键

  • DenyKey

  • Server zabbix-server的IP或名称,列出主机接受传入的连接

    Server=服务端机器IP

  • ListenPort 监听端口,默认10050

  • ListenIP 监听IP,zabbix-agent的IP

    ListenIP=机器IP

  • StartAgents 监听的服务,zabbix-server的IP地址

    ServerActive=服务端机器IP:10051

  • Hostname 主机名zabbix-agent的IP,在zabbix-web上添加hosts时用这个名称

    Hostname=机器的名称

  • UnsafeUserParameters=1 默认为0,不允许使用以下字符 ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @,此外,不允许换行符,修改为1,表示自定义脚本中可以包含特殊字符。

  • HostMetadataItem 主机元数据,默认是system.uname,当Agent程序向服务端发送自动注册请求时,会发送其主机名,在某些情况下,Zabbix服务器的主机名不足以区分发现的主机,主机元数据可将其他信息从Agent发送到服务端。

vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.186.139           # 服务器IP
ServerActive=192.168.186.139     # 服务器IP
Hostname=hezhiqiang-agent01      # 客户端主机名
UnsafeUserParameters=1           # 默认为0,修改为1,表示自定义脚本中可以包含特殊字符。
HostMetadataItem=system.uname    # 主机元数据

启动 Zabbix 代理进程,并设置开机自启动

systemctl enable --now zabbix-agent.service

五、Zabbix5.0 监控 Nginx

安装 Nginx

vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
 dnf makecache timer
 dnf info nginx
 dnf install -y nginx
 rm -rf /etc/nginx/conf.d/default.conf

查看当前Nginx是否已安装内置运行状态模块

nginx -V

从命令返回值中出现“--with-http_stub_status_module”这一个模块即代表内置运行状态模块已开启

开启运行状态模块,编辑Nginx配置文件

注意:stub_status模块只能应用在server或者location下

vim /etc/nginx/nginx.conf
 
参考以下内容进行修改:
server {
        location /status {              #定义运行状态页面名称,页面为status
        stub_status on;                 #开启模块
        access_log off;                 #不开启访问日志记录
        allow 127.0.0.1;                #运行127.0.0.1地址访问此网页
        allow 192.168.186.0/24;         #只运行192.168.186.0网段的主机访问此网页
        deny all;                       #其余网段主机不允许访问
 }
}

检查配置文件语法是否正确,然后重启nginx服务

nginx -t
systemctl restart nginx

浏览器访问运行状态页面

页面内容解析:

Active connections: 2 
server accepts handled requests
 2 2 1 
Reading: 0 Writing: 1 Waiting: 1 
  • Active connections:当前活动的客户端连接数有多少(包括在等待阶段的)

  • accepts:接受的客户端连接总数

  • handled:已处理的连接总数(通常与accepts数量一致,但存在某些资源限制的情况导致数量不一致)

  • requests:客户端请求总数(包括接受请求或拒绝请求的)

  • Reading:nginx正在读取请求标头的当前连接数。

  • Writing:nginx正在将响应写回到客户端的当前连接数。

  • Waiting:当前等待请求的空闲客户端连接数。

编写监控脚本

mkdir /etc/zabbix/script
vim /etc/zabbix/script/nginx_status.sh
 
#!/bin/bash

#function: monitor nginx1.16 for zabbix5.0
#blog: he.zhiqiang.cloud
#version: 1.0
#date: 2021/6/22

#定义Nginx status页面
ngx_status="http://127.0.0.1/status"

#判断status页面是否存活
ngx_status_code() {
        http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
        if [ ${http_code} == "200" ];then
                return 1
        else
                echo "Nginx status is not running."
        fi
}

#获取当前活动的客户端连接数
active() {
        ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
}

#获取接收客户端连接的总数量
accepts() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
}

#获取已处理的连接总数量
handled() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
}

#获取客户端请求总数量
requests() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
}

#获取正在读取请求标头的当前连接数量
reading() {
        ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
}

#获取正在将响应写回到客户端的当前连接数量
writing() {
        ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
}

#获取当前正在等待响应的客户端连接数量
waiting() {
        ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
}

#使用位置变量控制脚本输出
case $1 in
        active)
                active;;
        accepts)
                accepts;;
        handled)
                handled;;
        requests)
                requests;;
        reading)
                reading;;
        writing)
                writing;;
        waiting)
                waiting;;
        *)
                echo "Unknown options"
esac
chmod +x /etc/zabbix/script/nginx_status.sh

创建自定义监控项

说明:自定义监控项,格式为:UserParameter=<键值>,<命令>。

比如第一个自定义键值为:nginx.active,要执行的命令为执行nginx_status.sh这个脚本。

vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

UserParameter=nginx.active,bash /etc/zabbix/script/nginx_status.sh active
UserParameter=nginx.accepts,bash /etc/zabbix/script/nginx_status.sh accepts
UserParameter=nginx.handled,bash /etc/zabbix/script/nginx_status.sh handled
UserParameter=nginx.requests,bash /etc/zabbix/script/nginx_status.sh requests
UserParameter=nginx.reading,bash /etc/zabbix/script/nginx_status.sh reading
UserParameter=nginx.writing,bash /etc/zabbix/script/nginx_status.sh writing
UserParameter=nginx.waiting,bash /etc/zabbix/script/nginx_status.sh waiting

说明:添加完成以后,重启zabbix_agentd才会生效。

六、Zabbix Server Web界面添加被监控主机

配置——主机群组——创建主机群组——输入组名

要在Zabbix页面创建主机组,请执行以下步骤:

  • 进入: 配置 → 主机组

  • 单击页面右上角的创建主机群组

  • 在表单中输入组的相关参数

配置——主机——创建主机

按照以下步骤在Zabbix前端创建一台主机:

  • 进入: 配置 → 主机

  • 单击页面右上角 创建主机 (或者在主机名上单击以编辑一台已有的主机)

  • 在表单中输入主机的相关参数

配置——模板——创建模板

要创建模板,请执行以下操作:

  • 转到配置→模板

  • 点击创建模板

  • 编辑模板属性

主机——监控项——创建监控项

要在Zabbix管理页面创建一个监控项,请执行以下操作:

  • 进入到: 配置 → 主机

  • 在主机所在的行单击 监控项

  • 点击屏幕右上角的创建监控项

  • 输入表单中监控项的参数

主机——触发器——创建触发器

配置一个触发器,进行下面步骤:

  • 进入:配置 → 主机

  • 点击主机一行的 触发器

  • 点击右上角的 创建触发器(或者点击触发器名称去修改一个已存在的触发器)

  • 在窗口中输入触发器的参数

主机——图形——创建图形

  • 前往 配置 → 主机 (或模板) 页;

  • 点击所要创建图形的主机或模板旁的 图形链接;

  • 在跳转的图表页的上,点击创建图表按钮;

  • 编辑图表的属性。

七、在Zabbix Server 中添加告警媒介

添加企业微信机器人告警脚本

zabbix_server.conf 文件中定义脚本目录,这里就选择了默认的目录

AlertScriptsPath=/usr/lib/zabbix/alertscripts

进入该定义的脚本存放路径下,创建用来推送告警消息的脚本

vim /usr/lib/zabbix/alertscripts/wechat.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# zabbix企业微信报警
import requests, json, sys, os, datetime

#微信钩子机器人地址
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxx"

#zabbix传过来的三个变量
user = sys.argv[1]
title = sys.argv[2]
text = sys.argv[3]

#每发送一次报警,就记一次日志
file = r"/var/log/zabbix/send2wechat.log"

#报警的信息
data = {
    "msgtype": "markdown",
    "markdown": {
        "content": title + "\n" + text
    }
}

#请求这个钩子机器人
headers = {'Content-Type': 'application/json'}
x = requests.post(url=webhook, data=json.dumps(data), headers=headers)
if os.path.exists(file):
    f = open(file, "a+")
else:
    f = open(file, "w+")
    f.write(" " + " - -" * 30)
    f.write("\n")

#记录日志
if x.json()["errcode"] == 0:
    f.write(" "+ str(datetime.datetime.now()) + " " + str(user) + " " + "发送成功" + " " + str(title) + "\n")
    f.close()
else:
    f.write(" "+ str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + " " + str(title) + "\n")
    f.close()

赋予脚本执行权限

chmod +x /usr/lib/zabbix/alertscripts/wechat.py   

安装python3.9版本

dnf -y install python39  

Python3安装requests模块

pip3 install requests

测试脚本,告警推送

python3 /usr/lib/zabbix/alertscripts/wechat.py  您好,监控测试

管理——报警媒介类型——创建媒介类型

新建一个企业微信的报警,脚本名称就是我们脚本名 wechat.py

参数:

  • {ALERT.SENDTO}

  • {ALERT.SUBJECT}

  • {ALERT.MESSAGE}

管理——报警媒介类型——Message templates

故障模板:

主题:# 服务故障: <font color="warning">{EVENT.NAME}</font>
消息:
{
> 告警主机: **{HOST.NAME}**
> 主机地址: **{HOST.IP}**
> 监控项目: {ITEM.NAME}
> 当前取值: {ITEM.LASTVALUE}
> 告警等级: {TRIGGER.SEVERITY}
> 告警时间: {EVENT.DATE}-{EVENT.TIME}
> 事件ID: {EVENT.ID}
}

效果:

恢复故障模板

主题:# 故障恢复: <font color="info">{EVENT.NAME}</font>
消息:
{
> 主机名称: **{HOST.NAME}**
> 主机地址: **{HOST.IP}**
> 告警名称: {EVENT.NAME}
> 持续时长: {EVENT.DURATION}
> 恢复时间: {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME} 
> 当前状态: {TRIGGER.STATUS}
> 当前取值: {ITEM.LASTVALUE}
> 事件ID: {EVENT.ID}
}

效果:

管理 --> 报警 --> 媒介类型 --> 企业微信报警 --> Message templates --> 编辑 --> 更新

用户设置——报警媒介——添加媒介类型

更新告警媒介

配置——动作——创建动作——添加触发器

配置动作

修改操作 --> 步骤 1-0(无穷大)

八、测试故障,查看报表是否已经推送成功

systemctl stop nginx

报表——动作日志

Zabbix前端可以在浏览器中通过 进行访问。

自定义消息模板, 参考

点击
博客作者
具体配置参考官方文档
http://localhost/zabbix
http://IP/status
具体stub_status模块信息可查看官方文档
宏使用
Logo接口文档 - 企业微信开发者中心