创建模板

QQ_1722762642396

QQ_1722762853490

QQ_1722766153284

自定义监控实例

1
2
1.监控用户登录数量
2.监控服务是否存活

1.监控用户登录数量

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
# 1.了解监控需求,获取监控数据
## 零宽断言
[root@web02 ~]# ifconfig eth0|grep -Po '[1-9][0-9]*\.\d+\.\d+\.\d+(?= netmask)'
[root@web02 ~]# uptime|grep -Po '\d+(?= user)'

# 2.修改zabbix-agent的配置文件(使用zabbix-agent配置文件中的 UserParameter= 定义监控项)
语法:
Format: UserParameter=<key>,<shell command>
Format: UserParameter=监控项名字,shell命令
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=user.count,uptime|grep -Po '\d+(?= user)'

##建议以后直接创建conf文件(类似nginx子配置文件)
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/userlogin.conf
UserParameter=user.count,uptime|grep -Po '\d+(?= user)'

# 3.重启zabbix-agent
[root@web01 ~]# systemctl restart zabbix-agent

# 4.在zabbix-server上(zabbix-get)测试,是否可以接收到zabbix-agent获取的数据
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-get-5.0.0-1.el7.x86_64.rpm

[root@zabbix5 ~]# zabbix_get -s 172.16.1.7 -k user.count
1

添加监控项

1
2
#统一添加到创建的模板里,每次监控都不需要单独创建监控项,而是直接选择这个模板就行
找到创建的自定义模板>监控项>创建监控项

QQ_1722766187140

QQ_1722766273027

QQ_1722771986050

添加触发器

如何做到报警提醒?

QQ_1722772037897

QQ_1722772224830

添加表达式

1
2
3
4
插入表达式后,添加数据,表达式选择>   图1错了

{HOST.NAME}:可见的名称
{HOST.IP}:IP地址

QQ_1722772470739

QQ_1722772899528

1
使用变量

QQ_1722773526820

1
2
#关联模板
配置>主机>web01-10.0.0.7>模板>选择自定义模板

QQ_1722772708350

==测试==

QQ_1722772812337

QQ_1722773021302

添加图表

QQ_1722773128565

1
创建图形

QQ_1722773144333

QQ_1722773217580

QQ_1722773354712

监控服务状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1.获取数据
[root@web01 ~]# netstat -lntup|grep -wc "8080"
1
# 2.修改配置文件
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/port.conf
UserParameter=tcp.port.ssh,netstat -lntup|grep -wc "22"
UserParameter=tcp.port.http,netstat -lntup|grep -wc "80"
UserParameter=tcp.port.tomcat,netstat -lntup|grep -wc "8080"

#3,重启客户端
systemctl restart zabbix-agent.service

#参数化定义监控项
[root@web01 ~]#vim /etc/zabbix/zabbix_agentd.d/port.conf
UserParameter=tcp.port[*],ss -lntup|grep -wc "$1"
[root@web01 ~]# systemctl restart zabbix-agen


#如何获取值?
[root@zabbix5 fonts]# zabbix_get -s 172.16.1.7 -k tcp.port[80]
0

依次添加监控项

QQ_1722774448589

QQ_1722774470909

QQ_1722774493661

QQ_1722775398498

排错

QQ_1722774829533

QQ_1722774871851

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@zabbix5 fonts]# zabbix_get -s 172.16.1.7 -k tcp.port.http
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)



报错原因:定义监控项时,定义的数据类型是数字,结果获取到的值含有字符串
解决方案:将zabbix用户提权
[root@web01 ~]# visudo
zabbix ALL=(ALL) NOPASSWD: ALL

# 监控命令:
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/port.conf
UserParameter=tcp.port.ssh,sudo netstat -lntup|grep -wc "22"
UserParameter=tcp.port.http,sudo netstat -lntup|grep -wc "80"
UserParameter=tcp.port.tomcat,sudo netstat -lntup|grep -wc "8080"
# 或者
UserParameter=tcp.port.ssh,ss -ltnup|grep -wc 'sshd'
# 或者
给netstat命令加setuid权限

添加触发器

1
表达式添加,选择nginx的触发器,阈值为0

QQ_1722776310520

QQ_1722776258077

监控nginx状态页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vim /etc/nginx/conf.d/webapp.conf
server{
listen 80;
server_name _;
location / {
root /code/webapp;
index index.html;
}
location /status {
stub_status on;
}
}

http://10.0.0.7/status
http://webapp.com/status
#注:如果使用域名,物理机和虚拟机都需要hosts域名解析

QQ_1722778620045

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 1.创建存放监控脚本目录
[root@web01 ~]# mkdir /etc/zabbix/zabbix_agentd.d/scripts
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh

NGINX_PORT=80 #如果端口不同仅需要修改脚本即可,否则修改xml很麻烦
NGINX_URL=http://172.16.1.7/status

nginx_active(){
/usr/bin/curl -s "${NGINX_URL}" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "${NGINX_URL}" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "${NGINX_URL}" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "${NGINX_URL}" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "${NGINX_URL}" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "${NGINX_URL}" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "${NGINX_URL}" |awk 'NR==3 {print $3}'
}
case $1 in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac

# 授权
[root@web01 ~]# chmod +x /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh

# 修改zabbix-agent配置文件
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh $1
#重启客户端
[root@web01 ~]# systemctl restart zabbix-agent

依次添加监控项

QQ_1722780577877

QQ_1722780778047

添加图形

QQ_1722780847328