Zabbix监控入门基础

详细介绍了Linux系统的监控以及对Java应用的监控(Tomcat),同时介绍了主动模式和被动模式

3、Zabbix监控入门基础

3.1监控Linux系统

在其他linux服务器安装zabbix agent,然后添加到zabbix server以对其进行资源监控。

3.1.1zabbix agent安装:

[root@zabbix-web-server1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

[root@zabbix-web-server1 ~]# yum clean all

[root@zabbix-web-server1 ~]# yum install -y zabbix-agent

3.1.2修改zabbix agent配置文件

[root@zabbix-web-server1 ~]# vim /etc/zabbix/zabbix_agentd.conf 
[root@zabbix-web-server1 ~]# cat /etc/zabbix/zabbix_agentd.conf | grep -Ev '^$|^#'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.11                #指向当前zabbix server
ListenPort=10050                #监听端口
StartAgents=3                   #被动状态时默认启动的实例数(进程数),为0不监听任何端口
ServerActive=127.0.0.1          
Hostname=10.0.0.30          #区分大小写且在zabbix server唯一的值(可以为不为ip,只不过ip放别记)
Include=/etc/zabbix/zabbix_agentd.d/*.conf

3.1.3重启zabbix agent

[root@zabbix-web-server1 ~]# systemctl enable --now zabbix-agent.service

3.1.4验证zabbix agent

验证zabbix agent进程是否存在、端口是否监听以及日志是否有异常

#查看日志
[root@zabbix-web-server1 ~]# tail /var/log/zabbix/zabbix_agentd.log 
  2467:20211217:171924.612 TLS support:           YES
  2467:20211217:171924.612 **************************
  2467:20211217:171924.612 using configuration file: /etc/zabbix/zabbix_agentd.conf
  2467:20211217:171924.613 agent #0 started [main process]
  2471:20211217:171924.618 agent #4 started [listener #3]
  2472:20211217:171924.619 agent #5 started [active checks #1]
  2468:20211217:171924.620 agent #1 started [collector]
  2469:20211217:171924.621 agent #2 started [listener #1]
  2470:20211217:171924.622 agent #3 started [listener #2]
  2472:20211217:171924.622 active check configuration update from [127.0.0.1:10051] started to fail (cannot connect to [[127.0.0.1]:10051]: [111] Connection refused)

#查看进程
[root@zabbix-web-server1 ~]# ps -aux | grep zabbix
zabbix     2467  0.0  0.1  78824  1264 ?        S    17:19   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix     2468  0.0  0.1  78824  1364 ?        S    17:19   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix     2469  0.0  0.1  78824  1812 ?        S    17:19   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix     2470  0.0  0.1  78824  1812 ?        S    17:19   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix     2471  0.0  0.1  78824  1812 ?        S    17:19   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix     2472  0.0  0.2  78824  2224 ?        S    17:19   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root       2487  0.0  0.0 112812   964 pts/0    R+   17:23   0:00 grep --color=auto zabbix

#查看进程
[root@zabbix-web-server1 ~]# pstree 2467
zabbix_agentd───5*[zabbix_agentd]
[root@zabbix-web-server1 ~]# pstree 2467 -p
zabbix_agentd(2467)─┬─zabbix_agentd(2468)
                    ├─zabbix_agentd(2469)
                    ├─zabbix_agentd(2470)
                    ├─zabbix_agentd(2471)
                    └─zabbix_agentd(2472)

#查看网络监听状况                    
[root@zabbix-web-server1 ~]# ss -ntl | grep 10050
LISTEN     0      128          *:10050                    *:*                  
LISTEN     0      128       [::]:10050                 [::]:*                  

3.1.5zabbix web界面添加被监控主机

3.1.6关联监控模版

在zabbix对主机实现监控,可以通过添加模板或者添加监控项实现对指定的监控目标进行数据采集,通常采用先创建模板,然后再将模板关联至主机的方式,模板关联如下:

3.1.6.1选择模板

选择符合当前主机监控项目的模板,如对linux系统监控可以关联zabbix 自带的Template OS Linux模板,如下在搜索框输入linux关键字后会自带匹配符合名称的模板,直接点击即可选择:

3.1.6.2确认模版选择

3.1.6.3确认添加主机

3.1.6.4主机添加完成

需要等待几分钟(具体看模板中监控项的数据采集间隔时间)之后,主机的状态才会变成绿色或者红色,绿色表示zabbix server对zabbix agent有权限进行数据采集并且当前通信正常,红色则表示通信异常,通信异常会有多种原因,具体可以看相关日志或者到时候点击红色方框会有相关报错显示。

3.1.6.5验证主机监控数据

经过一段时间的数据采集后,验证zabbix server是否有刚添加完成主机的监控数据和图形,图形显示如下:

至此,针对linux系统的zabbix agent安装、添加主机和监控就简单完成了。

3.2监控Tomcat

学习如何通过java gateway实现对tomcat的指标进行数据采集和图形展示,如堆栈内存利用率、当前会话连接数、繁忙线程等。

3.2.1准备JDK环境

[root@zabbix-web-server1 ~]# yum install -y java-11-openjdk.x86_64

3.2.2准备Tomcat

[root@zabbix-web-server1 ~]# yum -y install tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp

3.2.3验证Tomcat web页面

确认tomcat服务运行及访问正常

3.2.4部署java gateway服务器

ava gateway是一个独立于zabbix server和zabbix agent的组件,也就是java gateway可以是单独的一台服务器,但是也可以和zabbix server或者zabbix agent公用一台服务器,前提是端口不要配置冲突了。

[root@zabbix-web-server1 ~]# yum install -y zabbix-java-gateway.x86_64 
[root@zabbix-web-server1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf 
[root@zabbix-web-server1 ~]# cat /etc/zabbix/zabbix_java_gateway.conf | grep -Ev '^#|^$'
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=50
TIMEOUT=30
[root@zabbix-web-server1 ~]# systemctl enable --now zabbix-java-gateway.service 

[root@zabbix-web-server1 ~]# ss -ntl | grep 10052
LISTEN     0      50        [::]:10052                 [::]:*   

3.2.5配置zabbix server调用java gateway

[root@zabbix-server ~]#vim /apps/zabbix_server/etc/zabbix_server.conf
JavaGateway=10.0.0.30       #监听地址
JavaGatewayPort=10052       #指定java gateway的服务器监听端口,如果是默认端口可以不写
StartJavaPollers=20         #启动多少个线程去轮训 java gateway

[root@zabbix-server ~]#systemctl restart zabbix-server.service

3.2.6验证java pollers

[root@zabbix-server ~]#ps -aux | grep java
zabbix      5700  0.0  0.1 183208  7320 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #1 [got 0 values in 0.000020 sec, idle 5 sec]
zabbix      5701  0.0  0.1 183208  7320 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #2 [got 0 values in 0.000013 sec, idle 5 sec]
zabbix      5702  0.0  0.1 183208  7320 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #3 [got 0 values in 0.000023 sec, idle 5 sec]
zabbix      5703  0.0  0.1 183208  7320 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #4 [got 0 values in 0.000007 sec, idle 5 sec]
zabbix      5704  0.0  0.1 183208  7320 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #5 [got 0 values in 0.000006 sec, idle 5 sec]
zabbix      5705  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #6 [got 0 values in 0.000006 sec, idle 5 sec]
zabbix      5706  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #7 [got 0 values in 0.000007 sec, idle 5 sec]
zabbix      5707  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #8 [got 0 values in 0.000030 sec, idle 5 sec]
zabbix      5708  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #9 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix      5709  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #10 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix      5710  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #11 [got 0 values in 0.000007 sec, idle 5 sec]
zabbix      5711  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #12 [got 0 values in 0.000036 sec, idle 5 sec]
zabbix      5712  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #13 [got 0 values in 0.000017 sec, idle 5 sec]
zabbix      5713  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #14 [got 0 values in 0.000007 sec, idle 5 sec]
zabbix      5714  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #15 [got 0 values in 0.000036 sec, idle 5 sec]
zabbix      5715  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #16 [got 0 values in 0.000030 sec, idle 5 sec]
zabbix      5716  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #17 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix      5717  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #18 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix      5718  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #19 [got 0 values in 0.000008 sec, idle 5 sec]
zabbix      5719  0.0  0.1 183208  7324 ?        S    10:11   0:00 /apps/zabbix_server/sbin/zabbix_server: java poller #20 [got 0 values in 0.000011 sec, idle 5 sec]
root        5744  0.0  0.0  12348  1048 pts/0    S+   10:11   0:00 grep --color=auto java

3.2.7Tomcat开启JMX监控

JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务,通常使用JMX来监控系统的运行状态。
https://www.jianshu.com/p/8c5133cab858

[root@zabbix-web-server1 ~]# vim /usr/libexec/tomcat/server
FLAGS="$JAVA_OPTS"          #在此行下面添加

CATALINA_OPTS="$CATALINA_OPTS  
-Dcom.sun.management.jmxremote              #启用远程监控JMX
-Dcom.sun.management.jmxremote.port=12345   #默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可
-Dcom.sun.management.jmxremote.authenticate=false   #不使用用户名密码
-Dcom.sun.management.jmxremote.ssl=false    #不使用ssl认证
-Djava.rmi.server.hostname=10.0.0.30"       #tomcat主机自己的IP地址,不要写zabbix服务器的地址

##注意写的时候将这些内容写在一行,中间用空格分开即可,否则可能会出现报错
[root@zabbix-web-server1 ~]# systemctl restart tomcat

[root@zabbix-web-server1 ~]# ss -ntl        #8080端口和12345端口也都正常开启
State       Recv-Q Send-Q     Local Address:Port                    Peer Address:Port              
LISTEN      0      128                    *:22                                 *:*                  
LISTEN      0      100            127.0.0.1:25                                 *:*                  
LISTEN      0      128                    *:10050                              *:*                  
LISTEN      0      128                    *:111                                *:*                  
LISTEN      0      128                 [::]:22                              [::]:*                  
LISTEN      0      50                  [::]:12345                           [::]:*                  
LISTEN      0      100                [::1]:25                              [::]:*                  
LISTEN      0      50                  [::]:43424                           [::]:*                  
LISTEN      0      50                  [::]:34274                           [::]:*                  
LISTEN      0      128                 [::]:10050                           [::]:*                  
LISTEN      0      50                  [::]:10052                           [::]:*                  
LISTEN      0      100                 [::]:8009                            [::]:*                  
LISTEN      0      128                 [::]:111                             [::]:*                  
LISTEN      0      100                 [::]:8080                            [::]:*   

3.2.8zabbix server添加JMX监控

3.2.9zabbix server关联模版

3.2.10验证当前JMX状态及数据

验证JMX数据:

3.2.11JMX监控生产模版使用

生产环境的JMX监控模板使用,主要添加了自定义监控项和阈值。

3.2.11.1选择并导入模版

3.2.11.2关联模版

3.2.11.3验证当前模版JMX数据

3.3.1.2被动模式工作流程

3.3zabbix主动与被动监控模式

3.3.1被动模式

无论是主动模式还是被动模式,都是站在zabbix agent角度来说的工作模式,比如被动模式,是说zabbix agent被动的接受zabbix server周期性发送过来的数据收集指令,在被动模式之下,zabbix server会根据主机关联的模板中的监控项和数据采集间隔时间,周期性的打开随机端口并向zabbix agent服务器的10050发起tcp连接,然后发送获取监控项数据的指令,即zabbix server发送什么指令那么zabbix agent就收集什么数据,zabbix server什么时候发送zabbix agent就什么时候采集,zabbix server不发送zabbix agent就一直不响应,所以zabbix agent也不用关心其监控项和数据采集周期间隔时间。

被动模式的优点就是配置简单,安装后即可使用,因此也成为zabbix 的默认工作模式,但是被动模式的最大问题就是会加大zabbix server的工作量,在数百甚至数千台服务器的环境下会导致zabbix server需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载很高还会导致不能及时获取到最新数据,但由于无需其他复杂配置,被设置为了默认的工作方式。

3.3.1.1被动模式端口状态

[root@zabbix-web-server1 ~]# netstat -tanlp#有大量的由zabbix server发起的访问本地10050端口的链接
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      996/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1085/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      7533/zabbix_agentd  
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      671/rpcbind         
tcp        0      0 10.0.0.30:10050         10.0.0.11:35712         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35744         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35778         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35682         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35780         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35708         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35672         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35772         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35700         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35668         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35692         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35768         TIME_WAIT   -                   
tcp        0     36 10.0.0.30:22            10.0.0.254:1990         ESTABLISHED 1255/sshd: root@pts 
tcp        0      0 10.0.0.30:10050         10.0.0.11:35758         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35740         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35722         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35658         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35754         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35736         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35760         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35680         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35766         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35710         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35702         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35724         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35664         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35752         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35696         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35730         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35718         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35728         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35686         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35704         TIME_WAIT   -                   
tcp        0      0 10.0.0.30:10050         10.0.0.11:35734         TIME_WAIT   -         

3.3.2主动模式

主动模式是由zabbix agent主动向zabbix server的10051端口发起tcp连接请求,因此主动模式下必须在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地址),在连接到zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在一定程度就减轻看zabbix server的压力

3.3.2.1主动模式工作流程

3.3.2.2修改zabbix agent为主动模式

[root@zabbix-web-server2 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm

[root@zabbix-web-server2 ~]# dnf clean all

[root@zabbix-web-server2 ~]# yum install -y zabbix-agent
[root@zabbix-web-server2 ~]# vim /etc/zabbix/zabbix_agentd.conf 
[root@zabbix-web-server2 ~]# cat /etc/zabbix/zabbix_agentd.conf |grep -Ev '^$|^#'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.11            #zabbix server地址
ListenPort=10050            #监听端口
StartAgents=3               #设置为0表示关闭被动模式,所以此时即开启被动模式,也开启主动模式
ServerActive=10.0.0.11      #这里默认为127.0.0.1为被动模式,如果设为zabbix server地址则为主动模式
Hostname=10.0.0.40          #主机名
Include=/etc/zabbix/zabbix_agentd.d/*.conf

[root@zabbix-web-server2 ~]# systemctl enable --now zabbix-agent.service 

3.3.2.3生成主动模式模版

3.3.2.4添加主动模式主机并关联主动模式模版

3.3.2.5验证主动模式主机状态

3.3.2.6验证主动模式主机数据

3.3.2.7验证主动模式主机端口

[root@zabbix-server ~]#netstat -tanlp | grep -n 10.0.0.40
54:tcp        0      0 10.0.0.11:10051         10.0.0.40:35094         TIME_WAIT   -                   
59:tcp        0      0 10.0.0.11:10051         10.0.0.40:35096         TIME_WAIT   -                   
76:tcp        0      0 10.0.0.11:10051         10.0.0.40:35098         TIME_WAIT   -