zabbix基础使用(下)
1. 自定义图形
1.1 登录数监控创建图形
查看图形
1.2 内存使用百分比创建图形
1.3 在一张图上显示多个监控项
1.4 聚合图形
将多个表集成到一张图上
如果这里是空白的话,在模版中找到聚合图形,随便创建一个就可以
2.自定义模版
2.1 nginx配置七种状态php
[root@WEB01 ~]#vim /etc/nginx/conf.d/wp.conf
server {
listen 80 default;
server_name _;
root /code/wp;
location / {
index index.php index.html;
}
location /nginx_status {
stub_status;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
~
~
2.2 自定义取值
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
3 3 3
Reading: 0 Writing: 1 Waiting: 0
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status|awk 'NR==1{print $NF}'
1
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $1}'
15
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $2}'
16
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $3}'
17
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status|awk 'NR==4{print $2}'
0
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status|awk 'NR==4{print $4}'
1
[root@WEB01 /code]#curl -s 127.0.0.1/nginx_status|awk 'NR==4{print $6}'
0
[root@WEB01 ~]#cat /etc/zabbix_agentd.conf.d/nginx.conf
UserParameter=nginx_active,curl -s 127.0.0.1/nginx_status|awk 'NR==1{print $NF}'
UserParameter=nginx_accept,curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $1}'
UserParameter=nginx_handled,curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $2}'
UserParameter=nginx_requests,curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $2}'
UserParameter=nginx_reading,curl -s 127.0.0.1/nginx_status|awk 'NR==4{print $2}'
UserParameter=nginx_writing,curl -s 127.0.0.1/nginx_status|awk 'NR==4{print $4}'
UserParameter=nginx_waiting,curl -s 127.0.0.1/nginx_status|awk 'NR==4{print $6}'
复习一下nginx七种状态
1. Acitve connections(当前活跃连接数)
> 含义:当前所有处于活动状态的客户端连接数(包括 Reading + Writing + Waiting)
> 健康指标:
正常范围:根据服务器配置而定
异常:持续接近 worker_connections 限制值(需调整配置)
2. Server 统计行 (3个累计值)
2.1 accepts
>含义:自nginx启动后,接受的客户端连接总数
>异常行为:如果远大于 handled,可能有连接被丢弃
2.2 handled
>含义:成功处理的连接数
>计算公式:accepts - dropped(丢弃的)
>异常情况:handled < accepts 时表示有连接被拒绝
2.3 requests
>含义:处理的**总请求数**
>异常情况:单连接可能产生多请求
4. 实时连接状态 (3个瞬时值)
3.1 Reding
>含义:Nginx 正在读取客户端请求头的连接数
>健康指标:过高可能表示客户端网络慢或遭受慢速攻击
3.2 Writing
>含义:Nginx 正在向客户端发送响应的连接数
>健康指标:过高可能表示响应过大或客户端接收慢
3.3 Waiting
>含义: 保持连接但当前无活动的空闲连接
>健康指标: 高值表示 Keep-Alive 连接复用良好
2.3 web01直接关联模版
2.4 监视php状态信息
1. 开启php状态配置文件
[root@WEB01 ~]#grep -n 'pm.status_path = /status' /etc/php-fpm.d/www.conf
241:pm.status_path = /status
2. nginx配置文件写入路径
server {
listen 80 default;
server_name _;
root /code/wp;
location / {
index index.php index.html;
}
location /status {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@WEB01 ~]#systemctl restart nginx php-fpm.service
3. 测试取值:
[root@WEB01 ~]#curl 127.0.0.1/status
pool: www
process manager: dynamic
# 进程管理方式,建议上面这动态分配进程,只要内存够用,进程不够用了,她会自己加。
start time: 08/Jun/2025:15:50:55 +0800
start since: 5
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
# 达到进程上限次数:因 pm.max_children 限制而拒绝连接的次数,应该为0(重要)
slow requests: 0
服务端测试取值
zabbix_get -s 172.16.1.7 -k php-idle
4. 写入配置文件
5. zabbix页面配置
创建php模版
创建监控项,记得用克隆
触发器配置
图形配置
关联到主机模版
2.5 监控文件是否被修改(有问题)
点击下面按钮可以进行对监控项,进行测试,立即
2.6 使用脚本方式自定义监控性
1. 使用case脚本传参的方式获取七种状态
[root@web01:~]#mv nginx.sh
/etc/zabbix_agentd.conf.d/
[root@web01:~]#cat
/etc/zabbix_agentd.conf.d/nginx.sh
#!/bin/sh
case $1 in
active)
curl -s 127.0.0.1/nginx_status|awk
'NR==1{print $NF}'
;;
accepts)
curl -s 127.0.0.1/nginx_status|awk
'NR==3{print $1}'
;;
handled)
curl -s 127.0.0.1/nginx_status|awk
'NR==3{print $2}'
;;
requests)
curl -s 127.0.0.1/nginx_status|awk
'NR==3{print $3}'
;;
*)
echo "Usage: $0
[active|accepts|handled|requests]"
esac
2. 给脚本执行权限
[root@web01:~]#chmod +x /etc/zabbix_agentd.conf.d/nginx.sh
3. 修改配置文件自定义key
[root@web01:zabbix_agentd.conf.d]#cat nginx.conf
UserParameter=nginx.[*],/etc/zabbix_agentd.conf.d/nginx.sh $1
重启生效
[root@web01:zabbix_agentd.conf.d]#systemctl restart zabbix-agent
4. 服务端测试
[root@zabbix:~]#zabbix_get -s 172.16.1.7 k nginx.[active]
1
[root@zabbix:~]#zabbix_get -s 172.16.1.7 k nginx.[accepts]
10782
[root@zabbix:~]#zabbix_get -s 172.16.1.7 k nginx.[handled]
10787
3. zabbix通过SNMP监控网络设备
3.1 客户端安装snmp
网络设备硬件信息表示方式两种:
OID表述方法 数字表示 .1.3.6.1.2.1.25.2.2.0 # 获取内存大小
MIB表示方法 字符串表示 hrMemorySize # 获取内存大小
OID和MIB大全
https://www.cnblogs.com/cqx6388/p/17235747.html
SNMP协议经过UDP端口161和162进行通讯。
161端口:SNMP Message
162端口:SNMP Trap Meaasge
1. 客户端安装snmp
[root@WEB01 ~]#yum -y install net-snmp
2. 修改配置
[root@WEB01 ~]#sed -n '41p;55p;117p' /etc/snmp/snmpd.conf
com2sec notConfigUser default public
view systemview included .1.
group notConfigGroup v2c notConfigUser
3. 启动snmp 端口161
[root@WEB01 ~]#systemctl start snmpd
3.2 客户端安装snmp命令
-v 指定SNMP版本
2c 指定SNMP版本为V2
-c 指定团体名称
[root@zabbix ~]#yum -y install net-snmp-utils
服务端取值测试
[root@zabbix ~]#snmpwalk -v2c -c public 10.0.0.7 SysName
SNMPv2-MIB::sysName.0 = STRING: WEB01
[root@zabbix ~]#snmpwalk -v2c -c public 10.0.0.7 .1.3.6.1.2.1.25.2.2.0
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 970912 KBytes
[root@zabbix ~]#snmpwalk -v2c -c public 10.0.0.7 hrMemorySize
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 970912 KBytes
3.3 测试通过后,页面使用snmp协议监控
3.4 交换机配置snmp协议以及团体名称
1. 进入配置模式:
Router#configure terminal
Enter configuration commands, one per
line. End
with CNTL/Z.
Router(config)#
2. 使用以下命令启用只读 (RO) 社区字符串:
Router(config)#snmp-server community
public RO
其中public是只读社区字符串。
Router(config)#exit
Router#
4. 自动化监控
4.1 zabbix自动发现
zabbix服务端通过扫描地址段的方式自动发现存活的服务器
发现服务器后进行动作处理 添加主机 关联模板 关联报警等
缺点1: 扫描速度慢 server压力较大
缺点2: 所有扫描到的客户端只能使用统一模板 比如web和
数据库使用模板是不同的 还需要手动进行配置
4.2 自动注册(主动模式)
zabbix服务端: 默认主动模式 我主动去抓取客户端的数据 10s
[root@WEB01 ~]#vim /etc/zabbix_agentd.conf
ServerActive=172.16.1.71 # 主动注册服务器地址
Hostname=web01 # 必须设置为主机名称
注意: 先删除自动发现功能防止冲突
5. zabbix proxy 代理
5.1 安装部署 zabbix_proxy 代理
1. 下载mysql8.0版本
2.
3. 解压数据库
[root@web01:~]#tar xf mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar
3.rpm安装
[root@web01 ~]# rpm -ivh mysql-community-common-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-client-plugins-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-libs-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-client-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-icu-data-files-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-devel-8.0.36-1.el8.x86_64.rpm
[root@lb02 ~]#rpm -ivh mysql-community-server-8.0.36-1.el8.x86_64.rpm
4. 启动数据库
systemctl start mysqld
6. 进入数据库修改密码
查看随机生成的密码
[root@web01:~]#cat /var/log/mysqld.log |grep root@local
修改密码
[root@web01:~]#mysql -uroot -p'k;k+S1h+zNuu'
mysql> alter user root@localhost identified by 'Oldboy123.com';
6. 创建zabbix库
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'Oldboy123.com';
mysql> ALTER USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Oldboy123.com';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
7. 下载zabbix源码 导入proxy库
[root@web01:~]#cd zabbix-5.0.43/database/mysql/
[root@web01:mysql]#mysql -uzabbix -pOldboy123.com zabbix < schema.sql
8. 安装编译依赖
[root@lb02 ~/zabbix-5.0.47]#yum -y install libxml2 libxml2-devel net-snmp-devel curl-devel libevent-devel
配置
[root@lb02 ~/zabbix-5.0.47]#./configure --prefix=/usr/ --enable-proxy --with-net-snmp --with-mysql
编译并安装
[root@lb02 ~/zabbix-5.0.47]#make && make install
9. 修改proxy配置文件连接数据库信息
[root@lb02 /usr/etc]#vim zabbix_proxy.conf
DBName=zabbix
DBUser=zabbix
DBPassword=Oldboy123.com
Server=10.0.0.71
Hostname=sh_proxy
10. 启动zabbix_proxy
[root@lb02 ~]#zabbix_proxy
12. 查看端口
netstat -tnulp
5.2 客户端内网ip指向代理
[root@WEB01 ~]#egrep '172.16.1.6|web01' /etc/zabbix_agentd.conf
Server=172.16.1.6
ServerActive=172.16.1.6
Hostname=web01
5.3 zabbix界面添加proxy代理
5.4 查看proxy日志
[root@lb02 ~]#find / -type f -name zabbix_proxy.log
[root@lb02 ~]#cat /tmp/zabbix_proxy.log
6. 监控java程序
6.1 web端
1. 下载jdk
2. 下载tomcat
3. 移动
[root@WEB01 ~]#mv apache-tomcat-9.0.104 /usr/local/tomcat
[root@WEB01 ~]#cd /usr/local/tomcat/
4. 配置tomcat开启jmx协议
惨痛教训!后面不能有空格,要不然tomcat起不来
#!/bin/sh
CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Djava.rmi.server.hostname=10.0.0.7 \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
6.2 java网关配置
[root@zabbix ~]#egrep "^Java|StartJava" /usr/local/etc/zabbix_server.conf
JavaGateway=10.0.0.51
JavaGatewayPort=10052
### Option: StartJavaPollers
StartJavaPollers=2
6.3 在lb02安装java gateway
[root@lb02 ~]#rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@lb02 ~]#yum -y install zabbix-java-gateway
[root@lb02 ~]#systemctl start zabbix-java-gateway.service
6.4 页面监控tomcat程序
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果