1. 编辑客户端配置文件/etc/zabbix/zabbix_agentd.conf
内容:
UnsafeUserParameters=1
# UserParameter=my.net.if[*], /usr/local/sbin/zabbix/net.sh $1 $2
UserParameter=process.nginx.memory, /tmp/shell/processstatus.sh nginx
UserParameter=process.nginx.cpu, /tmp/shell/processstatus.sh nginxcpu
UserParameter=process.mysql.memory, /tmp/shell/processstatus.sh mysql
UserParameter=process.mysql.cpu, /tmp/shell/processstatus.sh mysqlcpu
说明:增加这一行,其中UserParameter用来自定义键值my.net.if,有参数时,需要加[*],没有参数则省略[*];逗号后面为脚本或命令路径,以及参数变量
格式:
UserParameter=key[*],command
key为唯一值,[*]表示参数。
command为要执行的命令或脚本,key的[*]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令。返回结果
数据最大为512KB
2. 编辑脚本/tmp/shell/processstatus.sh,并授执行权限+x
解释:
VSZ 占用虚拟内存大小,KB
RSS 占用真实内存大小,KB
START 开始时间
TIME 占用CPU时间
? 当前终端下 运行的命令
STAT 状态
S sleep休眠中
s 主进程或父进程
< 优先级比较高
N 优先级低
+ 前台运行的进程
R running正在运行的进程
L 内存中被锁
l 多线程
Z 僵尸进程
X 死掉的进程
T 人为暂停的进程
D 表示不能终端的进程,如I/O
内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#! /bin/bash
##
mysql() {
ps
aux|
grep
'mysqld'
|
grep
-
v
"grep"
|
awk
'{sum+=$6}; END{print sum}'
}
mysqlcpu() {
ps
aux|
grep
'mysqld'
|
grep
-
v
"grep"
|
awk
'{sum+=$3}; END{print sum}'
}
nginx() {
ps
aux|
grep
'nginx'
|
grep
-
v
"grep"
|
awk
'{sum+=$6}; END{print sum}'
}
nginxcpu() {
ps
aux|
grep
'nginx'
|
grep
-
v
"grep"
|
awk
'{sum+=$3}; END{print sum}'
}
case
"$1"
in
mysql)
mysql
;;
mysqlcpu)
mysqlcpu
;;
nginx)
nginx
;;
nginxcpu)
nginxcpu
;;
*)
echo
"Usage: $0 (mysql|mysqlcpu|nginx|nginxcpu)"
;;
esac
|
3. 重启客户端,并在服务端测试脚本是否生效
/etc/init.d/zabbix-agent restart
zabbix_get -s 172.16.115.162 -p10050 -k process.mysql.memory
4. 服务端,web上依次添加监控项
5. 查看结果