Zabbix 系统监控的常用配置
在zabbix监控中,自定义监控使得zabbix监控十分灵活多变,可以说我们想要监控什么就可以监控什么。之所以能够这样说,是因为zabbix的自定义监控完全由我们个人定义,高度定制化、自由化。接下来我们来看一下如何配置zabbix的自定义监控 以及如何创建触发器。plugins.d##这里的:UserParameter= 是固定格式 ,后面接自定义监控项的名字,监控项名字后面跟的是命令##命令返回
Zabbix 系统监控的常用配置
本篇文章文章将按照以下内容来讲解:
- zabbix自定义监控以及自定义模板
- zabbix邮件告警
- zabbix监控 Java应用
- 自动发现与自动注册
- 分布式监控——zabbix代理服务器
- zabbix 低级自动发现
- zabbix高可用
- zabbix接入grafana
一、zabbix自定义监控
在zabbix监控中,自定义监控使得zabbix监控十分灵活多变,可以说我们想要监控什么就可以监控什么。之所以能够这样说,是因为zabbix的自定义监控完全由我们个人定义,高度定制化、自由化。
接下来我们来看一下如何配置zabbix的自定义监控 以及如何创建触发器。
1、自定义监控需要我们修改客户端的配置文件: /etc/zabbix/zabbix_agent2.d:
[root@web03 ~]# cd /etc/zabbix/zabbix_agent2.d/
[root@web03 /etc/zabbix/zabbix_agent2.d]# ls
plugins.d
[root@web03 /etc/zabbix/zabbix_agent2.d]#
2、接下来我们创建一个简单的自定义监控项: 检查nginx的端口号是否存在:
[root@web03 /etc/zabbix/zabbix_agent2.d]# vim chk_ngx_port.conf
[root@web03 /etc/zabbix/zabbix_agent2.d]# cat chk_ngx_port.conf
UserParameter=chk_ngx_port,ss -lntup | grep -w 80 | wc -l
##这里的:UserParameter= 是固定格式 ,后面接自定义监控项的名字,监控项名字后面跟的是命令
##命令返回的结果就是监控项的值
3、创建完成之后重启一下zabbix-agent2:
[root@web03 /etc/zabbix/zabbix_agent2.d]# systemctl restart zabbix-agent2.service
[root@web03 /etc/zabbix/zabbix_agent2.d]# ss -lntup | grep 10050
tcp LISTEN 0 128 [::]:10050 [::]:* users:(("zabbix_agent2",pid=88527,fd=9))
[root@web03 /etc/zabbix/zabbix_agent2.d]#
4、接下来我们在服务端查看一下刚才定义的监控项是否能够使用:
[root@manager01 ~]# zabbix_get -s 172.16.1.9 -k chk_ngx_port
1
[root@manager01 ~]#
##可以看到监控项能够使用
5、监控项定义完毕之后我们在web页面配置一下:
点击主机——找到web03——点击监控项
点击创建监控项
填入自定义名称(随便填),类型选择客户端,键值填写刚刚自定义监控的键值名称,信息类型选择数字。填写完成后点击下方的添加
我们可以点击主机——监控项,输入刚才创建监控项的键值,点击应用 来查看我们创建的自定义监控项
我们可以点进去查看最新数据
可以看到,最新数据是1 也就是我们命令行:ss -lntup | grep -w 80 | wc -l 取出来的数据
到此我们的自定义监控项就创建完成了。接下来我们根据这个监控项来创建一个触发器,来实现当80端口关闭时,zabbix进行告警,当恢复正常时,告警关闭。
触发器的配置很简单,都是在web页面是进行配置的,无需修改配置文件。
点击创建触发器
填入自定义名称以及告警的分类,点击添加表达式
在监控项那一行填入我们刚才自定义的监控项,点击插入。
这个表达式的意思是:每隔固定的时间来获取一下我们填入的监控项的值,并看结果是否等于0,如果等于0的话就告警
这里我们点击恢复表达式,然后点击添加
填入我们自定义的监控项,将结果那一行改为 <> 0 点击插入
这个表达式的意思是:每隔固定的时间来获取一下我们填入的监控项的值,并看结果是否不等于0,如果不等于0的话就取消告警,恢复正常
点击添加即可
做完之后 我们可以查看一下我们添加的触发器
接下来我们测试一下 触发器是否能使用
我们先在web03上面停止nginx服务,看是否会告警
[root@web03 /etc/zabbix/zabbix_agent2.d]# systemctl stop nginx
[root@web03 /etc/zabbix/zabbix_agent2.d]# systemctl status nginx
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: inactive (dead) since 日 2024-07-21 14:22:16 CST; 3s ago
Docs: http://nginx.org/en/docs/
Process: 11700 ExecStop=/bin/sh -c /bin/kill -s TERM $(/bin/cat /var/run/nginx.pid) (code=exited, status=0/SUCCESS)
Process: 35467 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 35468 (code=exited, status=0/SUCCESS)
7月 21 12:50:47 web03 systemd[1]: Starting nginx - high performance web server...
7月 21 12:50:47 web03 systemd[1]: Can't open PID file /var/run/nginx.pid (yet?) after start: No such file or directory
7月 21 12:50:47 web03 systemd[1]: Started nginx - high performance web server.
7月 21 14:22:16 web03 systemd[1]: Stopping nginx - high performance web server...
7月 21 14:22:16 web03 systemd[1]: Stopped nginx - high performance web server.
[root@web03 /etc/zabbix/zabbix_agent2.d]#
接下来我们看一下web页面是否有告警出现,如果暂时未出现我们可以刷新一下页面看一下。
可以看到,出现告警
当我们将web03上的nginx启动时,告警也会随之消失。这里我们就不再演示了。
二、zabbix邮件告警
zabbix可以实现邮件告警,这样当服务器和我们监控的机器出问题之后,可以通过邮件的方式来告诉我们,避免接收不到信息而错过及时处理问题。接下来我们一起配置一下zabbix的邮件告警。
1、配置媒介类型
我们点击管理——媒介——创建媒介类型
这里的名称可以自己定义。我这里SMTP服务器选择的是163 。配置文笔后点击添加即可
2、配置用户报警媒介
媒介创建完之后,我们点击用户
我们点击添加
在类型里面选择我们刚刚创建的媒介,收件人填写自己的QQ邮箱即可,最后点击添加。
3、配置触发器动作
点击:动作——触发器动作——创建动作
这里动作的名称可以自定义,随便写。名字填写完之后 点击添加条件。我这里选的条件类型是 主机群组,操作者是:等于,主机群组全选。点击添加。
点击完添加之后,点击操作,添加操作。
添加的操作如下。以此类推,将恢复操作,更新操作也这样填写即可。
接下来我们测试一下当出现问题之后,是否会给我们发邮件进行告警。
我们先将web01的nginx服务停止
[root@web01 ~]# systemctl stop nginx
接下来查看仪表盘,可以看到,个人邮箱告警邮件已送达。
接下来我们重启nginx服务
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl status nginx.service
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2024-07-21 18:48:25 CST; 3min 57s ago
Process: 28106 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 28104 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 28103 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 28108 (nginx)
CGroup: /system.slice/nginx.service
├─28108 nginx: master process /usr/sbin/nginx
└─28109 nginx: worker process
7月 21 18:48:25 web01 systemd[1]: Starting The nginx HTTP and reverse proxy server...
7月 21 18:48:25 web01 nginx[28104]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
7月 21 18:48:25 web01 nginx[28104]: nginx: configuration file /etc/nginx/nginx.conf test is successful
7月 21 18:48:25 web01 systemd[1]: Started The nginx HTTP and reverse proxy server.
再次查看仪表盘发现问题已经解决了
接下来我们查看绑定的QQ邮箱。可以看到 一共发了两次邮件,一次是nginx服务停止的时候,一次是nginx服务重新启动的时候
至此,我们的zabbix邮件告警配置完毕。
三、zabbix监控Java应用 、tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
此次实验在web03上进行,web03已安装tomcat
1、修改tomcat的配置文件,并重启tomcat
[root@web03 /app/tools/tomcat/bin]# vim catalina.sh
##在第125行下面加入一下内容:
CATALINA_OPTS="$CATALINA_OPTS \
-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" ##这里的ip地址填写web03的ip地址
[root@web03 /app/tools/tomcat/bin]# systemctl restart tomcat.service
[root@web03 /app/tools/tomcat/bin]#
-Dcom.sun.management.jmxremote 表示开启JMX远程管理功能。
-Dcom.sun.management.jmxremote.port=12345 表示指定JMX远程连接的端口号为12345。
-Dcom.sun.management.jmxremote.ssl=false 表示禁用JMX远程连接的SSL安全传输。
-Dcom.sun.management.jmxremote.authenticate=false 表示禁用JMX远程连接的身份验证。
2、配置完成之后,我们在服务端:m01 进行配置
(1)先安装zabbix-java-gateway
[root@manager01 ~]# yum -y install zabbix-java-gateway.x86_64
(2)修改配置文件
[root@manager01 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0" # 9行,监听地址
LISTEN_PORT=10052 # 17行,监听端口
PID_FILE="/var/run/zabbix/zabbix_java.pid" # 27行,PID_FILE文件路径
START_POLLERS=5 # 35行,开启的工作线程数量
[root@manager01 ~]# systemctl start zabbix-java-gateway
[root@manager01 ~]# systemctl enable zabbix-java-gateway
[root@manager01 ~]# systemctl status zabbix-java-gateway.service
● zabbix-java-gateway.service - Zabbix Java Gateway
Loaded: loaded (/usr/lib/systemd/system/zabbix-java-gateway.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2024-07-21 19:12:15 CST; 2min 19s ago
Main PID: 26213 (java)
CGroup: /system.slice/zabbix-java-gateway.service
└─26213 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-...
7月 21 19:12:15 manager01 systemd[1]: Stopped Zabbix Java Gateway.
7月 21 19:12:15 manager01 systemd[1]: Starting Zabbix Java Gateway...
7月 21 19:12:15 manager01 systemd[1]: Started Zabbix Java Gateway.
(3)修改zabbix-server配置文件,并重启zabbix-server
[root@manager01 ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1 # 297行,IP地址
JavaGatewayPort=10052 # 305行,端口
StartJavaPollers=5 # 313行,采集数据的进程数
[root@manager01 ~]# systemctl restart zabbix-server.service
[root@manager01 ~]# systemctl status zabbix-server.service
● zabbix-server.service - Zabbix Server with MySQL DB
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2024-07-21 19:20:29 CST; 8s ago
Main PID: 36043 (zabbix_server)
Tasks: 53
CGroup: /system.slice/zabbix-server.service
3、在web页面进行配置,填写完之后点击添加即可
可以看到web03的zbx和jmx图标已经亮起来了。至此我们就实现了对tomcat的监控
四、自动发现与自动注册
自动发现(服务端主动):zabbix服务端主动找是否有新的主机,如果有的话则添加进来,并关联模板。配置简单,大量添加主机不合适,临时性可用。
自动注册(客户端主动):zabbix客户端主动找服务端提交自己的信息,请求向服务端注册。配置繁琐,经常性使用。适用于大量主机。
实验环境:
10.0.0.61:zabbix-server
10.0.0.7:web01(客户端)
10.0.0.8:web02(客户端)
接下来我们按照以下三步骤开始配置:
1、客户端(zbx agent),配置文件
2、web页面配置自动发现规则 -发现主机
3、web页面配置自动发现动作 -发现主机后关联模板,添加主机,加入主机组,启用
1、配置客户端配置文件(下载zabbix-agent2,这里我只配置了web02,web01同理也是如此配置)
[root@web02 /etc/yum.repos.d]# rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
获取https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.sUe8Da: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-6.0-4.el7 ################################# [100%]
[root@web02 /etc/yum.repos.d]# sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@web02 /etc/yum.repos.d]# yum install -y zabbix-agent2
1.1、修改配置文件(以下为修改的内容)
[root@web02 ~]# egrep -v '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.0.0.61,172.16.1.61 ##这里填写你自己的zbx服务端的ip
ServerActive=10.0.0.61,172.16.1.61 ##这里填写你自己的zbx服务端的ip
Hostname=web02 ##hostname填写本机的主机名
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
[root@web02 ~]#
1.2、启动 zabbix-agen2
[root@web02 ~]# systemctl restart zabbix-agent2.service
[root@web02 ~]# ss -ntl ##当出现10050端口说明启动成功
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:80 *:*
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 100 [::1]:25
1.3、测试与服务端的连通性(能够出现以下内容,说明客户端和服务端能够通信)
[root@manager01 ~]# zabbix_get -s 172.16.1.8 -k system.uname
Linux web02 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
[root@manager01 ~]# zabbix_get -s 10.0.0.8 -k system.uname
Linux web02 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
[root@manager01 ~]#
2.1、web页面创建自动发现规则
2.2、配置自动发现规则
2.3、创建发现动作
2.4、查看自动发现状态,看是否已经发现web服务器
2.5、查看是否添加web服务器
添加完自动发现之后,我们发现web01和web02,已经自动添加过来了,说明试验成功。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)