zabbix 配置基础监控

本文介绍如何配置 zabbix 的一些基础监控,包括如何监控网站的存活、端口的存活、页面返回值等。

[TOC]

1. 快速搭建 zabbix

  • 利用 docker 快速部署 zabbix,示例 服务端为 192.168.31.101
#.配置DNS和时区
cat /etc/resolv.conf | grep "^nameserver" || echo "nameserver 223.5.5.5" > /etc/resolv.conf
timedatectl set-timezone Asia/Shanghai

#.安装 docker
curl -sL 'http://iso.sqlfans.cn/docker/install_docker_2401.sh' | bash
curl -sL 'http://iso.sqlfans.cn/docker/install_docker_compose_2181.sh' | bash
docker-compose --version

#.配置 docker 加速
mkdir -p /etc/docker
curl http://iso.sqlfans.cn/config/docker/daemon.202504.json > /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker

#.部署 zabbix 6.4-latest
mkdir -p /data/docker/{zabbix-server,zabbix-web,zabbix-mysql/var}
curl -sL http://iso.sqlfans.cn/docker/yml/docker-zabbix64.yml -o /data/docker/docker-zabbix.yml
docker-compose -f /data/docker/docker-zabbix.yml up -d
netstat -lnpt | grep "0.0.0.0:" | egrep "(3306|10050|10051|80)"

#.登录 zabbix 控制台
地址:http://192.168.31.101
账密:Admin / zabbix

2. 借助 http 状态码监控网站存活

  • HTTP状态码(HTTP Status Code)是服务器返回给客户端的,其核心作用是 web 服务器来告诉客户端,当前网页发生的什么事,或者说当前 web 服务器的响应状态。所以HTTP状态码常用来判断和分析当前 web 服务器的运行状况。下面是常见的 HTTP 状态码:
状态码 类别 分类描述 常见的http状态码
1xx Information(信息) 接受的请求正在处理 -
2xx Success(成功) 请求正常处理完毕 200-请求成功
3xx Redirection(重定向) 需要进行附加操作以完成请求 301-资源被永久转移到其他url
4xx Client Error(客户端错误) 服务器无法处理请求 404-请求的资源不存在
5xx Server Error(服务端错误) 服务器处理请求出错 500-内部服务器错误
  • 第1步,点击“创建主机”,可以针对某个一级域名添加一台主机,示例 sqlfans.cn

注:由于监控的是 http 状态码,所以不需安装zabbix客户端,也不需要添加接口

  • 第2步,针对特定主机,选择“Web检测”

  • 第3步,点击“创建web场景”,在【步骤】标签页,填写名称、更新间隔、尝试次数、Agent等

  • 第4步,在【步骤】标签页,填写名称、URL、超时、要求的状态码等,然后点击“添加”

注:可以添加多个二级域名,示例wiki.sqlfans.cn及www.sqlfans.cn

  • 第5步,点击“创建触发器”,在【触发器】标签页,配置名称、严重性、问题表现形式、恢复表达式等,选择“添加”

注:问题表现形式 last(/<主机名称>/web.test.rspcode[<主机名称,站点名称>])<>200 表示当状态码不等于 200 时触发告警

  • 第6步,可以针对多个域名配置多个触发器(示例wiki.sqlfans.cn及www.sqlfans.cn)

  • 第7步,点击“创建图表”,填写配置名称、监控项等,选择“添加”

  • 第8步,查看监控曲线,确认检测到异常(示例重启站点导致状态码 200 -> 404 -> 200):

3. 借助健康检查页的返回值监控服务

  • 常见的中间件默认都会提供一个健康检查接口,用于标识服务状态,我们可以通过监控健康检查页的返回值来判断服务是否异常,以下是常见的健康检查接口:
