监控 http 服务
http是zabbix自带的监控模板。
- step1 在server2中安装http
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 STATUSG' | 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 statusG" | grep Slave_IO_Running | awk '{print $2}'
mysql -uroot -proot -e "show slave statusG" | 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 statusG" | grep Slave_IO_Running | awk '{print $2}'`
SQL=`mysql -uroot -proot -e "show slave statusG" | 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
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