【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