(三)zabbix集群监控

文章目录

zabbix集群监控

  • 第1个维度:用户访问流程维度(数据流/业务流)

  • 第2个维度:某个层次上/某个服务器上具体监控的内容:模板+自定义监控

监控内容

监控内容 详细内容 具体实现落地
5 API 接口监控 监控指定 API 接口(如 zbx api),含内部接口、外部第三方接口 curl 命令、web 场景 / 监测
4 业务、应用、app 监控 检查应用可用性,通过测试代码页面(如 info.php、mysqli.php)验证应用状态 curl 命令、web 场景 / 监测
3 服务监控 1. 基础项:进程、端口 2. 专有项:各服务的专属状态3. 日志项:错误日志近 2000 行中的异常关键词(error/failed/exception) 模板或根据具体要求自定义监控
2 系统监控 资源类:CPU、负载、内存、磁盘、网络、带宽、IO安全类:关键文件变化(aide)、进程、僵尸进程、非堡垒机登录 模板 + 自定义(覆盖僵尸进程、异地登录、aide 校验、secure 日志等场景)
1 硬件监控 物理服务器专属项:温度、风扇转速、RAID 状态 ipmi/megacli 查询 RAID

具体监控内容

监控内容 详细内容 具体实现落地
DNS 解析是否 OK 自定义监控 - ping/dig/nslookup/......域名:whois baidu.com过滤过期证书:curl -Lsv www.baidu.com -o /dev/null 过滤 expire date 过期、openssl 命令检查
CDN 是否可用、命中率、带宽、流量 登录对应 cdn 页面检查:命令中率、流量、带宽分布式 ping商业:监控宝、听云免费网站:www.17ce.comping.chinaz.com开源软件:smokeping
防火墙和网络设备 监控流量、带宽、端口 snmp 协议
负载 ngx 服务情况、证书过期、网站访问量、并发 ngx/haproxy/keepalived 状态:模板证书:模板、自定义监控网站访问量(运营):ip/pv/uv (第三方插件 / 百度统计 / 自建 matomo)并发:统计 80/443 端口连接数负载均衡健康检查:upstream_check 自定义监控日志:访问日志 (状态码)、错误日志 (异常关键词数量)服务:ngx/keepalived (vip 数量、备节点 vip 状态)
web 主要监控服务情况 具体服务使用对应模板即可:ngxphptomcat (war)/jar 包 - 自定义监控
数据库 redis、mysql 模板即可,写入内容、读取写入的内容
存储 nfs 自定义监控:存储空间、可用性(模拟挂载、创建文件校验)
备份 备份的数据量 自定义监控:备份存在性、发送邮件通知、备份占用空间
  • 按照用户访问流程,运维角度,开发角度按照顺序逐个进行监控
  • 辅助每个节点,硬件监控(如果有),系统监控(必须),服务监控(如果有),业务监控(如果有),API监控(如果有)

DNS监控

DNS 监控 命令或方法
全国 / 全世界访问(拨测) 免费拨测网站 / 阿里云拨测工具
域名 DNS 是否可用 nslookup/xxx 命令查询解析状态
域名过期 输出域名剩余有效时间
https 证书过期 输出证书剩余有效时间

拨测

  • 涉及到DNS解析,CDN测试,网站访问
  • 不仅要节点访问(zabbix-server服务端上面的案例),1对1访问
  • 分布式多对1访问,避免某个或某些地区无法访问

阿里云一次性拨测工具

搜索cms

第三方免费网站

itdog

自建搭建:全国各地服务器+smokeping

查询DNS是否可用

  • 由于没有自建DNS服务器先将查询DNS是否可用这个操作放到zabbix服务端
shell 复制代码
#1.编写脚本
#列出域名二级和三级域名
#脚本传参+nslookup命令+判断返回值即可
cat  > /server/scripts/check_dns.sh <<'EOF'
#!/bin/bash
##############################################################
# File Name:/server/scripts/check_dns.sh
# Version:V1.0
# Author:csq
# Organization: www.chenshiquan.xyz
# Desc:
##############################################################
#1.vars
url=$1

#2.判断是否为域名
##检查nslookup命令是否存在
which nslookup >/dev/null 2>&1 || {
	yum install -y bind-utils
}
#3.检查
if nslookup $url >/dev/null 2>&1 ;then
	#输出1表示可以使用
	echo "1"
