【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.回到Server端web界面,添加Agent端




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

三、zabbix键值
1.手动创建一个监控项

2.键值

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

3.关于键值的写法

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.创建图形
一定要选择适当的图形类型展示
监控项选择我们刚刚创建的相应监控项

图例查看


四、自定义无参数的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端配置

创建图形

查看图形

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.查看图形,是否更新

例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界面配置


创建图形并查看图形

评论