zabbix详解(5.x)

一.简介

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

然后就可以展示了

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