else
	echo "0"
fi
EOF

#2.修改配置文件
cat >> /usr/local/zabbix/etc/zabbix_agentd.conf.d/dns.conf <<'EOF'
UserParameter=check.dns[*],bash /server/scripts/check_dns.sh "$1"
EOF

#3.重启zabbix_agent
systemctl restart zabbix_agent

#4.zabbix服务端测试(返回1表示可以使用)
zabbix_get -s 127.0.0.1 -k check.dns[www.baidu.com]
##后续
创建监控项、触发器、创建模板DNS、关联 zabbix_server机器

检查域名/证书剩余时间

shell 复制代码
#1.编写域名剩余时间脚本
cat  > /server/scripts/check_https_expire.sh <<'EOF'
#!/bin/bash
##############################################################
# File Name:/server/scripts/check_https_expire.sh
# Version:V1.0
# Author:csq
# Organization: www.chenshiquan.xyz
# Desc:
##############################################################
export LANG=en_US.UTF-8

# 检查域名过期
check_domain() {
    local expire_date=$(whois $url | egrep "Expiry|Expiration" | awk -F": " '{print $2}')
    local expire_date_second=$(date -d "${expire_date}" +%s)
    local date_second_now=$(date +%s)
    local date_expire_days=$(echo "(${expire_date_second} - ${date_second_now})/60/60/24" | bc)
    echo "${date_expire_days}"
}

# 检查证书过期
check_https() {
    local expire_date=$(curl -v "https://${url}" 2>&1 | grep expire | awk -F ": |GMT" '{print $2}')
    local expire_date_second=$(date -d "${expire_date}" +%s)
    local date_second_now=$(date +%s)
    local date_expire_days=$(echo "(${expire_date_second} - ${date_second_now})/60/60/24" | bc)
    echo "${date_expire_days}"
}

main() {
    choice=$1
    url=$2
    case "${choice}" in
        domain)
            check_domain ;;
        https)
            check_https ;;
    esac
}

# 执行主函数(接收命令行参数)
main $*
EOF

#2.修改配置文件
cat >> /usr/local/zabbix/etc/zabbix_agentd.conf.d/dns.conf <<'EOF'
UserParameter=check.dns[*],bash /server/scripts/check_dns.sh "$1"
UserParameter=check.domain_https[*],bash /server/scripts/check_https_expire.sh "$1" "$2"
EOF
#3.重启agent生效配置文件
systemctl restart zabbix_agent
#4.测试
zabbix_get -s localhost -k check.domain_https[domain,chenshiquan.xyz]
zabbix_get -s localhost -k check.domain_https[https,chenshiquan.xyz]

##后续
创建监控项、触发器、创建模板、关联 zabbix_server机器

CDN监控

  • 每日带宽,web页面或api监控
  • 每日流量,web页面或api监控
  • CDN命中率,不低于90%,web页面或api监控

防火墙

waf防火墙

  • Post请求 uri异常200
  • 蜜罐
  • iptables直接看规则即可,开启或关闭
  • 公有云防火墙查看规则即可
  • 硬件防火墙通过snmp监控即可

负载

分层 监控对象 具体实现 / 说明
api 接口层 应用代码 -
业务层 - -
服务层 ngx/haproxy/vs/keepalived 模板;补充访问日志、错误日志;状态开发(as-sn)每种状态数量、端口、进程
系统层 cpu、内存、磁盘、网络、io、进程 zabbix 模板 + 自定义监控(含僵尸进程数量、连接状态信息)
硬件层 硬件状态 ipmi/megacli 查询 RAID

系统层

  • 模板Linux by zabbix agent(CPU、内存、负载、网络、磁盘读写、登陆用户、运行时间)
  • 补充 僵尸进程数、挂起进程数、文件是否发生变化aide --check 、用户是否来自于堡垒机、网络连接状态

CPU/负载核心参数

监控参数 作用说明
CPU idle time(CPU 空闲时间占比) 反映 CPU 空闲资源比例:占比过低(如 < 20%)说明 CPU 负载过高,应用 / 系统进程占用过多
CPU system time(CPU 系统态时间占比) 反映内核进程的 CPU 占用:占比过高(如 > 30%)可能是内核线程、驱动或系统调用异常
CPU user time(CPU 用户态时间占比) 反映应用程序的 CPU 占用:占比过高说明业务进程(如 Java、PHP)消耗 CPU 资源过多
System load average (1m/5m/15m)(系统平均负载) 反映 CPU / 磁盘 / 网络的综合压力:1 分钟负载持续高于 CPU 核心数,说明系统资源不足

