Day03-zabbix自动化监控与监控项目
12. 换个角度看监控-zabbix-agent
12.1 Zabbix客户端概述
zabbix客户端 | 应用场景 |
---|---|
Zabbix-agent2(最常用) | 适用于几乎所有情况,支持自定义监控,linux,windows, android/ios |
SNMP客户端 | 用于监控网络设备: Simple Network Management Protocal 简单网络管理协议 监控网络设备 |
JMX | Java-gateway 监控java app(tomcat), 未来推荐自定义监控(zabbix_agents2 + jmap/jstats) |
IPMI | 监控硬件(物理服务器,联想(IBM X86架构 ThinkServer) ,华为,浪潮,Dell,IBM,HP) 直接使用自定义监控(ipmitool + megacli ) |
12.2 Zbx-agent监控windows/mac
-
安装客户端,配置
-
服务端添加主机,关联模板
-
调试
1)安装windows客户端
- 安装客户端的时候配置服务端ip
-
温馨提示⚠ 主机名中不要包含中文
-
默认安装目录即可
- 安装完成检查-进程
- 检查开机自启动
- 安装目录及配置文件C:\Program Files\Zabbix Agent 2
91839@DESKTOP-9RU7VPJ MINGW64 /c/Program Files/Zabbix Agent 2
$ grep -i '^[a-z]' zabbix_agent2.conf
LogFile=C:\Program Files\Zabbix Agent 2\zabbix_agent2.log
Server=10.0.0.63
ServerActive=10.0.0.63
Hostname=DESKTOP-GAMESOFT
ControlSocket=\\.\pipe\agent.sock
2)监控windows
3)小结
可以监控windows server版本
12.3 网络监控SNMP
-
snmp: 简单网络管理协议
-
流程:
- 开启网络设备的SNMP功能,设置暗号(社团名字)(v2c) (v3 用户名+密码)
- WEB添加主机,配置接口,关联模板。
-
SNMP有多个版本
- v2c版本使用团体名作为认证。
- v3版本用户名和密码认证。
-
命令行连接测试网络设备
yum install -y net-snmp-utils
snmpwalk -v 2c -c oldboykey 192.168.50.1 SysDesc
1)开启网络设备snmp功能
- zabbix-server检查 网络设备状态
yum install -y net-snmp-utils
COMMUNITY
[root@m03 ~]# snmpwalk -c oldboykx -v 2c 192.168.13.1 SysDesc
SNMPv2-MIBՎʦsysDescr.0 = STRING: H3C Product Version
ERHMG2-MNW100-R1117
H3C ERHMG2
Copyright(c) 2014-2018 New H3C Technologies Co.,
Ltd. All rights reserved.
[root@m03 ~]# snmpwalk -c oldboykx -v 2c 192.168.13.1 sysdesc
SNMPv2-MIBՎʦsysDescr.0 = STRING: H3C Product Version
ERHMG2-MNW100-R1117
H3C ERHMG2
Copyright(c) 2014-2018 New H3C Technologies Co.,
Ltd. All rights reserved.
snmpwalk 命令 使用get方式访问网络设备
-c 团体名称 #v2c版本使用 团体名称
-v 指定 snmp版本 #v2c v3
ip地址
指令(获取网络设备的信息) 名称方式/oid
#oid Object ID 事务id 给世间万物设置独一无二的id号
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 sysdesc
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 sysUptime
DISMAN-EVENT-MIBՎʦsysUpTimeInstance = Timeticks:
(40733900) 4 days, 17:08:59.00
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfNumber
IF-MIBՎʦifNumber.0 = INTEGER: 19
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfDescr
IF-MIBՎʦifDescr.16777217 = STRING: WAN1
IF-MIBՎʦifDescr.16777218 = STRING: WAN2
IF-MIBՎʦifDescr.50331650 = STRING: LAN1
IF-MIBՎʦifDescr.50331652 = STRING: LAN2
IF-MIBՎʦifDescr.50331654 = STRING: LAN3
IF-MIBՎʦifDescr.50331656 = STRING: LAN4
IF-MIBՎʦifDescr.385875968 = STRING: VLAN1
IF-MIBՎʦifDescr.385875969 = STRING: VLAN11
IF-MIBՎʦifDescr.385875970 = STRING: VLAN12
IF-MIBՎʦifDescr.385875971 = STRING: VLAN13
IF-MIBՎʦifDescr.385875972 = STRING: VLAN14
IF-MIBՎʦifDescr.385875973 = STRING: VLAN15
IF-MIBՎʦifDescr.385875974 = STRING: VLAN16
IF-MIBՎʦifDescr.385875975 = STRING: VLAN17
IF-MIBՎʦifDescr.385875976 = STRING: VLAN18
IF-MIBՎʦifDescr.385875977 = STRING: VLAN19
IF-MIBՎʦifDescr.385875978 = STRING: VLAN20
IF-MIBՎʦifDescr.385875979 = STRING: VLAN21
IF-MIBՎʦifDescr.385875980 = STRING: VLAN66
[root@m03 /tmp]#
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfInOctet
IF-MIBՎʦifInOctets.16777217 = Counter32: 4096624309
IF-MIBՎʦifInOctets.16777218 = Counter32: 0
IF-MIBՎʦifInOctets.50331650 = Counter32: 3656051160
IF-MIBՎʦifInOctets.50331652 = Counter32: 3255019547
IF-MIBՎʦifInOctets.50331654 = Counter32: 4121087927
IF-MIBՎʦifInOctets.50331656 = Counter32: 0
IF-MIBՎʦifInOctets.385875968 = Counter32: 121007621
IF-MIBՎʦifInOctets.385875969 = Counter32: 1314395390
IF-MIBՎʦifInOctets.385875970 = Counter32: 2701446525
IF-MIBՎʦifInOctets.385875971 = Counter32: 3113202231
IF-MIBՎʦifInOctets.385875972 = Counter32: 3558929335
IF-MIBՎʦifInOctets.385875973 = Counter32: 0
IF-MIBՎʦifInOctets.385875974 = Counter32: 0
IF-MIBՎʦifInOctets.385875975 = Counter32: 0
IF-MIBՎʦifInOctets.385875976 = Counter32: 0
IF-MIBՎʦifInOctets.385875977 = Counter32: 4039834871
IF-MIBՎʦifInOctets.385875978 = Counter32: 3986752945
IF-MIBՎʦifInOctets.385875979 = Counter32: 1748855398
IF-MIBՎʦifInOctets.385875980 = Counter32: 0
[root@m03 /tmp]# snmpwalk -c oldboykx -v 2c 192.168.13.1 IfInOctet
IF-MIBՎʦifInOctets.16777217 = Counter32: 1402719161
IF-MIBՎʦifInOctets.16777218 = Counter32: 0
IF-MIBՎʦifInOctets.50331650 = Counter32: 3689519028
IF-MIBՎʦifInOctets.50331652 = Counter32: 3286579931
IF-MIBՎʦifInOctets.50331654 = Counter32: 4215317407
IF-MIBՎʦifInOctets.50331656 = Counter32: 0
IF-MIBՎʦifInOctets.385875968 = Counter32: 212287463
IF-MIBՎʦifInOctets.385875969 = Counter32: 1314397506
IF-MIBՎʦifInOctets.385875970 = Counter32: 2707094611
IF-MIBՎʦifInOctets.385875971 = Counter32: 3137147383
IF-MIBՎʦifInOctets.385875972 = Counter32: 3560411099
IF-MIBՎʦifInOctets.385875973 = Counter32: 0
IF-MIBՎʦifInOctets.385875974 = Counter32: 0
IF-MIBՎʦifInOctets.385875975 = Counter32: 0
IF-MIBՎʦifInOctets.385875976 = Counter32: 0
IF-MIBՎʦifInOctets.385875977 = Counter32: 4060020833
IF-MIBՎʦifInOctets.385875978 = Counter32: 3987206613
IF-MIBՎʦifInOctets.385875979 = Counter32: 1751758219
IF-MIBՎʦifInOctets.385875980 = Counter32: 0
2)添加主机
3) 检查
- 在服务端安装fping
[root@m02-zbx-server ~]# yum install -y fping
4) 小结
- 网络设备开启snmp功能,web进行检查.
- 用于监控网络设备。
12.4 监控java应用
1)方案选型与原理
方案 | 监控方案 | 说明 |
---|---|---|
方案01 | 开启java jmxremote远程监控功能 | zbx中关联对应的模板,安装与开启java工具zbx-java-gateway |
方案02 | 通过java命令,自定义监控获取想要指标 | 通过在java应用服务器安装zbx agent和java命令(jmap,jstack),然后自定义监控 |
- 方案01 原理图
- 方案02 原理图(类似于自定义监控)
2)方案01实战
- 开启远程监控功能
- zbx服务端部署java gateway 配置
- 添加主机关联模板
a)开启远程监控功能
- 开启远程监控功能
[root@web03 tomcat]# vim bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenti
cate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=172.16.1.9"
[root@web03 tomcat]# systemctl start tomcat
[root@web03 tomcat]# ps -ef|grep java
root 1237 1 47 14:51 ? 00:00:07 /server/tools/jdk/bin/java -Djava.util.logging.config.file=/server/tools/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=172.16.1.9 -Dignore.endorsed.dirs= -classpath /server/tools/tomcat/bin/bootstrap.jar:/server/tools/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/server/tools/tomcat -Dcatalina.home=/server/tools/tomcat -Djava.io.tmpdir=/server/tools/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 1276 1159 0 14:51 pts/0 00:00:00 grep --color=auto java
b)zbx服务端部署java gateway 配置
- zbx服务端 部署 zabbix-java-gateway
1. 安装
yum install -y zabbix-java-gateway
2. 启动
systemctl enable zabbix-java-gateway.service
systemctl start zabbix-java-gateway.service
grep '^[a-Z]' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
systemctl restart zabbix-java-gateway.service
ss -lntup |grep java
3. 配置zbx 服务端
grep -n 'Java.*=' /etc/zabbix/zabbix_server.conf
317:JavaGateway=127.0.0.1
325:JavaGatewayPort=10052
333:StartJavaPollers=5
4. 重启服务端
systemctl restart zabbix-server.service
- 检查java poller进程
c)添加主机
- 也可以添加个 zabbix agent客户端监控
3) 方案01补充-jar包启动的应用如何配置jmxremote
java -jar xxx.jar
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=172.16.1.9 \
-jar xxx.jar
12.5 监控硬件设备
- 硬件服务器
监控方案 | 步骤 |
---|---|
方案01 | 开启设备的ipmi功能监控,添加接口的时候选择ipmi即可.(进入物理设备的bios系统.LAN局域网访问.) |
方案02 | 通过客户端命令获取指标实现监控硬件:megacli和ipmitool |
- 方案02-通过命令自定义监控
命令 | 说明 |
---|---|
megacli | 用于获取raid卡状态 |
ipmitool | cpu温度,风扇转速 |
12.6 小结
zabbix客户端 | 应用场景 |
---|---|
Zabbix-agent 或agent2(最常用) | 适用于几乎所有情况,支持自定义监控,linux,windows, android/ios |
SNMP客户端 | 用于监控网络设备: Simple Network Management Protocal 简单网络管理协议 监控网络设备 |
JMX | Java-gateway 监控java app(tomcat), 未来推荐自定义监控(zabbix_agents2 + jmap/jstats) |
IPMI | 监控硬件(物理服务器,联想(IBM X86架构 ThinkServer) ,华为,浪潮,Dell,IBM,HP) 直接使用自定义监控(ipmitool + megacli ) |
13. 来点新的-自动化
- 自动添加主机并关联模板。
自动添加主机方案 | 含义 | 应用场景 |
---|---|---|
自动发现(服务端主动) | zbx服务端 主动去找是否有新的主机,如果有则添加进来,关联模板。。。。 | 配置简单,大量添加主机不适合。临时性可用 |
自动注册(客户端主动) | zbx客户端 主动去找服务端提交自己的信息,请求向服务端注册 | 配置繁琐,经常性。大量主机 |
13.1 自动发现
-
客户端(zbx agent),配置文件.
-
web配置自动发现规则. - 发现主机
-
web配置自动发现的动作 - 发现主机后关联模板,添加主机,加入主机组,启用
环境准备 | |
---|---|
zbx | 10.0.0.62 |
nfs01 | |
db01 | |
web01 | |
web02 |
1)客户端(zbx agent),配置文件
ansible实现
playbook
yum
template
2)web配置自动发现规则
- 配置–>自动发现 创建自动发现规则
- 检查自动发现的主机
- (注意仅仅发现并不会添加到zbx主机中)
3)web配置动作
-
配置 自动发现 的动作
-
添加组
-
关联模板
-
启动主机
-
进入自动发现动作配置
- 启动自动发现动作
- 配置自动发现动作的操作(关联主机组,关联模板)
- 检查自动发现
- 检查添加的主机
4) 自动发现原理与小结
- 客户端(zbx agent),配置文件
- web配置自动发现规则. - 发现主机
- web配置动作 - 发现主机后关联模板,添加主机,加入主机组,启用
全网监控任务
19.1 网站需要监控什么?
-
面试题: 你们公司监控了什么?自定义监控了什么?监控指标?。。。。。
-
潜台词:问你网站架构监控了什么内容?
1)回答参考
-
❌不推荐的回答案例:(没有经验,小白)
- cpu,内存,磁盘,网络,带宽,负载。。。。。。。。
-
⭕ 推荐的回答:
-
按照网站层次架构监控的(多个维度监控)
- 任何一台机器(从下到上):
- API接口监控:(选做)
- 业务/app监控:
- 服务监控:
- 系统监控:
- 硬件监控:
- 按照访问顺序监控(一层一层): dns/cdn,安全组,负载,web,数据库,存储,备份。
- 补充的监控
- 任何一台机器(从下到上):
2)任何一台机器(从下到上)
监控内容 | 详细内容 | 具体实现落地 |
---|---|---|
API接口监控: | 监控指定的api接口,比如zbx api。开发提供. | curl命令、web场景/监测 |
业务、应用、app监控: | 检查应用是否可用,书写测试代码。类似于info.php,mysqli.php这种页面. | curl命令、web场景/监测 |
服务监控: | 基本: 进程,端口 专有: 服务的状态,不同服务不同。 日志 最近2000行日志中是否有error/failed/exception/sever | 模板或根据具体要求自定义监控 |
系统监控: | cpu,负载,内存,磁盘,网络,带宽,io,关键文件是否变化,进程,僵尸进程,是否有非堡垒机登录 | 模板+自定义(僵尸进程,用户异地登录) |
硬件监控: | 物理服务器,温度,风扇转速,raid状态 | ipmi 或 自定义监控 (ipmitool/megacli) |
- web场景
3)按照访问顺序监控(一层一层)
- dns/cdn,安全组,负载,web,数据库,存储,备份
监控内容 | 详细内容 | 具体实现落地 |
---|---|---|
DNS | 解析是否OK | 自定义监控-ping/dig/… 域名: whois baidu.com 过滤过期 证书: curl -Lsv www.baidu.com -o /dev/null过滤expire date 过期 |
CDN | 是否可用.命中率.(web检查) | 分布式ping: 商业:监控宝,听云 免费网站: www.17ce.com,ping.chinaz.com 开源软件: smokeping |
负载 | ngx服务情况,证书过期,网站访问量,并发 | ngx/haproxy/keepalived状态:模板 证书:模板、自定义监控。 网站访问量(运营):ip,pv,uv(网站第三方插件实现百度统计), matomo(php piwiki) 并发:统计80,443端口连接数。 负载均衡健康检查模式upstream_check 自定义监控 访问日志(状态码),错误日志(error,failed数量) 服务:ngx,keepalived(vip数量,备节点是否有vip) |
web | 主要监控服务情况 | 具体服务使用对应模板即可。 ngx php tomcat(war)/jar包 |
数据库 | redis,mysql | 模板即可。 |
存储 | nfs | 自定义监控,存储目前多少空间,能否使用.模拟挂载,创建文件检查结果 |
备份 | 备份的数据量 | 自定义监控,系统是否有备份,发送邮件…占用多少空间 |
- 用户访问流程之DNS解析
#zabbix服务端自定义监控
#1. DNS是否可用.
ping 就可以,ping通就表示dns可用.
定义带有参数的键值
check.ping[*], sh 脚本 "$1" #$1是域名 可以解析返回1,否则返回0
#2. 域名过期时间(还剩下多少天)
check.domain[*],sh 脚本 "$1" #$1是域名 显示这个域名还有多久 过期(天)
whois baidu.com #过滤 Expiry 取出这个时间
用于计算两个时间之间有多少天
[root@m02-zbx-server ~]# date -d "2024-04-21"
Sun Apr 21 00:00:00 CST 2024
[root@m02-zbx-server ~]# date -d "2024-04-21" +%s
1713628800
[root@m02-zbx-server ~]# date +%s
1679036681
#3. https证书过期时间.
check.ssl[*],sh 脚本 "$1" #$1是域名 https://
[root@m02-zbx-server ~]# curl -v https://baidu.com |& grep "expire date"|awk -F': ' '{print $2}'
Feb 27 23:59:59 2024 GMT
[root@m02-zbx-server ~]# date -d "Feb 27 23:59:59 2024 GMT" +%F
2024-02-28
[root@m02-zbx-server ~]# date -d "Feb 27 23:59:59 2024 GMT" +%s
1709078399
- CDN
- 流量
- 带宽
- (命中率)
- 暂时web页面查看.
调用公有云的api接口获取.python/golang .
- 负载均衡
- 监控基础指标
- 监控服务
- nginx (配置负载均衡健康检查模块) tengine 页面(curl) 自定义下监控池塘多少个,每个池塘中节点是否运行中.
- ngx状态 模板
- 访问日志:状态码每一种状态码的数量(最近1小时,最近5000行).
[root@lb01 /var/log/nginx]# date +%F
2023-03-17
[root@lb01 /var/log/nginx]# date +%Y/%m/%d
2023/03/17
[root@lb01 /var/log/nginx]# date +%Y/%m/%d" "%H
2023/03/17 15
[root@lb01 /var/log/nginx]# date +%Y/%m/%d" "%H -d '-1hour'
2023/03/17 14
[root@lb01 /var/log/nginx]# sed -n '/开始的时间/,/结束的时间/p'
^C
[root@lb01 /var/log/nginx]# sed -n '/开始的时间/,/结束的时间/p' access.log
- web服务 - nginx
- web:nginx 监控,日志监控
- php 日志监控,服务监控
- java 日志,jmxremote
- xxx
[root@web01 ~]# cat /etc/nginx/conf.d/default.conf
server {
listen 80 default_server;
server_name "";
location / {
charset utf8;
default_type text/plain;
return 200 "别闹,没事别乱访问";
}
location /status {
stub_status;
# allow
# deny
}
}
-
修改模板
-
web-php
[root@m02-zbx-server ~]# cat /etc/nginx/conf.d/status.conf
server {
listen 8888;
server_name status.oldboylinux.cn;
location /basic_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;
}
}
[root@web01 /etc/nginx/conf.d]# egrep -v ';|^$' /etc/php-fpm.d/www.conf
[root@web01 /etc/nginx/conf.d]# egrep -v ';|^$' /etc/php-fpm.d/www.conf
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
;;php状态监控的配置
pm.status_path = /php_status
ping.path = /php_ping
ping.response = pong
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = redis
php_value[session.save_path] = tcp://172.16.1.51:6379
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
[root@m02-zbx-server ~]# systemctl restart nginx
[root@m02-zbx-server ~]# systemctl restart php-fpm.service
[root@m02-zbx-server ~]# curl http://127.0.0.1:8888/basic_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
[root@m02-zbx-server ~]# curl http://127.0.0.1:8888/php_status
pool: www
process manager: dynamic
start time: 08/May/2024:08:46:46 +0800
start since: 72
accepted conn: 1
listen queue: 0
max listen queue: 0
listen queue len: 511
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
[root@m02-zbx-server ~]# curl http://127.0.0.1:8888/php_ping
pong
- db01
- redis
- 数据库
- 模板
- 日志
- 数据空间
-
存储
- 系统监控
- 服务进程
- 是否可用:挂载下,创建些文件
- 监控共享存储使用的空间
-
对象存储(开发书写代码,测试写入)
-
备份服务器
- rsync服务
- 空间
- md5sum
- 日常模拟数据恢复. 故障演练.
-
docker容器
- 系统监控
- docker模板监控
4)补充监控
- apm监控网站性能监控。用户访问流程链监控。。。
- docker监控
5)案例:监控api接口
1. 访问页面是否可以使用 zbx.oldboylinux.cn
http://zbx.oldboylinux.cn
2.访问zbx_api是否可用
http://zbx.oldboylinux.cn/api_jsonrpc.php
- zbx服务端创建:web场景监控
- 配置web场景基本信息
- 添加操作步骤部分:第1步-检查zbx首页是否可以访问.
- 添加操作:第2步骤检查zbx-api接口是否可以访问
- 检查监控结果
- 检查结果