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程序