内存核心参数

这是 Zabbix 监控系统中Linux 内存监控的核心指标项,整理为对应参数、作用的表格如下:

监控项名称 作用说明
Available memory 表示系统实际可分配给新进程的可用内存(包含可回收的缓存、缓冲区),是判断内存是否充足的核心指标:若该值持续过低,需排查内存泄漏或高占用进程
Available memory in % 可用内存占总内存的比例,更直观地反映内存剩余资源的相对占比:占比<20% 时,说明内存资源已较为紧张
Memory utilization 内存的已使用比例(包含缓存、缓冲区),用于快速判断内存整体占用程度:占比>90% 且持续上升时,系统面临 OOM(进程被终止)的风险
Total memory 系统物理内存的总容量,是评估内存资源基准的基础指标:需结合可用内存、已用比例,判断是否需要扩容

磁盘核心参数

监控项名称 关键作用说明
sda: Disk average queue size (avgqu-sz) 磁盘 IO 请求的平均等待队列长度:队列越长,说明磁盘处理 IO 请求的压力越大(队列 > 2 持续上升时,磁盘是系统瓶颈)
sda: Disk utilization 磁盘繁忙时间占比:直接反映磁盘的负载程度(利用率 > 80% 且持续上升,说明磁盘处于高负载状态)
sda: Disk read request avg waiting time (r_await) 磁盘读请求的平均等待时间:时间越长,说明读 IO 的延迟越高(通常应 < 5ms,持续升高需排查磁盘性能)
sda: Disk write request avg waiting time (w_await) 磁盘写请求的平均等待时间:时间越长,说明写 IO 的延迟越高(通常应 < 5ms,持续升高需排查磁盘或写入负载)
sda: Disk read rate 磁盘读请求的速率(单位:i/s):反映磁盘读 IO 的吞吐量,用于判断读负载的强度
sda: Disk write rate 磁盘写请求的速率(单位:i/s):反映磁盘写 IO 的吞吐量,用于判断写负载的强度

网络核心参数

网卡 监控项名称 关键作用说明
ens33 Bits received 网卡接收带宽速率:反映入站流量负载强度
ens33 Bits sent 网卡发送带宽速率:反映出站流量负载强度
ens33 Inbound packets discarded 入方向丢包数:非 0 且持续增加,说明网络拥塞或链路故障
ens33 Inbound packets with errors 入方向错误包数:非 0 说明网卡、网线或交换机存在物理 / 配置故障
ens33 Operational status 网卡运行状态:显示 "up" 为正常,"down" 则网卡未启用 / 故障
ens33 Speed 网卡物理速率(基准):此处为 1Gbps,用于判断实际流量是否接近带宽上限
ens34 Bits received 同 ens33,反映该网卡入站流量负载
ens34 Bits sent 同 ens33,反映该网卡出站流量负载
ens34 Inbound packets discarded 同 ens33,反映该网卡入方向丢包情况
ens34 Inbound packets with errors 同 ens33,反映该网卡入方向错误包情况
ens34 Operational status 同 ens33,反映该网卡运行状态
ens34 Speed 同 ens33,该网卡物理速率基准(1Gbps)

系统与进程核心参数

监控参数 作用说明
proc.zombie (僵尸进程数需要自己添加) 反映进程回收异常:僵尸进程数 > 5 个且持续增加,会耗尽系统进程表资源(无法创建新进程)
Number of running processes(运行中进程数) 反映 CPU 调度压力:运行中进程数远大于 CPU 核心数,会导致进程调度延迟增加
System uptime(系统运行时长) 辅助判断系统稳定性:频繁重启(uptime<1 小时)说明系统或硬件存在故障

服务层

监控nginx状态

服务层的模板拿来不一定能用,所以要根据自己的配置修改模板

