Zabbix(三)

监控Nginx服务

nginx配置

增加location{}
[root@wenzi ~]#vim /etc/nginx/sites-enabled/default
    server_name _;    #_是通配符。服务器将响应任何域名的请求
...
    location /status {    
        stub_status;
    }
...

访问 http://IP/status 即可

zabbix配置

Nginx by HTTP:无需安装zabbix agent

Template App Nginx by Zabbix agent:需要安装zabbix agent

此次使用Nginx by HTTP

方法一:修改模板级别配置

宏-模板宏;将此处默认的nginx状态页路径从 basic_status 改为 status。

和nginx配置location /status {} 匹配的路径名字相同

为方便测试,将监控项更新间隔改为10s。生产5分钟比较合适

在部署nginx的主机上链接此模板

方法二:修改主机级别配置

在部署nginx的主机上链接此模板

配置-主机-宏-继承以及主机宏; 修改宏的值,仅对该主机生效,不影响模板原内容

 更新后再次点开该主机,主机宏显示配置的nginx状态页路径status

修改监控项间隔时间为10s

 

更新完毕后,可查看模板Nginx by HTTP,里面nginx状态页路径依旧是默认的stub_status,间隔时间仍是1m,未受影响。

监控PHP-FPM

php-fpm配置

[root@wenzi ~]#vim /etc/php/8.1/fpm/pool.d/www.conf
listen = /run/php/php8.1-fpm.sock

pm.status_path = /php_status    #zabbix系统默认监控路径/status
ping.path = /ping

 nginx配置

