目录
一. 自定义键介绍
二. 制作步骤
1. 添加无可变部分参数
2. 添加有可变参数
3. 使用用户参数监控php-fpm 服务的状态
三. Web页面导入应用监控
四. Web监控
主要功能和操作:
开启方式
官方预定义监控项文档https://www.zabbix.com/documentation/6.4/zh/manual/config/items/itemtypes/zabbix_agent
一. 自定义键介绍
在Zabbix中,UserParameter
是一个非常重要的功能,它允许用户定义自定义参数,从而监控那些Zabbix标准监控项之外的服务或应用程序。通过UserParameter
,用户可以执行脚本或命令来收集数据,然后将这些数据返回给Zabbix进行进一步的处理和监控。
使用UserParameter
的基本步骤如下:
-
配置Zabbix Agent:在Zabbix agent的配置文件(通常是
/etc/zabbix/zabbix_agentd.d/zabbix_agentd.d/
)目录中定义UserParameter
。通常文件名没有特定要求,但重要的是确保文件具有.conf
扩展名,这样 Zabbix agent 在启动时会自动加载该文件中的配置。配置格式如下:复制
UserParameter=key[*],command
其中
key
是你在Zabbix前端定义的键值,[*]
表示参数的可变部分,command
是执行脚本或命令的路径。 -
编写脚本:根据你的监控需求,编写相应的脚本来收集数据。脚本需要能够接收来自Zabbix agent的参数,并返回文本格式的输出。
-
重启Zabbix Agent:在修改了配置文件并添加了自定义参数后,需要重启Zabbix agent服务以使配置生效。
-
在Zabbix前端添加监控项:在Zabbix前端,创建一个新的监控项,并选择类型为“Zabbix agent”或“Zabbix agent (active)”,然后在“Key”字段中输入你在
UserParameter
中定义的键值。 -
测试监控项:在Zabbix前端,测试你添加的监控项是否能够成功获取数据。
通过这种方式,Zabbix的监控能力可以得到极大的扩展,可以监控几乎任何可以通过脚本或命令行工具获取数据的系统指标或应用程序状态。需要注意的是,在使用UserParameter
时,应当确保执行的脚本或命令是安全的,不会对系统稳定性造成影响,同时也要保证数据收集的效率,避免对系统性能产生不良影响。
二. 制作步骤
首先准备一个agent端和server端,并进行监控。
1. 添加无可变部分参数
例如我要取已使用的内存量:
#使用这个bash命令可以获取到
[root@web1 ~]# free -k
total used free shared buff/cache available
Mem: 3714688 463632 2834340 9468 655160 3251056
Swap: 839676 0 839676
[root@web1 ~]# free | awk '/^Mem/{print $3}'
463632
现在我们将这个自定义键写入这个memory_usage.conf文件里
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf
#将这个自定义Key添加写入这个文件里
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
重启agent服务
[root@web1 ~]# systemctl restart zabbix-agent
在server端使用命令测试(server端需要下载zabbix_get,agent端需要下载)
[root@zabbix ~]# zabbix_get -s 192.168.226.29 -k memory.used
463632
2. 添加有可变参数
现在我们以Linux 系统的内存使用情况为例
[root@web1 ~]# cat /proc/meminfo
MemTotal: 3714688 kB
MemFree: 2830252 kB
MemAvailable: 3246988 kB
Buffers: 2708 kB
Cached: 602060 kB
SwapCached: 0 kB
Active: 137764 kB
Inactive: 511872 kB
Active(anon): 45016 kB
Inactive(anon): 9320 kB
Active(file): 92748 kB
Inactive(file): 502552 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 839676 kB
SwapFree: 839676 kB
Zswap: 0 kB
Zswapped: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 44868 kB
Mapped: 33976 kB
Shmem: 9468 kB
KReclaimable: 50416 kB
Slab: 106580 kB
SReclaimable: 50416 kB
SUnreclaim: 56164 kB
KernelStack: 5728 kB
PageTables: 2248 kB
SecPageTables: 0 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2697020 kB
Committed_AS: 173100 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 55704 kB
VmallocChunk: 0 kB
Percpu: 49152 kB
HardwareCorrupted: 0 kB
AnonHugePages: 4096 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
Unaccepted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 130880 kB
DirectMap2M: 4063232 kB
DirectMap1G: 2097152 kB
现在我们将这个自定义键写入这个memory_usage.conf文件里
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf
#将这个自定义Key添加写入这个文件里
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'
# $$2:表示不是前边调位置参数的$2 ,而是awk 的参数$2
重启agent服务
[root@web1 ~]# systemctl restart zabbix-agent
在server端使用命令测试
[root@zabbix ~]# zabbix_get -s 192.168.226.29 -k memory.stats[MemTotal]
3714688
[root@zabbix ~]# zabbix_get -s 192.168.226.29 -k memory.stats[DirectMap4k]
130880
3. 使用用户参数监控php-fpm 服务的状态
在agent 端 :
下载,设置php-fpm
[root@web1 ~]# yum -y install php-fpm
打开php-fpm的状态页面
[root@web1 ~]# vim /etc/php-fpm.d/www.conf
#修改如下参数
user = nginx
group = nginx
listen = 127.0.0.1:9000
pm.status_path = /status #php-fpm 的状态监测页面
ping.path = /ping #ping 接口,存活状态是否ok
ping.response = pong #响应内容pong
开启服务
[root@web1 ~]# systemctl enable --now php-fpm
下载nginx
[root@web1 ~]# yum install -y nginx
设置nginx ,设置代理php,和php-fpm的状态页面匹配
[root@web1 ~]# 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 ~* /(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; #访问这个页面就不用记录日志了
}
测试访问
[root@web1 ~]# curl 127.0.0.1/status
pool: www
process manager: dynamic
start time: 06/Jul/2024:15:33:15 +0800
start since: 152
accepted conn: 2
listen queue: 0
max listen queue: 0
listen queue len: 511
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
现在我们将这个自定义键写入这个memory_usage.conf文件里
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/memory_usage.conf
#将这个自定义Key添加写入这个文件里
UserParameter=php.status[*],curl -s http://127.0.0.1/status | awk '/^$1/{print $NF}'
重启agent服务
[root@web1 ~]# systemctl restart zabbix-agent
在server端使用命令测试
[root@zabbix ~]# zabbix_get -s 192.168.226.29 -k "php.status[pool]"
www
[root@zabbix ~]# zabbix_get -s 192.168.226.29 -k "php.status[idle processes]"
4
三. Web页面导入应用监控
创建模板组
创建模板
找到刚创建的模板
添加监控项
利用上方自定义的key来创建监控项
给主机应用模板
四. Web监控
Zabbix 的 Web 监控是通过 Zabbix 的 Web 界面来实现对监控系统的管理、配置和数据查看的过程。以下是关于 Zabbix Web 监控的一些主要功能和操作:
主要功能和操作:
-
登录和用户管理:
- 用户可以通过 Web 界面登录到 Zabbix,根据其权限访问不同的功能和数据。
- 管理员可以配置用户权限、角色和访问控制列表(ACL)。
-
仪表盘和概览:
- Zabbix 提供了个性化的仪表盘功能,可以根据用户的需求自定义显示的监控数据和图表。
- 仪表盘可以展示实时的监控状态和数据趋势,方便用户快速了解系统的健康状态。
-
配置管理:
- 主机和设备管理:管理员可以添加、编辑和删除监控的主机和设备。
- 监控项和模板:定义要监控的具体数据项,并通过模板进行统一管理。
- 触发器和警报:设置监控数据异常时的触发条件和警报规则,确保及时响应和处理。
- 自动发现:通过自动发现功能,自动添加新的主机或服务到监控系统中,并应用预定义的监控配置。
-
监控数据查看:
- 实时监控:通过图表和数据表格查看实时收集的监控数据,例如 CPU 使用率、内存、网络流量等。
- 历史数据:查看和分析历史性能数据,进行性能趋势分析和问题排查。
-
警报和通知:
- 配置警报规则和动作,定义监控数据超过阈值时的通知方式和响应策略。
- 支持多种通知方式,如电子邮件、短信、Slack 等,确保管理员和团队及时了解和响应监控事件。
-
报表和导出:
- 生成和导出监控数据报表,帮助管理员和团队进行定期性能分析和报告。
开启方式
填入的URL就用上面下载的PHP服务的监控页面