shell 复制代码
#1.设置nginx状态页
server {
    listen       80 default_server;
    server_name  localhost;
    default_type text/plain;
    location / {
      #return 200 "website is ok";
      index index.html;
    }
    location /status {
      #allow 221.218.213.9 ;
      allow 127.0.0.1;
      allow 10.0.0.1;
      allow 172.16.1.0/24;
      deny all;
      stub_status;
    }
}
#2.图形化界面操作
  1. 给nginx添加Nginx by Zabbix agent模板
  1. 修改Nginx by Zabbix agent模板的宏参数
  1. 如果有类似过滤主要项结果错误,可以自己修改正则

负载均衡监控,监控指定站点的web情况,自定义监控

  • nginx需要安装upstream check可以监控负载

  • 监控负载均衡多个分组,分组中主机是否运行

  • 未来使用haproxy替代

  • nginx负载均衡自定义监控,开启负载均衡监控检查模块upstream check编译安装nginx

  • 默认没有关联的模板

  • 监控项:有多少个节点,有多少个分组,每个分组里面的节点状态

shell 复制代码
#1.编写配置文件
upstream blog_pools {
    server 10.0.0.7:80;
    server 10.0.0.8:80;
    
    # ------------------------------
    # 负载均衡健康检查配置(依赖ngx_http_upstream_check_module模块)
    # ------------------------------
    # interval:健康检查间隔(单位:毫秒)
    # rise:连续2次检查成功,标记后端节点为"可用"
    # fall:连续5次检查失败,标记后端节点为"不可用"
    # timeout:检查超时时间(单位:毫秒)
    # type:检查类型(http协议)
    check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    # 健康检查发送的HTTP请求内容(HEAD方法请求/index.php,携带Host头)
    check_http_send "HEAD /index.php HTTP/1.0\r\nHost:blog.oldboylinux.cn\r\nUser-Agent: lb_check\r\n\r\n";
    # 健康检查期望的"存活"响应状态码(2xx/3xx视为正常)
    check_http_expect_alive http_2xx http_3xx;
}

server {
    listen 80;
    server_name blog.oldboylinux.cn lb81.oldboylinux.cn;

    error_log /var/log/nginx/blog.oldboylinux.cn-error.log notice;
    access_log /var/log/nginx/blog.oldboylinux.cn-access.log main;

    location / {
        proxy_pass http://blog_pools;
        proxy_set_header Host $http_host; #XFF
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Ip $remote_addr;
        ngx_access_log log_format $http_x_forwarded_for;
    }

    location /_lb_status {
        check_status;
        access_log off;
        #allow
        #deny
    }
}

#2.脚本
#!/bin/bash
# 1. 定义变量:接收外部传入的参数(负载均衡绑定的域名)
url=$1

# 2. 统计负载均衡后端总节点数
# 说明:通过curl访问Nginx健康检查状态页(csv格式),统计总行数(每行对应1个后端节点)
total=$(curl -s -H Host:$url localhost/_lb_status?format=csv | wc -l)

# 3. 统计负载均衡后端"可用(up)"的节点数
# 说明:过滤csv中状态为"up"的行,统计行数
up=$(curl -s -H Host:$url localhost/_lb_status?format=csv | grep -wi up | wc -l)

# 4. 计算可用节点占比(保留2位小数)
# 说明:用bc工具计算百分比,-l参数启用浮点运算;若total为0则返回-1(避免除0错误)
echo "scale=2; $up / $total * 100" | bc -l

#3.写入zabbix agent 子配置文件
cat >> /etc/zabbix/zabbix_agentd.d/lb.conf <<'EOF'
UserParameter=check_lb[*],sh /server/scripts/check_lb_pools.sh "$1"
EOF

#4. 重启zabbix agent
systemctl restart zabbix-agent

监控keepalived是否切换

  • 备节点
  • 监控项:过滤下keepalived是否有进程
  • 监控项:是否有vip,过滤VIP就可以,确定是否发生主备切换
shell 复制代码
#1.在备节点书写监控脚本即可
#自定义监控脚本
cat > /server/scripts/check_vip.sh <<'EOF'
#!/bin/bash
##############################################################
# File Name:/server/scripts/check_vip.sh
# Version:V1.0
# Author:csq
# Organization: www.chenshiquan.xyz
# Desc:
##############################################################
#1.vars
vip=$1

#2.过滤
vip_cnt=`ip a | grep -w "${vip}" | wc -l`

#3.判断
if [ $vip_cnt -gt 0  ];then
	echo 0
