一.简介
Zabbix是一款开源免费的服务器监控管理软件,其功能强大、配置简单、可外接Grafana图形可视化,是企业运维监控软件的首选。
由于用得较多,所以做一篇文章记录zabbix详细使用。
[zabbix 5.0]版本是由C语言开发的。是最新的 LTS(长期支持)版本,5.0 带来很多功能和特性,详细见官方文档。
官网:https://www.zabbix.com/documentation/current/manual/introduction/whatsnew500
zabbix架构图
zabbix是一个CS架构(服务端、客户端),由客户端zabbix-agent采集数据到zabbix-server进行展示的一个过程。
环境要求:
– Centos 7.x
– PHP 7.2 (从Zabbix 5.0开始)
– MariaDB或者Mysql5.7版本以上
硬件配置:
二.安装zabbix5.X(本地部署)
此示例的数据库和zabbix_server都装在本地一台服务器中。
也可以用docker容器部署。
1.系统优化
关闭防火墙和 selinux 并重启
hostnamectl set-hostname zabbix-server #2.关闭selinux [root@zabbix-server ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config [root@zabbix-server ~]# systemctl disable --now firewalld
安装源并替换阿里云 zabbix 源
[root@zabbix-server ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm [root@zabbix-server ~]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo [root@zabbix-server ~]# yum clean all
安装 zabbix server 和 agent
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-agent -y
安装 Software Collections
# 便于后续安装高版本的 php,默认 yum 安装的 php 版本为php 5.4 过低 [root@zabbix-server ~]# yum install centos-release-scl -y
启用 zabbix 前端源
# 修改vi /etc/yum.repos.d/zabbix.repo,将[zabbix-frontend]下的 enabled 改为 1 [root@zabbix-server ~]# vi /etc/yum.repos.d/zabbix.repo ........... enabled=1
安装 zabbix 前端和相关环境,在安装之前我们先去升级PHP
# 1. 卸载旧PHP yum remove php* -y # 2. 安装rh yum install centos-release-scl-rh -y # 3. 查询php yum search php # 4.安装 yum install rh-php72 -y scl enable rh-php72 bash # 5.查看版本 php -v # 然后再安装前端包 yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
安装mariadb 数据库(示例方便,生产环境用mysql)
[root@zabbix-server ~]# yum install mariadb-server -y
启动数据库
[root@zabbix-server ~]# systemctl start mariadb [root@zabbix-server ~]# systemctl enable mariadb
使用以下命令初始化 mariadb 并配置 root 密码
[root@zabbix-server ~]# mysql_secure_installation ....... Enter current password for root (enter for none):<–初次运行直接回车 ....... Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车 New password: <– 设置root用户的密码,这里我输入的是123456 Re-enter new password: <– 再输入一次你设置的密码123456 ....... Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车 ....... Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止 ....... Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车 ....... Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车 [root@zabbix-server ~]# systemctl restart mariadb
使用 root 用户进入 mysql,并建立 zabbix 数据库,注意数据库编码
[root@zabbix-server ~]# mysql -uroot -p123456 [root@zabbix-server ~]# mysql -uroot -p123456 -e "create database zabbix character set utf8 collate utf8_bin;" [root@zabbix-server ~]# mysql -uroot -p123456 -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';" [root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql-*/create.sql.gz |mysql -uroot -p123456 zabbix
修改 zabbix server 配置文件vi /etc/zabbix/zabbix_server.conf 里的数据库密码为前面创建好的zabbix
[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf DBHost=localhost DBPassword=zabbix [root@zabbix-server ~]# grep '^D' /etc/zabbix/zabbix_server.conf DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix
修改 zabbix 的 php 配置文件里的时区,改成亚洲/上海
[root@zabbix-server ~]# vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf .....最后一行添加...... php_value[date.timezone] = Asia/Shanghai
启动相关服务,并配置开机自动启动
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
使用浏览器访问http://ip/zabbix 即可访问 zabbix 的 web 页面
按需设置即可:
输入账号密码登录 Admin zabbix
修改界面为中文:
解决乱码问题
过滤zabbix字体库
[root@zabbix-server ~]# rpm -ql zabbix-web |grep fonts
/usr/share/zabbix/assets/fonts
[root@zabbix-server ~]# cd /usr/share/zabbix/assets/fonts
[root@zabbix-server fonts]# cd /usr/share/fonts/dejavu/
打开我的电脑,C盘下—->选择Windows—->Fonts将其上传到服务器
[root@zabbix-server dejavu]# mv DejaVuSans.ttf DejaVuSans_bak.ttf [root@zabbix-server dejavu]# mv MSYH.TTC DejaVuSans.ttf
可以发现zabbix图形化中文乱码已经变为正常了
三.zabbix-agent添加主机
1.在zabbix-server端需要安装zabbix-agent
#####查看zabbix-server版本号为5.0.19
[root@zabbix-server ~]# zabbix_server -V zabbix_server (Zabbix) 5.0.19
2.zabbix-agent版本控制
####注意:安装zabbix-agent版本低于或者等于zabbix_server的版本,在这里我们装的是5.0.14版本
[root@web01 ~]# rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.14-1.el7.x86_64.rpm [root@web01 ~]# rpm -qa |grep zabbix zabbix-agent-5.0.14-1.el7.x86_64
3.配置zabbix-agent
允许zabbix—server:192.168.1.200 能够采集192.168.1.201的数据
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf ......... Server=192.168.1.200 ###此处是修改后直接筛选出来的数据 [root@web01 ~]# grep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=192.168.1.200 Include=/etc/zabbix/zabbix_agentd.d/*.conf
4.启动zabbix-agent
[root@web01 ~]# systemctl enable zabbix-agent [root@web01 ~]# systemctl start zabbix-agent.service [root@web01 ~]# systemctl restart zabbix-agent
5.默认端口10050
[root@web01 ~]# netstat -lntup |grep 10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2085/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 2085/zabbix_agentd
6.在zabbix-server上面添加主机
依次选择——>配置—->主机—->创建主机—–>ip 地址为agent的ip地址—>依次点击
添加主机
添加模板———>点击模板(zabbix提供了丰富的模板,根据自己需求添加)
四.zabbix自定义监控项
zabbix自带监控项,因为zabbix自定义监控好多东西看起来太繁琐,我们又不想要,所以在这里我们引入自定义监控项。
监控系统5分钟负载率,阈值暂定为5
编写脚本进行取值并启动zabbix-agent
[root@web01 ~]# uptime |awk -F "," '{print $5}' 0.05 [root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/ [root@web01 zabbix_agentd.d]# vim all.conf [root@web01 zabbix_agentd.d]# cat all.conf UserParameter=user_login,uptime |awk -F "," '{print $5}' [root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent
在zabbix-server端测试取值是否成功
[root@zabbix-server ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-get-5.0.14-1.el7.x86_64.rpm [root@zabbix-server ~]# zabbix_get -s 192.168.1.201 -k user_login 0.05
在zabbix-web界面进行添加—->输入监控值直接添加即可
由于负载一般是小数,所以需要在信息类型上面添加浮点数(截图没有添加)—如不修改无法监测到数据。
查看自定义好的监控项
创建阈值—添加触发器,当CPU过去五分钟使用大于60%告警
自己创建自定义监控项,监控过去一分钟、15分钟负载
[root@web01 zabbix_agentd.d]# uptime | awk -F ":" '{print $5}' |awk -F "," '{print $1}' #1分钟 [root@web01 zabbix_agentd.d]# uptime | awk -F ":" '{print $5}' |awk -F "," '{print $2}' #5分钟 [root@web01 zabbix_agentd.d]# uptime | awk -F ":" '{print $5}' |awk -F "," '{print $3}' #15分钟
五.常用应用监控
1.zabbix监控TCP的连接状态
TCP协议:TCP 协议是传送层的核心协议,提供了可靠面向连接的协议,分为三次握手和四次断开,在这个过程中TCP有个状态机,记录不同阶段的状态。
TCP握手和断开:
各项指标含义 一、握手过程产生的状态: CLOSED:没有任何连接状态 LISTEN:侦听来自远方的TCP端口的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(这个值一般为低于5,很低就正常) SYN-SENT:再发送连接请求后等待匹配的连接请求 ESTABLISHED:代表一个打开的连接 二、断开(挥手过程产生的状态): FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认 FIN-WAIT-2:从远程TCP等待连接中断请求 CLOSE-WAIT:等待从本地用户发来的连接中断请求 CLOSING:等待远程TCP对连接中断的确认 LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
半打开和半关闭状态
DDOS网络攻击的方式很多,有应用层ddos也有网络层的,大量的半打开的链接,占用了大量的网络带宽,从而达到了DOS的目的。
a.半打开 在Tcp三次握手过程中;如果A向B发起TCP请求,B也按照正常情况进行响应了,但是A不进行第3次握手,这就是半连接。 b.半关闭 当一方关闭发送通道后,仍可接受另一方发送过来的数据,这样的情况叫“半关闭”。
#查看TCP连接的命令 -----登录zabbix界面查看变化(打开网页测试连接数) [root@zabbix-server ~]# /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' LISTEN 13 ESTABLISHED 2 FIN_WAIT2 6 TIME_WAIT 42 -----退出zabbix登录界面再查看变化 [root@zabbix-server ~]# /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' LISTEN 13 SYN_RECV 1 ESTABLISHED 2 FIN_WAIT2 1 TIME_WAIT 50
与前面自定义的监控项一样,首先在被监控机器创建取值脚本:
[root@web01 zabbix_agentd.d]# pwd /etc/zabbix/zabbix_agentd.d [root@web01 zabbix_agentd.d]# cat tcp.conf UserParameter=tcp.ESTABLISHED,netstat -an | grep -c ESTABLISHED UserParameter=tcp.CLOSED,netstat -an | grep -c CLOSED UserParameter=tcp.CLOSING,netstat -an | grep -c CLOSING UserParameter=tcp.CLOSE_WAIT,netstat -an | grep -c CLOSE_WAIT UserParameter=tcp.TIME_WAIT,netstat -an | grep -c TIME_WAIT UserParameter=tcp.LAST_ACK,netstat -an | grep -c LAST_ACK UserParameter=tcp.LISTEN,netstat -an | grep -c LISTEN UserParameter=tcp.SYN_RECV,netstat -an | grep -c SYN_RECV UserParameter=tcp.SYN_SENT,netstat -an | grep -c SYN_SENT UserParameter=tcp.FIN_WAIT1,netstat -an | grep -c FIN_WAIT1 UserParameter=tcp.FIN_WAIT2,netstat -an | grep -c FIN_WAIT2 [root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent #重启服务 验证: [root@zabbix-server ~]# zabbix_get -s 192.168.0.131 -k tcp.TIME_WAIT 59
然后参照上面小节创建群组→选择创建模板→创建监控项→创建图形,把上述11个TCP监控指标添加到监控项,最好都指向同一个应用集:
创建好模板后,把要应用的主机添加模板:
然后可以查看监控图形:
2.zabbix监控nginx
简易安装nginx:
[root@web01 ~]# cat /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 [root@web01 ~]# yum install nginx -y [root@web01 ~]# systemctl start nginx [root@web01 ~]# systemctl enable nginx #准备服务 [root@web01 ~]# cd /etc/nginx/conf.d/ [root@web01 conf.d]# vim status.yan.com.conf [root@web01 conf.d]# cat status.yan.com.conf server { listen 80; server_name status.yan.com; location /nginx_status { stub_status; access_log off; allow 127.0.0.1; deny all; } } [root@web01 ~]# nginx -t #检查配置 [root@web01 ~]# nginx -s reload #热加载 [root@web01 conf.d]# curl -H Host:status.yan.com 127.0.0.1/nginx_status Active connections: 1 server accepts handled requests 21 21 21
nginx的请求状态含义:
Active connections Nginx正处理的活动链接数个数;重要 server Nginx启动到现在共处理了多少个连接。 accepts Nginx启动到现在共成功创建几次握手。 handled requests Nginx总共处理了几次请求。 Reading Nginx读取到客户端的 Header 信息数。 Writing Nginx返回给客户端的 Header 信息数。 Waiting Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
编写nginx连接状态监控脚本:
[root@web01 ~]# mkdir /etc/zabbix/zabbix_agentd.d/scripts [root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/scripts [root@web01 scripts]# vim nginx_status.sh [root@web01 scripts]# cat nginx_status.sh #!/bin/bash Nginx_status_file=/tmp/nginx_status.tmp Nginx_status_name=status.laowang.com Nginx_status_path=/nginx_status curl -sH host:${Nginx_status_name} http://127.0.0.1:80${Nginx_status_path} > ${Nginx_status_file} case $1 in active) echo $[ $(awk 'NR==1 {print $NF}' ${Nginx_status_file}) -1 ] ;; accepts) echo $[ $(awk 'NR==3 {print $1}' ${Nginx_status_file}) - 1 ] ;; handled) echo $[ $(awk 'NR==3 {print $2}' ${Nginx_status_file}) - 1 ] ;; requests) echo $[ $(awk 'NR==3 {print $3}' ${Nginx_status_file}) - 1 ] ;; reading) awk 'NR==4 {print $2}' ${Nginx_status_file} ;; writing) awk 'NR==4 {print $4}' ${Nginx_status_file} ;; waiting) awk 'NR==4 {print $NF}' ${Nginx_status_file} ;; *) echo "USAGE: $0 [active|accepts|handled|requests|reading|writing|waiting]" ;; esac [root@web01 scripts]# chmod +x nginx_status.sh [root@web01 scripts]# ./nginx_status.sh requests 28
配置监控项:
[root@web01 scripts]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf [root@web01 scripts]# cat /etc/zabbix/zabbix_agentd.d/nginx_status.conf UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh "$1" [root@web01 scripts]# systemctl restart zabbix-agent
使用zabbxi_get测试取值:
[root@zabbix-server ~]# zabbix_get -s 192.168.0.131 -k nginx_status[requests] 35
web界面配置模板:
和上小节一样:创建模板→创建应用集→创建监控项→创建图形→应用模板到web群组→查看验证:
最终效果:
3.zabbix监控mysql
1、在被监控主机安装好MySQL
[root@localhost ~]# hostnamectl set-hostname mysql && bash [root@mysql ~]# yum install mariadb-server -y [root@mysql ~]# systemctl start mariadb [root@mysql ~]# systemctl enable mariadb [root@mysql ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.68-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
2、安装zabbix-agent
####注意:安装zabbix-agent版本低于或者等于zabbix_server的版本,在这里我们装的是5.0.14版本 1.安装zabbix-agent [root@mysql ~]# rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.14-1.el7.x86_64.rpm 2.配置zabbix-agent,允许zabbix—server:192.168.1.130 能够采集192.168.1.132的数据,这里直接使用原有的web01(192.168.1.131)配置。 [root@web01 ~]# scp -rp /etc/zabbix/zabbix_agentd.conf root@192.168.0.132:/etc/zabbix/ 3.启动zabbix-agent [root@mysql ~]# systemctl enable zabbix-agent [root@mysql ~]# systemctl start zabbix-agent.service [root@mysql ~]# systemctl restart zabbix-agent 4.默认端口10050 [root@mysql ~]# netstat -lntup |grep 10050
3、web界面创建监控主机(取不到数据)
按照创建web01主机的方法添加主机和模板,模板可以使用zabbix提供的默认模板
然后需要进行配置:
参考官网: https://www.zabbix.com/cn/integrations/mysql#mysql_agent
模板地址:
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent/template_db_mysql.conf?at=refs%2Ftags%2F5.0.19
授权文件:
#授权文件 MariaDB [(none)]> grant all privileges on *.* to root@localhost identified by 'abc123'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)
添加账号密码:
#添加账号密码 [root@mysql ~]# cd /etc/zabbix/ [root@mysql zabbix]# ls zabbix_agentd.conf zabbix_agentd.d [root@mysql zabbix]# vim .my.cnf [root@mysql zabbix]# cat .my.cnf [client] user=root host=localhost password=abc123 [root@mysql zabbix]# HOME=/etc/zabbix/ mysqladmin ping mysqld is alive
根据官方提供的方法,需要定义.my.cnf配置文件,我们可以把配置文件放在/etc/zabbix下方便修改,在conf文件中添加HOME=/etc/zabbix即可:
#注意:我这里使用的zabbix-server版本是zabbix-server 5.0.19 [root@mysql zabbix]# cd /etc/zabbix/zabbix_agentd.d/ [root@mysql zabbix_agentd.d]# find / -name userparameter_mysql.conf /usr/share/doc/zabbix-agent-5.0.14/userparameter_mysql.conf [root@mysql zabbix_agentd.d]# cp /usr/share/doc/zabbix-agent-5.0.14/userparameter_mysql.conf ./ 把原先的 UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status" UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases" UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'" UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status" UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status" 改为 UserParameter=mysql.ping[*], HOME=/etc/zabbix mysqladmin -h"$1" -P"$2" ping UserParameter=mysql.get_status_variables[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show global status" UserParameter=mysql.version[*], HOME=/etc/zabbix mysqladmin -s -h"$1" -P"$2" version UserParameter=mysql.db.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "show databases" UserParameter=mysql.dbsize[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'" UserParameter=mysql.replication.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status" UserParameter=mysql.slave_status[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status" 重启服务 [root@mysql zabbix_agentd.d]#
等待几分钟,即可看到mysql监控数据:
4.zabbix监控redis
监控redis需要用到zabbix-agent2,zabbix-ahent2是zabbix-agent的升级版本(功能更加强大) zabbix5版本后主推
Zabbix 5.0 版本推出了使用 go 语言重写的 Agent2,也是 5.0 版本新特性,Agent2 有如下特性:
完整的插件框架支持,可扩展服务及应用监控
支持灵活的采集周期调度
更高效的数据采集及传输
可完全替换现有的 agent
原理:部署在本机的agent会调用redis-cli命令来采集数据,一般情况是采集部署在本机的redis,当然也可以是部署在其他地方的redis(需要更改redis模板宏设置)
新服务器部署redis:
[root@localhost ~]# yum install redis -y [root@localhost ~]# vim /etc/redis.conf ..... bind 192.168.0.133 127.0.0.1 #设置本地和内网IP ..... requirepass 123456 #设置密码 [root@localhost ~]# systemctl enable redis --now #启动
部署agent2:
[root@tomcat ~]# rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.14-1.el7.x86_64.rpm [root@tomcat zabbix]# vim /etc/zabbix/zabbix_agent2.conf ...... Server=192.168.1.130 #设置zabbix服务端IP [root@localhost ~]# systemctl enable zabbix-agent2.service --now #启动
然后添加主机→添加模板(Template DB Redis),显示正常(如下):
由于zabbix-agent2默认redis收集的是本地无密码的redis服务器,如果设置了密码,需要简单修改模板的宏设置:
如下,可以设置宏url,redis有密码就需要添加上宏{$REDIS_PASS},值就是密码:
监控项也需要添加上键值”{$REDIS_PASS}”,如下
等待一会查看最新数据:
六.监控日志
待更新
七.自动发现与注册
待更新
八.集成第三方告警
1.接入企业微信
下载安装并注册企业微信
https://work.weixin.qq.com/?from=newsmeeting#indexDownload
设置企业微信
企业微信注册地址:https://work.weixin.qq.com/
进行部门创建提取secrite、agentd、企业ID
记录下自己的:secrite、agentd、企业ID
告警原理:发邮件通过linux上面的python脚本来触发发送,触发方式通过设置zabbix告警媒介和动作来进行触发,具体操作如下:
安装python:
[root@zabbix-server ~]# yum install python-pip -y [root@zabbix-server ~]# pip install requests (安装不成功可以升级pip,升级不成功可以先升级到20版本) [root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/ [root@zabbix-server alertscripts]# vim weixin.py #!/usr/bin/env python #-*- coding: utf-8 -*- #date: 2022 #comment: zabbix接入微信报警脚本 import requests import sys import os import json import logging logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s', datefmt = '%a, %d %b %Y %H:%M:%S', filename = os.path.join('/tmp','weixin.log'), filemode = 'a') corpid='wwabc724323' #替换自己的id等 appsecret='**' agentid=1000004 #获取accesstoken token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req=requests.get(token_url) accesstoken=req.json()['access_token'] #发送消息 msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser=sys.argv[1] subject=sys.argv[2] #toparty='3|4|5|6' message=sys.argv[2] + "\n\n" +sys.argv[3] params={ "touser": touser, # "toparty": toparty, "msgtype": "text", "agentid": agentid, "text": { "content": message }, "safe":0 } req=requests.post(msgsend_url, data=json.dumps(params)) logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
脚本需要修改提取企业微信上述信息corpid、appsecret、agentid
记录账号名称,后zabbix会用到,我的是YanJing
脚本授权
[root@zabbix-server alertscripts]# chmod +x weixin.py
测试是否成功,YanJing为刚刚上面记录的企业微信账号。
[root@zabbix-server alertscripts]# ./weixin.py YanJing 监控测试 "123456"
手机登录企业微信查看消息发送成功
填写微信报警名称以及需要传入的参数:
{ALERT.SENDTO} #发送的用户 {ALERT.SUBJECT} #发送的主题 {ALERT.MESSAGE} #发送的内容
选择告警媒介类型→名称→类型(选脚本)→脚本名称(选实际脚本名称)→脚本参数(上述)
选择Message templates→添加→按照下述选择类型
用户设置→报警媒介→添加→类型(选刚刚设置的weixin)→收件人(企业微信账号)→其他告警设置→确定点更新
对微信告警添加动作(触发)
然后测试告警是否成功
#压力测试进行信息查看或者停掉之前的数据库 [root@zabbix-server alertscripts]# dd if=/dev/zero of=/dev/null bs=1000M count=200 [root@mysql ~]# systemctl stop mariadb
九.zabbix+grafana
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示。
主要比起zabbix展示更美观,可以根据需求使用。
1.grafana安装:
#官网下载,国内网站可能下不了,要用加速器。 wget https://dl.grafana.com/oss/release/grafana-9.0.0-1.x86_64.rpm sudo yum install grafana-9.0.0-1.x86_64.rpm -y grafana-cli plugins install alexanderzobnin-zabbix-app #安装插件, 集成zabbix,也可以后面进去后下载 systemctl enable grafana-server --now #启动
2.访问:
默认账号:admin admin
http://192.168.0.130:3000
集成zabbix:
配置zabbix数据源进行通信
http://192.168.0.130/zabbix/api_jsonrpc.php
添加grafana的模板
https://grafana.com/grafana/dashboards/5363
https://grafana.com/grafana/dashboards/5456
然后就可以展示了