服务名称 健康检查页 方法 检查策略
nacos http://{ip}:8848/nacos/actuator/health GET 返回值包含DOWN则为异常
minio http://{ip}:9000/minio/health/live GET HTTP状态值非200则为异常
xxl-job http://{ip}:7777/xxl-job-admin/actuator/health GET 返回值包含DOWN则为异常
  • 第1步,登录中间件服务器(示例 192.168.31.102),模拟接口正常
#.模拟接口正常
echo '{"status":"UP","message":"ok"}' > /usr/local/nginx/html/healthcheck.html

#.查看健康检查页的返回值
curl http://192.168.31.102/healthcheck.html
  • 第2步,点击“创建主机”,示例 api_healthcheck

  • 第3步,针对特定主机,选择“Web检测”

  • 第4步,点击“创建web场景”,示例 health_status

  • 第5步,在【步骤】标签页,填写名称、URL、超时、要求的字串、要求的状态码等,然后点击“添加”

注:这里的参数 要求的字串 是基于 http://192.168.31.102/healthcheck.html 的返回格式

  • 第6步,点击“监控项”,示例 item_nacos_health_status、键值 api.health.status

  • 第7步,在【预处理】标签页,示例 名称 JSONPath、参数 $.status,选择“添加”

注:这里的参数 $.status 是基于 http://192.168.31.102/healthcheck.html 的返回格式

  • 第8步,点击“创建触发器”,示例 nacos_is_down,其中“监控项”选择 item_nacos_health_status

注:问题表现形式 last(/<主机名称>/api.health.status)<>"UP" 表示当健康检查页面返回值的status不等于 UP 时触发告警

  • 第9步,点击“创建图表”,示例 nacos、监控项 api_healthcheck: Failed step of scenario "health_status".

  • 第10步,登录中间件服务器(示例 192.168.31.102),模拟接口异常
#.模拟接口异常
echo '{"status":"DOWN","message":"timeout"}' > /usr/local/nginx/html/healthcheck.html
  • 第11步,查看监控曲线,确认检测到异常

4. 监控服务器端口

  • 第1步,登录要监控的服务器,安装 agent 客户端,示例 192.168.31.102
#.先临时关闭防火墙
iptables -F

#.安装:在agent端执行,第1个ip是zabbix_server地址,第2个是zabbix_agent地址
cd /opt
wget -c http://iso.sqlfans.cn/linux/zabbix/zabbix_agents_3.0.0.linux2_6_23.amd64.tar.gz
wget -c http://iso.sqlfans.cn/linux/zabbix/install_zabbix_agent_300.sh
sh install_zabbix_agent_300.sh 192.168.31.101 192.168.31.102

#.查看配置文件
cat /usr/local/zabbix_agent/conf/zabbix_agentd.conf
  • 第2步,在 server 端:测试一下 zabbix 连通性
docker exec -it zabbix-server /bin/bash -c 'zabbix_get -s192.168.31.102 -p10050 -k"system.uptime"'
  • 第3步,创建主机,示例 192.168.31.102

  • 第4步,在“主机”详情页面,可以点击“监控项 / 监控项 / 图形”进行创建

  • 第5步,创建监控项,示例名称 http_tcp_80、键值 net.tcp.port[,80]、更新间隔 1m

注:若要监控 UDP 端口,键值请改为 net.udp.port[,<端口号>]

  • 第6步,创建触发器,示例名称 tcp_80_is_down

注:问题表现形式 last(/<主机名称>/net.tcp.port[,80])=0 表示当端口不可用时触发告警

  • 第7步,创建图表,示例名称 monitoring_http_tcp_80、监控项关联上面创建的 http_tcp_80

  • 第8步,登录中间件服务器(示例 192.168.31.102),将监听 tcp 80 端口的 nginx 服务停掉,模拟端口异常
#.模拟端口异常
/usr/local/nginx/sbin/nginx -s stop
  • 第9步,查看监控曲线,确认检测到异常

Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2026-04-09 17:39:55

results matching ""

    No results matching ""