else
	echo 1
fi
EOF

#2.添加agent配置文件
cat > /etc/zabbix/zabbix_agentd.d/keepalived.conf <<'EOF'
UserParameter=keepalived.vip[*],sh /server/scripts/check_vip.sh "$1"
EOF

#3.重启agent
systemctl restart zabbix-agent

#4.服务端测试键值对
zabbix_get -s 172.16.1.116 -k keepalived.vip["10.0.0.11"]

##后续
创建监控项、触发器、创建模板、关联负载备节点

监控nginx访问日志和错误日志

  • nginx访问日志(elk)

    • ip地址出现次数最近5分钟出现ip次数超过1w的ip
    • 状态码及出现的次数
    • 200,206,301,302,304,400,401,403,404,405,413,499,500,502,503,504
  • nginx错误日志:failed/denied/error/ 最近5000行

shell 复制代码
tail -5000 /var/log/nginx/error.log |grep -c -i error

ip地址最近5分钟出现IP次数超过1w的ip

shell 复制代码
#1.添加客户端agent配置文件(注意客户端zabbix用户要有能看日志的权限才行)
cat >> /etc/zabbix/zabbix_agentd.d/lb.conf <<'EOF'
UserParameter=ip.count.1w,sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | awk '{if($1>=10000)print $1;else print 0}'
EOF
#2.重启agent
systemctl restart zabbix-agent
#3.服务端测试键值
zabbix_get -s 172.16.1.115 -k ip.count.1w

监控访问日志的状态码

shell 复制代码
#1.编写脚本
cat > /server/scripts/check_ngx_access_log.sh <<'EOF'
#!/bin/bash
#1.vars
Access_files="/var/log/nginx/access.log"
code=$1

#2.case
case "$code" in
200) awk '{print $9}' $Access_files | grep -w "200"|wc -l ;;
206) awk '{print $9}' $Access_files | grep -w "206"|wc -l ;;
301) awk '{print $9}' $Access_files | grep -w "301"|wc -l ;;
302) awk '{print $9}' $Access_files | grep -w "302"|wc -l ;;
304) awk '{print $9}' $Access_files | grep -w "304"|wc -l ;;
400) awk '{print $9}' $Access_files | grep -w "400"|wc -l ;;
401) awk '{print $9}' $Access_files | grep -w "401"|wc -l ;;
403) awk '{print $9}' $Access_files | grep -w "403"|wc -l ;;
404) awk '{print $9}' $Access_files | grep -w "404"|wc -l ;;
405) awk '{print $9}' $Access_files | grep -w "405"|wc -l ;;
413) awk '{print $9}' $Access_files | grep -w "413"|wc -l ;;
500) awk '{print $9}' $Access_files | grep -w "500"|wc -l ;;
502) awk '{print $9}' $Access_files | grep -w "502"|wc -l ;;
503) awk '{print $9}' $Access_files | grep -w "503"|wc -l ;;
504) awk '{print $9}' $Access_files | grep -w "504"|wc -l ;;
*) echo "输入错误"
esac
EOF

#2.添加客户端agent配置文件
cat >> /etc/zabbix/zabbix_agentd.d/lb.conf <<'EOF'
UserParameter=http.status.code[*],sudo bash /server/scripts/check_ngx_access_log.sh "$1"
EOF
#3.重启agent
systemctl restart zabbix-agent
#3.服务端测试键值
zabbix_get -s 172.16.1.115 -k http.status.code["200"]


#可以将2xx和3xx放一个图
#将4xx放一个图
#5xx放一个图

错误日志和secure日志分析

  • 注意sudo权限
shell 复制代码
#精确过滤时间 最近5分钟 最近1小时
#1.输出最近5分钟的日志(要确保开始点要有数据才可以)
start=$(date -d '-5min' +"%Y/%m/%d %H:%M")
sed -n "/$start/,\$p" /var/log/nginx/error.log


#2.书写zabbix agent子配置文件
# 统计Nginx错误日志近1000行的异常关键词数(推荐使用)
cat >> /etc/zabbix/zabbix_agentd.d/lb.conf <<'EOF'
UserParameter=check.ngx.error,sudo tail -n1000 /var/log/nginx/error.log | egrep -i 'error|failed|denied' | wc -l
EOF

