前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构建企业级监控平台系列(十一):Zabbix 配置监控 Nginx、MySQL 等常见应用

构建企业级监控平台系列(十一):Zabbix 配置监控 Nginx、MySQL 等常见应用

作者头像
民工哥
发布2023-10-23 19:56:02
6510
发布2023-10-23 19:56:02
举报

监控 http 服务

http是zabbix自带的监控模板。

  • step1 在server2中安装http
代码语言:javascript
复制
yum install httpd -y
  • step2 配置—主机—server2
  • step3 模版—添加—Template App HTTP service—更新
  • step4 配置—模版—Template App HTTP service
  • step5 监控项—已启用

监控 nginx 服务

nginx监控项zabbix没有,需要自定义监控项。

部署nginx服务
代码语言:javascript
复制
tar zxf nginx-1.16.1.tar.gz
cd nginx-1.16.1
yum install gcc pcre-devel zlib-devel -y
./configure --prefix=/usr/local/nginx --with-http_stub_status_module
make && make install

cd /usr/local/nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

cd conf/
vim nginx.conf

        location /status {
                stub_status on;
                access_log off; #关闭日志记录
                allow 127.0.0.1; #只允许本机访问
                deny all;
        }
        
useradd -u 900 nginx
nginx
netstat -antlp | grep 80

注意:Nginx中的stub_status模块主要用于查看Nginx的一些状态信息。本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定:./configure –with-http_stub_status_module。更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

测试:利用curl http://127.0.0.1/status访问nginx用来做测试。

代码语言:javascript
复制
curl http://127.0.0.1/status
curl http://127.0.0.1/status | grep Active
curl -s http://127.0.0.1/status | grep Active
curl -s http://127.0.0.1/status | grep Active|awk '{print $3}'
创建nginx监控项(nginx.active)
代码语言:javascript
复制
cd /etc/zabbix/zabbix_agentd.d/
ls
cp userparameter_mysql.conf userparameter_nginx.conf
vim userparameter_nginx.conf 
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active|awk '{print $3}'

systemctl restart zabbix-agent

zabbix-server端测试是否能拿到数据:

代码语言:javascript
复制
yum install zabbix-get-4.4.1-1.el7.x86_64.rpm -y
zabbix_get -s 172.25.254.3 -p 10050 -k "nginx.active"
在监控平台添加监控项
  • step1 配置—主机—server3
  • step2 监控项—创建监控项
  • step3 名称—键值—更新间隔—应用
  • step4 主机—图形—创建图形
  • step5 监控项添加—nginx_active—选择—添加
  • step6 配置—主机—server-2–图形—预览

字体乱码需要参考前面的配置进行相关的修改即可。

创建nginx监控项(nginx.accept)
代码语言:javascript
复制
curl -s http://127.0.0.1/status | awk NR==3
curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
ls
vim userparameter_nginx.conf 
UserParameter=nginx.accept,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
systemctl restart zabbix-agent

zabbix-server端测试是否能拿到数据:

代码语言:javascript
复制
zabbix_get -s 172.25.254.3 -p 10050 -k "nginx.accept"
监控平台添加监控项
  • step1 配置—主机—server3
  • step2 监控项—创建监控项
  • step3 名称—键值—更新间隔—应用
  • step4 主机—图形—nginx_status
  • step5 监控项添加—nginx_accept—选择—添加
  • step6 配置—主机—server3—图形—预览

更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

监控 MySQL 服务

配置 mysql
代码语言:javascript
复制
mkdir /var/lib/zabbix
mysqladmin -uzabbix -p123 -h 127.0.0.1 ping
mysqladmin -uzabbix -p123 -h 127.0.0.1 ping | grep -c alive
cd /var/lib/zabbix
vim .my.cnf
[mysql]
host = localhost
user = root
password = 123
socket = /var/lib/mysql/mysql.sock

[mysqladmin]
host = localhost
user = root
password = 123
socket = /var/lib/mysql/mysql.sock

systemctl restart zabbix-agent
安装 percona-zabbix 模版

percona需要php环境

