官方预定义监控项文档:1 Zabbix客户端
User parameters用户参数
server---zabbix-server | 192.168.43.142 |
agent----zabbix-agent | 192.168.43.141 |
1、介绍和用法
① 介绍
自定义用户参数,也就是自定义key
有时,你可能想要运行一个代理检查,而不是Zabbix的预定义
你可以编写一个命令来检索需要的数据,并将其包含在代理配置文件("UserParameter"配置参数)的用户参数中
② 用法格式 syntax
UserParameter=<key>,<command>
A user parameter also contains a key 一个用户参数也包含一个键
The key will be necessary when configuring an item 在配置监控项时,key是必需的
Note: Need to restart the agent 注意:需要重新启动agent 服务
2、用法展示
(1)修改agent 端的配置,设置用户参数
① free | awk '/^Mem/{print $3}' 自己需要查找的参数的命令
[root@agent ~]# free | awk '/^Mem/{print $3}'
150636
[root@agent ~]# free | awk '/^Mem/{print $3}'
150740
[root@agent ~]# free | awk '/^Mem/{print $3}'
150740
② 修改配置文件,把查找参数的命令设为用户参数
[root@agent ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@agent ~]# vim memory_usage.conf
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
③ systemctl restart zabbix-agent.service 重启agent 服务
(2)在zabbix-server 端,查询
[root@server zabbix]# zabbix_get -s 192.168.43.141 -p 10050 -k "memory.used"
-bash: zabbix_get: 未找到命令
[root@server zabbix]# yum -y install zabbix-get
[root@server zabbix]# zabbix_get -s 192.168.43.141 -p 10050 -k "memory.used"
151064
(3)在监控上,设置一个item监控项,使用这个用户参数
(4)查询graph 图形
字体乱码了怎么解决呢?
上传一下字体包,然后进行更换
[root@server zabbix]# ls /usr/share/zabbix/assets/fonts/
graphfont.ttf
[root@server ~]# cd
[root@server ~]# ll
总用量 11524
-rw-------. 1 root root 1241 10月 19 09:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 1444 10月 25 22:51 my_system_initialize_1.1.sh
-rw-rw-rw-. 1 root root 11787328 11月 14 09:41 simkai.ttf
-rwxr-xr-x. 1 root root 1208 11月 19 16:04 yum-server.sh
[root@server ~]# mv simkai.ttf graphfont.ttf
[root@server ~]# ls
anaconda-ks.cfg graphfont.ttf my_system_initialize_1.1.sh yum-server.sh
[root@server ~]# cp graphfont.ttf /usr/share/zabbix/assets/fonts/
cp:是否覆盖"/usr/share/zabbix/assets/fonts/graphfont.ttf"? y
来浏览器刷新一下,字体已经恢复了
3、用法升级
(1)修改agent 端的配置,设置用户参数
① 命令行查询参数的命令
[root@agent zabbix_agentd.d]# cat /proc/meminfo
MemTotal: 995676 kB
MemFree: 738812 kB
MemAvailable: 716852 kB
Buffers: 2108 kB
Cached: 85572 kB
SwapCached: 0 kB
Active: 62628 kB
Inactive: 66096 kB
Active(anon): 41480 kB
Inactive(anon): 7472 kB
Active(file): 21148 kB
Inactive(file): 58624 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 41076 kB
Mapped: 22696 kB
Shmem: 7908 kB
Slab: 54028 kB
SReclaimable: 19076 kB
SUnreclaim: 34952 kB
KernelStack: 3872 kB
PageTables: 4440 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2594984 kB
Committed_AS: 250140 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 177424 kB
VmallocChunk: 34359310332 kB
Percpu: 22528 kB
HardwareCorrupted: 0 kB
AnonHugePages: 6144 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 53120 kB
DirectMap2M: 995328 kB
DirectMap1G: 0 kB
② 修改配置文件,把查找参数的命令设为用户参数
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'
分析:$$2:表示不是前边调位置参数的$2 ,而是awk 的参数$2
注意:$1是调用前边的[*],位置参数,第一个参数
配置文件修改后重启服务
(2)在zabbix-server 端,查询使用这个用户参数的key
(3)在监控上,设置一个item监控项,使用这个用户参数
① 添加Memory Total 的item监控项,使用memory.stats[MemTotal] 的用户参数
在预处理中定义倍数,规定单位
② clone 克隆Memory Total 创建Memory Free 的监控项
memory.stats[MemFree] 用户参数
③ 创建Memory Buffers 的item 监控项,使用 memory.stats[Buffers] 的key
(4)上面3个监控项的graph 图形
① memory_total
② memory free
③ buffers
4、使用用户参数监控php-fpm 服务的状态
在agent 端:
(1)下载,设置php-fpm
① yum -y install php-fpm
② vim /etc/php-fpm.d/www.conf 打开php-fpm的状态页面
user = nginx
group = nginx
pm.status_path = /php-fpm-status #php-fpm 的状态监测页面
ping.path = /ping #ping 接口,存活状态是否ok
ping.response = pong #响应内容pong
(2)设置nginx ,设置代理php,和php-fpm的状态页面匹配
① yum -y install nginx
② vim /etc/nginx/nginx.conf 下面这段内容加在server模块中
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* /(php-fpm-status|ping) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include fastcgi_params;
allow 127.0.0.1; #因为这个页面很重要,所有需加访问控制
deny all;
access_log off; #访问这个页面就不用记录日志了
}
③ systemctl start nginx
systemctl start php-fpm 开启服务
(3)在agent 端,设置用户参数
① 查询 curl 192.168.30.7/php-fpm-status
[root@agent ~]# curl 192.168.43.141/php-fpm-status
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
② 查询curl 127.0.0.1/php-fpm-status
[root@agent ~]# curl 127.0.0.1/php-fpm-status
pool: www
process manager: dynamic
start time: 20/Nov/2023:10:14:45 +0800
start since: 53
accepted conn: 1
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
③设置
[root@agent ~]# cd /etc/zabbix/zabbix_agentd.d
[root@agent zabbix_agentd.d]# vim php_status.conf
UserParameter=php-fpm.stats[\*]**,**curl -s http://127.0.0.1/php-fpm-status | awk '/^$1/{print $$NF}'**
分析:设置用户参数为php-fpm.stats[*],$1为第一个参数;$$NF为awk中的参数,倒数第一列 |
④ 重启服务
systemctl restart zabbix-agent
(4)在zabbix-server 端,查询使用这个用户参数的key
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[idle]"
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[active]"
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[max active]"
Network discovery 网络发现
server---zabbix-server | 192.168.43.142 |
agent----zabbix-agent | 192.168.43.141 |
agent2---zabbix-agent | 192.168.43.143 |
1、介绍
(1)介绍
网络发现:zabbix server扫描指定网络范围内的主机;
网络发现是zabbix 最具特色的功能之一,它能够根据用户事先定义的规则自动添加监控的主机或服务等
优点:
加快Zabbix部署
简化管理
在快速变化的环境中使用Zabbix,而不需要过度管理
(2)发现方式:
ip地址范围;
可用服务(ftp, ssh, http, ...)
zabbix_agent的响应;
snmp_agent的响应;
(3)网络发现通常包含两个阶段:discovery发现 和actions动作
① discovery:
Zabbix定期扫描网络发现规则中定义的IP范围;检查的频率对于每个规则都是可配置的
每个规则都有一组用于为IP范围执行的服务检查
由网络发现模块执行的服务和主机(IP)的每个检查都会生成一个发现事件
8种响应事件
② actions:网络发现中的事件可以触发action,从而自动执行指定的操作,把discvery events当作前提条件;
Sending notifications 发送通知
Adding/removing hosts 添加/删除主机
Enabling/disabling hosts 启用/禁用host
Adding hosts to a group 向组中添加主机
Removing hosts from a group 移除组中的主机
Linking hosts to/unlinking from a template 从模板链接主机或取消链接
Executing remote scripts 执行远程脚本
这些事件的配置还可以基于设备的类型、IP 、状态、上线/ 离线等进行配置
(4)网络发现:接口添加
网络发现中添加主机时会自动创建interface 接口
例如:
如果基于SNMP 检测成功,则会创建SNMP 接口
如果某服务同时响应给了agent 和SNMP ,则两种接口都会创建
如果同一种发现机制( 如agent) 返回了非唯一数据,则第一个接口被识别为默认,其它的为额外接口
即便是某主机开始时只有agent 接口,后来又通过snmp 发现了它,同样会为其添加额外的snmp 接口
不同的主机如果返回了相同的数据,则第一个主机将被添加,余下的主机会被当作第一个主机的额外接口
2、配置网络发现Network discovery
(1)准备一台可被扫描发现的主机
① 安装agent 段的包
[root@agent2 ~]# yum -y install zabbix-agent zabbix-sender
② 设置agent 配置,可以把之前设置好的agent的配置传过来
Hostname=agent2
Server=192.168.43.142
ServerActive=192.168.43.142
③ visudo 修改sudo的配置
#Defaults !visiblepw
zabbix ALL=(ALL) NOPASSWD: ALL
④ 开启服务
[root@agent2 ~]# systemctl start zabbix-agent
(2)设置自动发现规则discovery
配置-自动发现-创建自动发现规则
这里的ip范围给小一点,更新间隔设置为3s(生产中切勿尝试)
注释:
① key:zabbix_get -s 192.168.30.2 -p 10050 -k "system.hostname"
② 更新间隔:1h就好,不要扫描太过频繁,扫描整个网段,太废资源;这里为了实验,设为3s
(3)自动发现成功
(4)设置自动发现discovery 的动作action
a) 创建
b) 设置action动作
① 设置A条件,自动发现规则=agent2
② 设置B条件,自动发现状态=up
③ 要做什么操作
添加主机到监控
添加到主机群组
自动链接agent2到模板demo
启动主机
c)启用动作,查看效果
确实已经生效,添加主机成功,模板链接成功
(5)如果自己需要添加的主机已经扫描添加完成,就可以关闭网络扫描了,因为太耗资源
web监控
1、介绍
(1)介绍
① Web监控:监控指定的站点的资源下载速度,及页面响应时间,还有响应代码;
② 术语:
web Scenario: web场景(站点)
web page :web页面,一个场景有多个页面
內建key:要测一个页面,要测三个步骤(下边3个內建key)
③ 内建key:
web.test.in[Scenario,Step,bps]:传输速率
web.test.time[Scenario,Step]: 响应时长
web.test.rspcode[Scenario,Step]:响应码
2、创建设置web场景
(1)创建
(2)配置web 监测
① 点击步骤,设置web page web页面
a) 设置名为home page,URL为http://192.168.43.141/index.html 的web页面
b) 设置名为fpm status,URL为http://192.168.43.141/fpm-status 的web页面
c) 设置2个web页面成功
② 如果有特殊认证,也可以添加
3、查看测试
主动/被动监控
1、介绍
(1)主动/被动介绍
被动检测:相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;
主动检测:相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;
主动监控能极大节约监控server 的资源。
(2)zabbix_sender发送数据:实现人工生成数据,发给server端
① zabbix server上的某主机上,直接定义Item时随便定义一个不与其它已有key冲突的key即可,即item type为"zabbix trapper";
② 用法选项:
zabbix_sender
-z zabbix_server_ip
-p zabbix_server_port
-s zabbix_agent_hostname
-k key
-o value 值
zabbix_get
-s zabbix_agent_ip
-p zabbix_agent_port
-k key
2、设置一个通过內建key发送数据的主动监控
(1)agent端所需要基本配置:
ServerActive=192.168.43.142 给哪个监控server 发送数据
Hostname=agent 注意,这里的名字要与web页面中的主机名称配置相同,自己的主机名,假设主机定死了,不设置下一项
#HostnameItem= 如果自己的主机名易变动,这一项相当于key一样去匹配
注意:若后两项同时启用,下边一个选择生效
(2)设置一个主动监测
① 选择进程,每秒更改,
因为key:system.cpu.switches :上下文的数量进行切换,它返回一个整数值。为了监控效果,选择下一秒减上一秒的值作为监控
(3)已经有啦graph图形
3、设置一个通过命令zabbix_sender发送数据的主动监控
(1)配置一个zabbix traper(采集器) 的item 监控项
(2)agent 端手动发送数据
(3)监控到数据的变化
分布式监控
用新机子做
server---zabbix-server | 192.168.43.142 |
agent2----zabbix-agent | 192.168.43.143 |
proxy---zabbix-proxy | 192.168.43.144 |
使用proxy进行分布式监控
1、配置数据库
[root@proxy ~]# vim /etc/yum.repos.d/mariadb.repo
#写入以下内容:
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
#安装
[root@proxy ~]# yum install -y MariaDB-server MariaDB-client
#修改配置文件
[root@proxy ~]# vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON #跳过主机名解析
innodb_file_per_table = ON #
innodb_buffer_pool_size = 256M #缓存池大小
max_connections = 2000 #最大连接数
log-bin = master-log #开启二进制日志
#启动数据库
[root@proxy ~]# systemctl restart mariadb
#进入数据库进行数据初始化
[root@proxy ~]# mysql -p
Enter password: #直接回车
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.4.32-MariaDB-log 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)]> create database zabbix_proxy character set utf8 collate utf8_bin; # 创建数据库
MariaDB [(none)]> grant all on zabbix_proxy.* to 'zabbix'@'%' identified by 'zbxproxypass'; # 注意授权网段
MariaDB [(none)]> flush privileges; # 刷新授权
MariaDB [(none)]> \q
2、导入数据
[root@proxy ~]# rpm -ql zabbix-proxy-mysql #此时还没有装zabbix-proxy
未安装软件包 zabbix-proxy-mysql
#先去装一下zabbix-proxy
[root@proxy ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
获取https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
准备中... ################################# [100%])
软件包 zabbix-release-5.0-1.el7.noarch 已经安装
[root@proxy ~]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base epel extras mariadb nginx-stable updates zabbix
: zabbix-non-supported
Cleaning up list of fastest mirrors
[root@proxy ~]# yum install zabbix-proxy-mysql
#此时再来看一下
[root@proxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-5.0.39/schema.sql.gz | mysql -uzabbix -pzbxproxypass -h 192.168.43.128 zabbix_proxy
#-h 后边跟的是代理端的ip地址
3、配置proxy端
配置proxy端:
[root@proxy ~]# yum install -y https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
# 修改一下内容
ProxyMode=1 # 0为主动 1为被动
Server=服务端ip地址
SourceIP=发送采样信息的ip(可注释)
Hostname=proxy #主机名
ListenPort=10051 #proxy自己的监听端口
EnableRemoteCommands=1 #允许远程命令
LogRemoteCommands=1 #记录远程命令的日志
数据的配置
DBHost=数据库地址
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zbxproxypass
ConfigFrequency=30 #多长时间,去服务端拖一次有自己监控的操作配置;为了实验更快的生效,这里设置30秒,默认3600s
DataSenderFrequency=1 #每一秒向server 端发一次数据,发送频度
[root@proxy ~]# systemctl start zabbix-proxy
4、配置客户端
[root@agent2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=server端地址,proxy端地址
ServerActive=server端地址,proxy端地址
[root@agent2 ~]# systemctl restart zabbix-agent
5、web页面配置
注意,这里的代理程序名称,一定要与proxy配置文件中的Hostname相同
6、检查
观察之前配置的监控项是否依然可以接收数据
如果观察不到数据,去server端查看日志
[root@server ~]# tailf -50 /var/log/zabbix/zabbix_server.log
zabbix-server 监控自己,数据库,nginx
1、下载安装,配置agent
vim /etc/zabbix/zabbix_agentd.conf 配置agent
EnableRemoteCommands=1 允许远程命令
LogRemoteCommands=1 记录远程命令
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=server.along.com
2、自动生成Zabbix server 的主机
3、在主机中添加模板
4、启用Zabbix server
5、监控到数据