# 统计secure日志近1000行的暴力破解登录尝试数
UserParameter=check.error.login,sudo tail -n1000 /var/log/secure | egrep -i 'failed password' | wc -l

网络tcp/ip监控

shell 复制代码
#1.书写脚本
cat > /server/scripts/net_stat.sh <<'EOF'
#!/bin/bash
#1.vars
code=$1

#2.case
case "$code" in
listen)  ss -ant |grep -i listen |wc -l ;;
estab)   ss -ant |grep -i estab |wc -l ;;
time-wait) ss -ant |grep -i time-wait |wc -l ;;
close-wait) ss -ant |grep -i close-wait |wc -l ;;
fin-wait1) ss -ant |grep -i fin-wait1 |wc -l ;;
fin-wait2) ss -ant |grep -i fin-wait2 |wc -l ;;
closing) ss -ant |grep -i closing |wc -l ;;
last-ack) ss -ant |grep -i last-ack |wc -l ;;
syn-sent) ss -ant |grep -i syn-sent |wc -l ;;
*) echo "输入错误"
esac
EOF

#2.书写zabbix agent子配置文件
cat >> /etc/zabbix/zabbix_agentd.d/lb.conf <<'EOF'
UserParameter=net.status[*],sudo bash /server/scripts/net_stat.sh "$1"
EOF
#3.重启agent
systemctl restart zabbix-agent

#4.服务端测试键值
zabbix_get -s 172.16.1.115 -k net.status["estab"]

web监控

shell 复制代码
应用:代码,war,jar包
服务:nginx,php,tomcat,jar
系统:模板+自定义
监控内容 详细内容 具体实现落地
5 API 接口监控 监控指定 API 接口(如 zbx api),含内部接口、外部第三方接口 curl 命令、web 场景 / 监测
4 业务、应用、app 监控 检查应用可用性,通过测试代码页面(如 info.php、mysqli.php)验证应用状态 curl 命令、web 场景 / 监测
3 服务监控 1. 基础项:进程、端口 2. 专有项:各服务的专属状态3. 日志项:错误日志近 2000 行中的异常关键词(error/failed/exception) 模板或根据具体要求自定义监控
2 系统监控 资源类:CPU、负载、内存、磁盘、网络、带宽、IO安全类:关键文件变化(aide)、进程、僵尸进程、非堡垒机登录 模板 + 自定义(覆盖僵尸进程、异地登录、aide 校验、secure 日志等场景)
1 硬件监控 物理服务器专属项:温度、风扇转速、RAID 状态 Linux 命令(ipmitool/megacli 查询 RAID)

服务层

监控php状态

