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 -