代码语言:javascript
复制
yum -y install php php-mysql
代码语言:javascript
复制
wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm 
[root@localhost~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
警告:percona-zabbix-templates-1.1.8-1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:percona-zabbix-templates-1.1.8-1 ################################# [100%]

Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates

进入安装目录会发现有2个目录,一个是脚本目录,一个是模版目录。

代码语言:javascript
复制
[root@localhost~]# cd /var/lib/zabbix/percona/
[root@localhost percona]# tree
.
├── scripts
│   ├── get_mysql_stats_wrapper.sh
│   └── ss_get_mysql_stats.php
└── templates
    ├── userparameter_percona_mysql.conf
    └── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

其中脚本目录里有2个脚本,用来获取数据库信息

代码语言:javascript
复制
[root@localhost percona]# cd scripts/
[root@localhost scripts]# ls
get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php

修改get_mysql_stats_wrapper.sh

代码语言:javascript
复制
#修改get_mysql_stats_wrapper数据库登陆信息,第19行添加mysql账号密码。

sed -n '19p' get_mysql_stats_wrapper.sh RES=`HOME=~zabbix mysql -uroot -p123 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' 

复制自定义监控项配置文件到zabbix目录

代码语言:javascript
复制
cd /var/lib/zabbix/percona/
cd templates/
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ #拷贝userparameter_percona_mysql.conf文件到被监控的mysql服务器上

修改ss_get_mysql_stats.php

代码语言:javascript
复制
cd ..
cd scripts/
vim ss_get_mysql_stats.php.cnf #由于percona的监控脚本是使用php写的,所以需要准备好php运行环境,将zabbix的数据库和密码写入php脚本中
<?php
$mysql_user = 'root';
$mysql_pass = '123';

systemctl restart zabbix-agent

测试percona的脚本:

代码语言:javascript
复制
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gk #测试脚本
cat /tmp/localhost-mysql_cacti_stats.txt #查看监控项  

更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

导入模板
  • step1 配置—模版—导入
  • step2 选择导入模版路径—聚合图形—导入
  • step3 配置—主机—zabbix server
  • step4 模版—更新—选择
  • step5 配置—主机—zabbix server—图形—预览
监控 MySQL 主从状态
zabbix客户端监控脚本和监控项配置

我们可以通过以下命令来判定MySQL主从同步的状态:

代码语言:javascript
复制
mysql -uroot -proot -e "show slave status\G" | grep  Slave_IO_Running | awk '{print $2}'
mysql -uroot -proot -e "show slave status\G" | grep  Slave_SQL_Running | awk '{print $2}'

执行结果如下:

可以看出,在主从同步成功的情况下,这两条命令返回的结果都是Yes,因此,我们据此可以编写脚本如下:

代码语言:javascript
复制
#!/bin/bash
# 2022年3月27日 22:21:18
# Authored by pzz
# Used to test the MySQL Replication
IO=`mysql -uroot -proot -e "show slave status\G" | grep  Slave_IO_Running | awk '{print $2}'`
SQL=`mysql -uroot -proot -e "show slave status\G" | grep  Slave_SQL_Running | awk '{print $2}'`

if [ $IO == "Yes" -a $SQL == "Yes" ];then
        echo 1
else
        echo 0
fi

编写zabbix的监控项配置如下:

代码语言:javascript
复制
UserParameter=mysql.rep,/usr/local/zabbix/scripts/mysql_rep.sh

上述操作完成后,我们在zabbix服务端测试一下我们编写的监控项,结果如下:

可以看出,zabbix监控项配置成功!更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

zabbix web配置

在完成上述配置后,我们可以依次进行添加zabbix主机——模板——监控项——触发器——动作

效果检验

最后,让我们检验一下配置的成果。登录MySQL从库后,执行命令:

代码语言:javascript
复制
stop slave

发现zabbix出现告警,如下所示:

与此同时,邮箱里面收到了zabbix的告警邮件,如下所示:

综上,我们的zabbix监控MySQL主从状态实战配置成功!

监控MySQL性能

通过在zabbix客户端编写脚本,实现对MySQL数据库的性能进行信息进行提取,并配置成zabbix的监控项,以实现zabbix对MySQL性能的监控,最终实现把MySQL数据库的性能通过图形的形式表现出来。

Agent脚本编写

在zabbix客户端上,我们已经安装好了MySQL和zabbix。如何获得MySQL的性能参数呢,我们可以通过执行命令:

代码语言:javascript
复制
mysqladmin -uroot -proot status

来初步判定MySQL的性能,该命令执行结果如下:

或者是执行命令:

代码语言:javascript
复制
mysqladmin -uroot -proot extended-status

该命令执行结果如下:

在该命令执行后,我们还可以通过awk命令来把具体参数的内容进行提取。下面,我们来提取MySQL数据库的Uptime、Threads、Slow Queries、Queries per second avg和五个参数,可以分别执行命令:

代码语言:javascript
复制
mysqladmin -uroot -proot status |  awk '{print $2}'
mysqladmin -uroot -proot status |  awk '{print $4}'
mysqladmin -uroot -proot status |  awk '{print $9}'
mysqladmin -uroot -proot status |  awk '{print $22}'
mysqladmin -uroot -proot extended-status | grep "Bytes_sent" | awk '{print $4}'

上述命令执行结果如下:

这样,我们就可以将这些性能具体提取出来了,接下来,我们来编写一下zabbix客户端的脚本。脚本内容如下:

代码语言:javascript
复制
#!/bin/bash
# 2022年3月27日 20:22:32
# Authoed by pzz
# Used to get the MySQL parameter
CONNECTION1="mysqladmin -uroot -proot status"
CONNECTION2="mysqladmin -uroot -proot extended-status"
if [ $# -ne 1 ];then
        echo "arg error,there should be one arg!"
else
        case $1 in
                uptime)
                        result=`$CONNECTION1 | awk '{print $2}'`
                        ;;
                threads)
                        result=`$CONNECTION1 | awk '{print $4}'`
                        ;;
                slow_queries)
                        result=`$CONNECTION1 | awk '{print $9}'`
                        ;;
                avg_time)
                        result=`$CONNECTION1 | awk '{print $22}'`
                        ;;
                bytes_sent)
                        result=`$CONNECTION2 | grep "Bytes_sent" |awk '{print $4}'`
                        ;;
                *)
                        echo "Usage:$0(uptime|threads|slow_queries|avg_time|bytes_sent)"
        esac
        echo $result
fi

脚本完成后,我们来测试一下脚本的可行性,结果如下:

可以看出,我们编写的脚本工作正常,可以运行并检测MySQL的一些性能参数。然后我们在zabbix server端上测试一下,结果如下:

可以看出,zabbix server端也运行正常。更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

zabbix web端配置

接下来,我们就可以进行zabbix web端的配置了。大致流程如下:添加模板——添加监控项——将模板添加到主机上——添加图形。

选择配置——主机,点击图形,如下所示:

进入图形页面后,点击右上角的添加图形页面,并填写名称、以及监控项等内容,结果如下:

完成上述添加后,我们点击下方的“添加”就可以把刚才我们的自定义图形添加上去了,添加完成后的页面如下所示:

图形查看

最后,我们来查看一下刚才配置的结果。进入监控——图形页面,选择我们要监控的图形,结果如下:

可以看出,我们已经能够通过自定义的监控项来显示图形了,我们的zabbix监控MySQL性能实战成功!

使用 JMX 监控tomcat

安装tomcat和jdk

在server2(agent的客户端)上安装tomcat和jdk,并打开tomcat:

代码语言:javascript
复制
rpm -ivh jdk-8u121-linux-x64.rpm 
tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-8.5.24 tomcat
vim /usr/local/tomcat/bin/catalina.sh #向tomcat中添加JMX的参数 

CATALINA_OPTS='-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888 #监听端口号,方便远程访问
-Dcom.sun.management.jmxremote.ssl=false #是否对连接开启SSL加密,默认开启
-Dcom.sun.management.jmxremote.authenticate=false' #是否需要开启用户认证,默认开启

补充:JMX全称Java Management Extensions, 为Java应用提供管理扩展功能

代码语言:javascript
复制
cd tomcat/
cd bin/
./startup.sh #启动tomcat
安装zabbix-java-gateway

server1(server端)安装zabbix-java-gateway,并做相应配置:

代码语言:javascript
复制
yum install zabbix-java-gateway-4.4.1-1.el7.x86_64.rpm -y
systemctl start zabbix-java-gateway
netstat -antlp | grep 10052
vim /etc/zabbix/zabbix_server.conf 
288 JavaGateway=172.25.254.1
296 JavaGatewayPort=10052
304 StartJavaPollers=5
systemctl restart zabbix-server
zabbix监控界面进行相应设置
  • step1 配置—主机—server2
  • step2 JMX接口—更新
  • step3 配置—主机—模版—取消链接并清理
  • step4 配置—主机—模版—添加—Java JMX—更新
  • step5 查看到server2此时JMX图标为灰色
  • step6
代码语言:javascript
复制
vim /etc/zabbix/zabbix_java_gateway.conf 

  9 LISTEN_IP="172.25.254.1"
 17 LISTEN_PORT=10052
 35 START_POLLERS=5

systemctl restart zabbix-java-gateway
  • step7 刷新—查看到server2此时JMX图标为绿色

更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。

参考:https://blog.csdn.net/nigar_/article/details/ 104947833 https://blog.csdn.net/nigar_/article/ details/104965706 https://blog.csdn.net/ weixin_40228200/article/details/123782914

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 监控 http 服务
  • 监控 nginx 服务
  • 监控 MySQL 服务
    • 监控 MySQL 主从状态
      • 监控MySQL性能
        • Agent脚本编写
        • 使用 JMX 监控tomcat
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档