shell 复制代码
#1.修改nginx配置文件 设置php状态页面
cat > /etc/nginx/conf.d/default.conf <<'EOF'
server {
    listen 80 default_server;
    server_name status.chenshiquan.xyz;

    location /status {
        stub_status;
    }

    location /php-status {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location /php-ping {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
EOF
#2.设置php的配置文件
egrep 'pm.status|ping' /etc/php-fpm.d/www.conf
pm.status_path = /php-status #通过该路径可获取 PHP-FPM 的实时运行数据(如进程数、请求量、慢请求等)
ping.path = /php-ping        #定义 PHP-FPM 的「健康检查(存活检测)」路径
ping.response = pong    #设置访问 ping.path 时,PHP-FPM 返回的响应内容(相当于「心跳包」的返回值)
#3.生效php配置文件
systemctl restart php-fpm
  1. 主机添加php模板
  1. 修改模板宏定义
  1. 检查php的模块监控项是否有报错,有报错修改过滤的正则表达式

应用或业务监控web场景监控

(1)监控php是否正常

shell 复制代码
#1.在站点目录下编写php状态页面
cat > /app/code/test/test_info.php <<'EOF'
<?php
phpinfo();
?>
EOF
#2.修改站点文件
server {
    listen 80 default_server;
    server_name status.chenshiquan.xyz;
    location / {
        root /app/code/test;
        index index.php;
    }
    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;
    	}
}

浏览器查看

(2)测试php能否连接数据库

shell 复制代码
#1.在站点目录下编写php是否能连接数据库的状态页面(编译安装要在php.ini 添加mysql socket )
cat > /app/code/test/test_php_db.php <<'EOF'
<?php
//数据库地址
$db_host='127.0.0.1';
//数据库用户名
$db_user='root';
$db_pass='Abc@1234';

$link_id=mysqli_connect($db_host,$db_user,$db_pass);
if($link_id){
    echo "mysql successful!\n";
}else{
    echo "connection failed!\n";
}
?>
EOF

浏览器访问

(3)zabbix web页面对应主机的web监测

  1. 选择对应主机的web监测
  1. 创建web场景
  1. 配置web场景
  1. 点击监测->主机->查看对应主机的web监测->查看状态

  1. 查看图形
  • web场景相当于监控项,如果添加触发器
shell 复制代码
last(/web01/web.test.fail[web场景名字]) <>0

web.test.fail 该监控项将显示场景中失败的步骤数。失败则非0,如果所有步骤都成功执行,则返回0

(4)tomcat、jetty、jboss和jar包监控(推荐自定义监控)

之前文章有写

API监控

官方API参考文档:https://www.zabbix.com/documentation/7.0/zh/manual/api/reference

shell 复制代码
使用web场景实现
应用或业务API
服务API接口 /check   /health
  • 监控zabbix api接口是否可用
  • 添加web场景流程与上面监控test_info.php流程一致
  • 区别在于添加api接口的时候不能只看状态码,应该看返回结果的内容,这里过滤Zabbix Server

(1)监控zabbix api接口是否可用

为什么监控Zabbix API:因为grafana 通过前端web API接口访问zabbix数据库内容,让后再返回grafana渲染dashboard

1.获取API令牌

shell 复制代码
#1.记录好令牌
39024847a3c66ba498a6beced2939e71f9278d143f9b14a061f376ffde087849
s
#2.测试 批量获取主机的核心信息(主机 ID、主机名、接口 ID、IP 地址)
curl -X POST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "39024847a3c66ba498a6beced2939e71f9278d143f9b14a061f376ffde087849"
}'  http://10.0.0.118/api_jsonrpc.php

2.创建zabbix server web监测,监测zabbix api接口是否正常

查看zabbix server web监测是否正常

缓存(Redis监控)

  • redis监控模板
  • 监控redis运行、端口、进程
  • 命中率
  • 占用内存
  • Redis by Zabbix agent2(需要agent2)
shell 复制代码
#1.安装redis
yum install -y redis
#2.修改配置
[root@db01 ~]# egrep '^bind|^protected' /etc/redis.conf 
bind 127.0.0.1 -::1 172.16.1.114
protected-mode no
#3.启动redis
systemctl enable --now redis

配置模板

数据库监控

  • mysql
  • zabbix自带模板
  • 第3方模板 pt percona tools
  • pmm数据库监控专用

存储

  • NFS是否可用
    • 本地进行临时挂载
    • 本地写入数据
    • 检查是否可以写入
    • 卸载
  • 其他存储调用对应的模板即可
  • 检查空间

Docker监控

从zabbix6.0也有docker监控的模板了

使用官方模板即可

相关推荐
羑悻的小杀马特6 小时前
【仿RabbitMQ实现消息队列项目】交换机智能路由、队列流量隔离、绑定信息精准定向、消息可靠投递——四模块协同打造低耦合消息系统!
linux·rabbitmq·项目·消息·交换机·队列·绑定信息
Ronin3056 小时前
【Linux网络】NAT、代理服务、内网穿透
linux·网络·智能路由器·内网穿透·nat·代理服务器·内网打洞
DeeplyMind6 小时前
AMD rocr-libhsakmt分析系列3-1: Apertures
linux·amdgpu·rocm·kfd·rocr
无奈笑天下8 小时前
银河麒麟桌面OS使用分区编辑器将/backup分区删除并扩容至根分区参考教程
linux·数据库·经验分享·编辑器
CheungChunChiu14 小时前
Linux 内核设备模型与驱动框架解析 ——以 rk-pcie 为例
linux·运维·ubuntu
列逍15 小时前
Linux进程(三)
linux·运维·服务器·环境变量·命令行参数
水天需01016 小时前
VS Code Ctrl+Shift+V 预览 Markdown 无效的解决方案
linux
赖small强18 小时前
【Linux C/C++开发】Linux 平台 Stack Protector 机制深度解析
linux·c语言·c++·stack protector·stack-protector·金丝雀机制
陌路2019 小时前
Linux42 守护进程
linux