【Zabbix系列教程】Agent端部署教程

上一期教程:【Zabbix系列教程】Server端部署教程
下一期教程:【Zabbix系列教程】触发器和报警器

一、关闭防火墙SElinux、时间同步

过程省略

二、部署zabbix agent端

1.配置yum源和epel源

如果没有wget命令,请安装yum install -y wget

[root@node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@node1 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

2.配置zabbix4.X国内源

如果没有vim命令,请使用vi命令或者安装yum install -y vim

[root@node1 ~]# vim /etc/yum.repos.d/zabbix.repo
[zabbix4]
name=zabbix4
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/
enabled=1
gpgcheck=0

清理旧yum缓存,建立新的缓存

[root@node1 ~]# yum clean all && yum makecache fast

3.安装zabbix agent软件

[root@node1 ~]# yum install -y zabbix-agent

4.修改配置文件

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
#配置文件并不完整,仅展示修改的地方
Server=192.168.140.10	#指定我们Server端IP
ServerActive=192.168.140.10	#指定Server端IP,今后让agent端主动联系server端
Hostname=node1	#指定主机名,或者修改为本机IP
UnsafeUserParameters=1	#把默认0改成1,并且删除注释

5.设置Agent服务开机自启动

[root@node1 ~]# systemctl enable --now zabbix-agent.service

6.回到Serverweb界面,添加Agent

zabbix4-13

zabbix4-14

zabbix4-15

zabbix4-16

我们添加了最基础的监控模板,等待1-2分钟亮起即可

zabbix4-17

三、zabbix键值

1.手动创建一个监控项

zabbix4-18

2.键值

zabbix4-19

官方提供了一些常用的键值
部分服务(MySQLNginxRedis)的常用键值教程:https://www.wsjj.top/archives/112

zabbix4-20

3.关于键值的写法

zabbix4-21

4.平常生活常用的键值汇总

  • 监控网卡流量
    • net.if.in[if,<mode>]
      • net.if.in[eth0,errors]
      • net.if.in[eth0]
    • net.if.total[if,<mode>]
    • net.if.out[if,<mode>]
  • 监控TCP服务状态
    • net.tcp.listen[port]
      • net.tcp.listen[80]
    • net.tcp.port[<ip>,port]
      • net.tcp.port[,80]
  • 监控UDP服务状态
    • net.udp.listen[port]
      • => net.udp.listen[123]
  • 进程数量
    • proc.num[<name>,<user>,<state>,<cmdline>]
      • proc.num[]
      • proc.num[redis_server,,,]
      • proc.num[nginx,www]
      • => proc.num[,,zomb]
  • 进程所消耗的内存
    • proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]
      • => proc.mem[httpd]
  • 进程所消耗的CPU使用率
    • proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>]
      • => proc.cpu.util[httpd]
  • 磁盘空间
    • vfs.fs.size[fs,<mode>]
    • vfs.fs.size[/webdata, free]
    • vfs.fs.size[/var/lib/mysql, pfree]
  • 内存大小
    • vm.memory.size[<mode>]
    • vm.memory.size[free]
    • vm.memory.size[buffers]
    • vm.memory.size[cached]
  • 文件内容变化
    • vfs.file.cksum[file]
      • vfs.file.cksum[/etc/passwd]

更多键值,请参考官方文档:https://www.zabbix.com/documentation/4.0/zh/manual/config/items/itemtypes/zabbix_agent

5.创建图形

一定要选择适当的图形类型展示
监控项选择我们刚刚创建的相应监控项

zabbix4-22

图例查看

zabbix4-23

zabbix4-24

四、自定义无参数的key(键值)

  • 在被监控端定义
  • 配置语法
    • UserParameter=<key>,<shell command>
    • UnsafeUserParameters=1 #修改配置允许用户使用特殊符号和自定义键值

例1:监控Agent端MySQL用户数

A.编写命令

[root@node1 ~]# mysql -uroot -e "select count(*) from mysql.user"
+----------+
| count(*) |
+----------+
|        9 |
+----------+
#可以看到一共有9个用户,但是显示的结果有多条数据,可以利用sed命令过滤结果

[root@node1 ~]# mysql -uroot -e "select count(*) from mysql.user" | sed '1d'
9
#注意,zabbix通过这条命令收到的数据只能有一个结果!

B.修改配置文件

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
#配置文件并不完整,仅展示修改的地方,请勿删改其他!
UnsafeUserParameters=1	#再次确认是否已经启用
UserParameter=mysql.user.number,mysql -uroot -e "select count(*) from mysql.user" | sed '1d'
#UserParameter=自定义键值,命令

C.重启服务,让配置文件生效

[root@node1 ~]# systemctl restart zabbix-agent.service

D.回到web端配置

zabbix4-25

创建图形

zabbix4-26

查看图形

zabbix4-27

D.测试创建几个数据库用户

如果您配置了主从环境,请回到主库创建!

MariaDB [(none)]> create user 'user01'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> create user 'user02'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> create user 'user03'@'localhost';
Query OK, 0 rows affected (0.00 sec)

E.查看图形,是否更新

zabbix4-28

例2:检测MySQL数据库的IO线程和SQL线程

需要提前配置主从复制环境
MySQL主从复制教程:https://www.wsjj.top/archives/76

A.编写脚本

2个结果都是yes的时候返回1,如果其中一个或者所有都不等于yes,就返回0

[root@node1 ~]# vim /opt/slave.sh
#! /bin/bash

io=$(mysql -uroot -e "show slave status\G" | awk '/Slave_IO_Running/{print $2}')
sql=$(mysql -uroot -e "show slave status\G" | awk '/Slave_SQL_Running/{print $2}')

if [ $io == Yes ] && [ $sql == Yes ] ; then
    echo 1
else
    echo 0
fi

B.给予执行权限(重要)

[root@node1 ~]# chmod a+x /opt/slave.sh

C.修改配置文件

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql.slave,bash /opt/slave.sh

D.重启服务

[root@node1 ~]# systemctl restart zabbix-agent.service

E.Server端测试

安装测试软件
[root@zabbix-server ~]# yum install -y zabbix-get
测试

-s指定客户端地址 -k键值

[root@zabbix-server ~]# zabbix_get -s 192.168.140.12 -k mysql.slave
1

五、定义有参数的key(键值)

例子1:查看系统的内存

A.查看系统内存文件

/proc/meminfo记录系统内存各种参数的文件

[root@node1 ~]# cat /proc/meminfo
查看内存

关于awk命令教程:https://www.wsjj.top/archives/82

[root@node1 ~]# awk '/^MemTotal/{print $2}' /proc/meminfo
1863000	#系统总内存
[root@node1 ~]# awk '/^MemFree/{print $2}' /proc/meminfo
1120644	#系统剩余内存

B.修改配置文件

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf

UserParameter=system.memory.size[*],awk '/^$1/{print $$2}' /proc/meminfo
# [*]是我们将来要写的参数
# $1不是awk中的参数,而是zabbix内置的变量,代表上一个[*]中第一个参数
# $$2,其中第一个$符号代表转译字符

C.重启服务器,让配置文件生效

[root@node1 ~]# systemctl restart zabbix-agent.service

D.回到web界面配置

zabbix4-29

zabbix4-30

创建图形并查看图形

zabbix4-31