[root@wenzi ~]#vim /etc/nginx/sites-enabled/default
location ~ \.php|/php_status|/ping {
    root /data/php;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

访问 http://IP/php_status 即可

zabbix配置

将部署php-fpm的主机链接PHP-FPM by Zabbix-agent 模板

 修改状态页路径,由默认的status改为php_status

监控连接状态为ESTABLISHED数量

自定义监控配置文件

[root@wenzi ~]#vim /etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter=tcp_state_est,netstat -tna | awk '/ESTABLISHED$/' | wc -l

在客户端本机测试
[root@wenzi ~]#zabbix_agentd -t tcp_state_est
tcp_state_est                                 [t|2]

重启服务
[root@wenzi ~]#systemctl restart zabbix-agent.service

在控制端zabbix server验证
[root@wenzi ~]#zabbix_get -s 192.168.28.61 -p 10050 -k "tcp_state_est"
3

在zabbix配置自定义监控项。键值必须和自定义的键名一致。

多主机监控多个状态数量

自定义监控配置文件

[root@wenzi ~]#vim /etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter=tcp_state_est,netstat -tna | awk '/ESTABLISHED$/' | wc -l
UserParameter=tcp_state_time,netstat -tna | awk '/TIME_WAIT$/' | wc -l

创建自定义模板

在自定义模板里创建自定义监控项

再将模板链接到主机即可。

查看最新数据

监控TCP11种有限状态机

准备脚本

[root@wenzi ~]#cat /etc/zabbix/zabbix_agentd.d/tcp.sh
#!/bin/bash
#********************************************************************
#FileName:     /etc/zabbix/zabbix_agentd.d/tcp.sh
#Version:      1.0
#Date:         2024-03-07
#Author:       wenzi
#Description: This is description
#********************************************************************
state=$1
netstat -tna | awk -v st=$state '$NF ~ st' | wc -l

准备自定义key监控配置文件

[root@wenzi ~]#cat /etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter=tcp_state[*],/etc/zabbix/zabbix_agentd.d/tcp.sh $1

[root@wenzi ~]#zabbix_agentd -t tcp_state[ESTABLISHED]
tcp_state[ESTABLISHED]                        [t|2]
[root@wenzi ~]#zabbix_agentd -t tcp_state[LISTEN]
tcp_state[LISTEN]                             [t|23]
[root@wenzi ~]#zabbix_agentd -t tcp_state[TIME_WAIT]
tcp_state[TIME_WAIT]                          [t|12]

 配置zabbix,创建新的模板,在新模板中新增监控项,通过克隆,完成11个监控项

将模板链接到该主机

若其它主机也要监控,需要将脚本/etc/zabbix/zabbix_agentd.d/tcp.sh、自定义key/etc/zabbix/zabbix_agentd.d/tcp.conf 也复制到其它主机中,再配置Zabbix。

监控Java程序

Zabbix Java Gateway

Zabbix不支持直接监控Java应用。如果需要监控Java程序,如tomcat,需要使用Java Gateway作为代理,才能从Java应用中获取数据。

Zabbix Java Gateway通过监听 10052/tcp 端口实现监控Java应用。

Java应用需要开启JMX功能才能被监控。

Java Management Extensions,它是Java平台的一部分,用于管理和监控Java应用程序。JMX允许开发者和系统管理员创建管理接口,这些接口可以远程监控和控制Java应用程序。

Zabbix监控JVM流程

  • zabbix-server 通知 zabbix-Java-Gateway需要获取监控主机的哪些监控项
  • Zabbix-Java-Gateway 通过 JMX 协议请求采集 Java进程数据
  • Java程序通过 JMX 协议返回数据给 zabbix-Java-Gateway
  • zabbix-Java-Gateway 最终返回数据给 zabbix-server
  • zabbix-server 将采集的 JAVA 数据存储至数据库,然后进行 Web 展示

监控Java应用Tomcat服务

一、部署Tomcat并开启JMX功能

在被监控主机上操作
部署jdk+tomcat过程略
新增以下内容;hostname是tomcat主机的IP
[root@wenzi ~]#vim /usr/local/tomcat/bin/catalina.sh
...
 CATALINA_OPTS="$CATALINA__OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.28.61 -Dcom.sun.management.jmx    remote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
 # OS specific support.  $var _must_ be set to either true or false.
...

重启tomcat
[root@wenzi ~]#systemctl restart tomcat.service
查看12345端口是否打开
[root@wenzi ~]#ss -tnl | grep 12345
LISTEN 0      50                      *:12345            *:*

[root@wenzi ~]#ps aux | grep java
tomcat      2180  0.2  5.3 2448836 106152 ?      Sl   16:59   0:06 /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/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 -Djava.rmi.server.hostname=192.168.28.61 -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

二、测试通过Java工具jconsole.exe进行JMX监控

windows安装JDK,此工具位于 C:\Program Files\Java\jdk-1.8\bin 目录下

使用不安全的连接

三、部署Java Gateway

Java Gateway独立于Zabbix server 和Zabbix agent的组件,默认使用端口 10052/tcp。可单独不是在一台服务器也可以和Zabbix server 或 Zabbix agent共用一台服务器。

Zabbix Server端无需安装JDK;安装Java Gateway时会自动安装JDK。

[root@wenzi ~]#wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb && dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb && apt update  && apt install zabbix-java-gateway && systemctl restart zabbix-java-gateway && systemctl enable zabbix-java-gateway

安装完首次启动会失败,手动再次启动就可以了。
[root@wenzi ~]#java -version
openjdk version "11.0.22" 2024-01-16
OpenJDK Runtime Environment (build 11.0.22+7-post-Ubuntu-0ubuntu222.04.1)
OpenJDK 64-Bit Server VM (build 11.0.22+7-post-Ubuntu-0ubuntu222.04.1, mixed mode, sharing)

[root@wenzi ~]#ps aux | grep java
zabbix      5086  3.9  2.8 2519088 56176 ?       Sl   17:46   0:00 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-1.2.9.jar:lib/logback-core-1.2.9.jar:lib/slf4j-api-1.7.32.jar:bin/zabbix-java-gateway-6.0.27.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java_gateway.pid -Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway

四、配置Zabbix Server支持Java Gateway

默认情况下关于Java的监控项不支持。

修改zabbix-server配置

[root@wenzi ~]#vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.28.61    #指向java Gateway所在主机IP
StartJavaPollers=1           #开启的进程数,必须修改此行,不能为默认的0
JavaGatewayPort=10052        #指定端口,默认值,可不改


[root@wenzi ~]#systemctl restart zabbix-server.service
[root@wenzi ~]#ps auxf | grep zabbix | grep java
zabbix      9444  0.0  0.4 141864  9596 ?        S    21:03   0:00  \_ /usr/sbin/zabbix_server: java poller #1 [got 0 values in 0.000032 sec, idle 5 sec]

通过JMX接口监控Java服务器

 

监控网络设备

SNMP

Simple Network Management Protocol 简单网络管理协议,属于TCP/IP五层协议中的应用层协议,用于网络管理的协议,SNMP主要用于网络设备的管理。

工作原理

SNMP网络设备分为NMS和Agent。

NMS(Network Management Station,网络管理站)是SNMP网络的管理者,NMS是运行SNMP客户
端管理程序的工作站,能够提供友好的人机交互界面,方便网络管理员完成绝大多数的网络管理工
作。

Agent是SNMP网络的被管理者。Agent是驻留在设备上的一个进程,负责接收、处理来自NMS的
请求报文。在一些紧急情况下,如接口状态发生改变等,Agent也会主动通知NMS。

NMS和Agent之间通过SNMP协议来交互管理信息。

SNMP管理进程与代理进程之前为了交互信息,定义了五种报文:

get-request操作:这个操作是由管理进程发起,向代理进程处请求提取一个或多个参数值。
get-next-request操作:这个操作是由管理进程发起,向从代理进程处提取一个或多个参数的下一个参数
值。
get-response操作:这个操作是由代理进程发出的,向管理进程返回的一个或多个参数值。
set-request操作:这个操作是由管理进程发起,对代理进程设置一个或多个参数值。
trap操作:这个操作是由代理进程主动发出的报文,通知管理进程有某些事情发生。

MIB

是一个在网络管理中使用的数据结构,它定义了网络设备(如路由器、交换机、服务器等)上可以被监控和管理的信息。MIB通常以树状结构组织,每个节点代表一个特定的管理对象,例如设备的某个属性或统计信息。

OID

是一种用于在网络中唯一标识管理信息的数字标识符,通常用于MIB中,以唯一地标识网络设备上的特定信息,如设备的状态、性能数据、配置参数等

查询网站:http://www.oid-info.com/index.htm

在知道部分OID情况下,可以方便进行节点具体信息的查看。但数量太多,搜索效率低下,建议直接从设备商处获取MIB库。

如:
系统信息
sysDescr     .1.3.6.1.2.1.1.1
sysobjectID  .1.3.6.1.2.1.1.2
sysUpTime    .1.3.6.1.2.1.1.3
syscontact   .1.3.6.1.2.1.1.4
sysName      .1.3.6.1.2.1.1.5

在agent安装SNMP协议并配置

[root@wenzi ~]$yum -y install net-snmp
[root@wenzi ~]$snmpd -v
修改配置
[root@wenzi ~]$vim /etc/snmp/snmpd.conf
com2sec notConfigUser  default       123456    #设置团体密码为123456,默认是public
...
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
view    systemview    included   .1.            #新增此行,自定义授权,否则zabbix无法获取数据

重启服务,查看端口,161/udp
[root@wenzi ~]$systemctl enable --now snmpd
[root@wenzi ~]$ss -tunpl | grep snmp
udp    UNCONN     0      0         *:161                   *:*                   users:(("snmpd",pid=2300,fd=6))
tcp    LISTEN     0      128    127.0.0.1:199                   *:*                   users:(("snmpd",pid=2300,fd=7))

配置zabbix

修改继承宏,修改团体密码为Zabbix Server中配置的123456

 

 

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值