企业运维实战--Zabbix教程之Zabbix监控nginx、mysql、java应用以及zabbix+proxy分布式

  • 前言
  • 一、Zabbix添加监控服务nginx
  • 二、Zabbix监控添加mysql
  • 1.手动结合mysql与zabbix
  • 2.percona-mysql模板结合mysql与zabbix
  • 三、Zabbix监控java应用
  • 四、Zabbix + proxy分布式



前言

在上一章的博客中,我们主要介绍了zabbix的安装以及zabbix-server + zabbix-agent + zabbix-web的搭建。在server端进行配置,添加agent端到server端,通过web管理zabbix监控。


一、Zabbix添加监控服务nginx

实验环境:准备三台虚拟机server1、2、3,版本为rhel7.6,要求关闭火墙和selinux。

server1:zabbix-server端,
server2、3:zabbix-agent端

步骤可参考官方文档:https://www.zabbix.com/documentation/4.0/zh/manual

server2:

源码编译安装nginx服务并安装监控模块

./configure --with-http_stub_status_module --with-http_ssl_module

make install

创建软链接

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

微服务监控组件 zabbix监控微服务_nginx

编辑nginx配置文件,设定打开监控状态并设置访问控制,只允许本地访问。

vim conf/nginx.conf

location /status {
                stub_status on;
                access_log off;
                allow 127.0.0.1;
                deny all;
}

微服务监控组件 zabbix监控微服务_java_02

检测语法,开启服务

微服务监控组件 zabbix监控微服务_nginx_03

获取信息

curl -s http://localhost/status | grep Active | awk '{print $3}'

微服务监控组件 zabbix监控微服务_nginx_04

编写脚本,以及配置文件,通过agent获取到信息

cd /etc/zabbix/zabbix_agentd.d/
cp userparameter_mysql.conf userparameter_nginx.conf
vim userparameter_nginx.conf
cat userparameter_nginx.conf

微服务监控组件 zabbix监控微服务_java_05

微服务监控组件 zabbix监控微服务_nginx_06

UserParameter=nginx.active,curl -s http://localhost/status | grep Active | awk '{print $3}'

重启agent

systemctl restart zabbix-agent.service

微服务监控组件 zabbix监控微服务_zabbix_07

server1:

修改图形描述文字

cd /usr/share/zabbix/fonts/

微服务监控组件 zabbix监控微服务_java_08

rm -fr graphfont.ttf
ln -s simkai.ttf graphfont.ttf

ll graphfont.ttf

微服务监控组件 zabbix监控微服务_nginx_09

安装zabbix-get

yum install -y zabbix-get

微服务监控组件 zabbix监控微服务_nginx_10

zabbix_get --help
zabbix_get -s 172.25.9.2 -p 10050 -k "nginx.active"

微服务监控组件 zabbix监控微服务_zabbix_11

图形添加监控项,创建图形。

创建监控项详细操作:

微服务监控组件 zabbix监控微服务_mysql_12

微服务监控组件 zabbix监控微服务_mysql_13

微服务监控组件 zabbix监控微服务_微服务监控组件_14


创建图形详细操作:

微服务监控组件 zabbix监控微服务_nginx_15

微服务监控组件 zabbix监控微服务_微服务监控组件_16

创建完成,点击更新,查看图形结果

微服务监控组件 zabbix监控微服务_java_17


当出现数值时表明图形添加成功。

添加更多nginx监控项:

curl -s http://localhost/status | awk NR==3 | awk '{print $1}'
curl -s http://localhost/status | awk NR==3 | awk '{print $2}'
curl -s http://localhost/status | awk NR==3 | awk '{print $3}'

微服务监控组件 zabbix监控微服务_nginx_18

vim userparameter_nginx.conf
cat userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://localhost/status | grep Active | awk '{print $3}'
UserParameter=nginx.accept,curl -s http://localhost/status | awk NR==3 | awk '{print $1}'
UserParameter=nginx.handle,curl -s http://localhost/status | awk NR==3 | awk '{print $2}'
UserParameter=nginx.request,curl -s http://localhost/status | awk NR==3 | awk '{print $3}'

微服务监控组件 zabbix监控微服务_nginx_19

重启agent端服务读取脚本

systemctl restart zabbix-agent.service

微服务监控组件 zabbix监控微服务_nginx_20

server1:
验证配置是否有误,不报错则证明agent端配置正确。

zabbix_get -s 172.25.9.2 -p 10050 -k "nginx.accept"
zabbix_get -s 172.25.9.2 -p 10050 -k "nginx.handle"
zabbix_get -s 172.25.9.2 -p 10050 -k "nginx.request"

微服务监控组件 zabbix监控微服务_zabbix_21

web界面手动添加监控项,然后添加到图形中。

分别添加三个监控项nginx_accept,nginx_handle,nginx_request

微服务监控组件 zabbix监控微服务_zabbix_22

微服务监控组件 zabbix监控微服务_微服务监控组件_23

微服务监控组件 zabbix监控微服务_微服务监控组件_24


图形nginx_status添加监控项

微服务监控组件 zabbix监控微服务_java_25


微服务监控组件 zabbix监控微服务_zabbix_26


预览图形

微服务监控组件 zabbix监控微服务_mysql_27

二、Zabbix监控添加mysql

1.手动结合mysql与zabbix

zabbix添加服务会读取/etc/zabbix/zabbix_agentd.d/的.conf文件,手动监控添加mysql即编写musql相关.conf文件。由于server1主机已存在mysql,所以server1既可以当主机,又可以当agent机。

cd /etc/zabbix/zabbix_agentd.d/
vim userparameter_mysql.conf

创建目录存放zabbix脚本与模板

mkdir /var/lib/zabbix

cd /var/lib/zabbix/

编写文件引导

vim .my.cnf
cat .my.cnf

微服务监控组件 zabbix监控微服务_mysql_28


重启nginx服务,读取引导文件

systemctl restart zabbix-agent.service

微服务监控组件 zabbix监控微服务_java_29

验证配置是否正确

zabbix_get -s 127.0.0.1 -k 'mysql.ping'
 zabbix_get -s 127.0.0.1 -k 'mysql.version'

微服务监控组件 zabbix监控微服务_zabbix_30

微服务监控组件 zabbix监控微服务_微服务监控组件_31

web中手动添加模板

微服务监控组件 zabbix监控微服务_mysql_32


微服务监控组件 zabbix监控微服务_zabbix_33


微服务监控组件 zabbix监控微服务_微服务监控组件_34

微服务监控组件 zabbix监控微服务_微服务监控组件_35


手动添加的监控项为14个,对于一个庞大的mysql数据库而言是有点少了,所以我们采用固定模板percona-mysql来更见全面的监控MySQL数据库。

2.percona-mysql模板结合mysql与zabbix

首先删掉之前手动添加的mysql数据库模块。

微服务监控组件 zabbix监控微服务_zabbix_36

安装percona-mysql模块rpm包

rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

微服务监控组件 zabbix监控微服务_微服务监控组件_37

cd /var/lib/zabbix/percona/templates/
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

微服务监控组件 zabbix监控微服务_微服务监控组件_38

安装php与mysql连接模块

yum install -y php-mysql

微服务监控组件 zabbix监控微服务_zabbix_39

编辑php脚本,修改连接mysql数据库的用户和密码为root

cd scripts/
vim ss_get_mysql_stats.php

微服务监控组件 zabbix监控微服务_nginx_40

重启agent服务

systemctl restart zabbix-agent.service

微服务监控组件 zabbix监控微服务_mysql_41

测试查看模块是否添加成功

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
cd /tmp/
 ll
cat localhost-mysql_cacti_stats.txt

微服务监控组件 zabbix监控微服务_mysql_42


测试后在/tmp/目录下生成.txt文件

微服务监控组件 zabbix监控微服务_nginx_43


查看生成文件内容

微服务监控组件 zabbix监控微服务_nginx_44

测试完成后删除.txt,因为root用户下测试的文件其余用户无法写入

rm -fr localhost-mysql_cacti_stats.txt
ll

微服务监控组件 zabbix监控微服务_java_45

web添加模板,

选择导入,选择模板文件

微服务监控组件 zabbix监控微服务_zabbix_46


微服务监控组件 zabbix监控微服务_mysql_47


导入成功会显示 已成功导入

微服务监控组件 zabbix监控微服务_微服务监控组件_48


微服务监控组件 zabbix监控微服务_zabbix_49

再导入,因为此时的mysql没有主从一致,所以关闭slave监听端口的触发器

微服务监控组件 zabbix监控微服务_zabbix_50

微服务监控组件 zabbix监控微服务_mysql_51

完成后再次查看/tmp/下生成的文件

cat localhost-mysql_cacti_stats.txt

微服务监控组件 zabbix监控微服务_zabbix_52

微服务监控组件 zabbix监控微服务_java_53

监控配置完成的标志之一就是,web端可查看图形中的数据。

微服务监控组件 zabbix监控微服务_java_54

三、Zabbix监控java应用

server1:

安装zabbix与java模块插件

yum install  -y zabbix-java-gateway.x86_64

微服务监控组件 zabbix监控微服务_mysql_55

vim /etc/zabbix/zabbix_java_gateway.conf
systemctl enable --now zabbix-java-gateway.service

微服务监控组件 zabbix监控微服务_java_56

默认java应用监听端口10052

netstat -antlp|grep :10052

微服务监控组件 zabbix监控微服务_java_57

配置server文件

vim zabbix_server.conf

JavaGateway=172.25.9.1  #设定java监听网关指向zabbix-server主机

StartJavaPollers=5 # Java轮询器

微服务监控组件 zabbix监控微服务_mysql_58

微服务监控组件 zabbix监控微服务_mysql_59

重启zabbix-server服务

systemctl restart zabbix-server.service

微服务监控组件 zabbix监控微服务_java_60

server3:安装java服务

安装tomcat

tar zxf apache-tomcat-7.0.90.tar.gz -C /usr/local/
cd /usr/local/
ls
ln -s apache-tomcat-7.0.90/ tomcat

微服务监控组件 zabbix监控微服务_java_61

微服务监控组件 zabbix监控微服务_java_62

编辑tomcat脚本,设定监听端口为8888

vim /usr/local/tomcat/bin/catalina.sh

CATALINA_OPTS='-Dcom.sun.management.jmxremote
  -Dcom.sun.management.jmxremote.port=8888
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false'

微服务监控组件 zabbix监控微服务_微服务监控组件_63

安装jdk

yum install -y java

微服务监控组件 zabbix监控微服务_nginx_64

脚本启动tomcat,其中tomcat端口为8080,检查8888端口是否启动

cd /usr/local/tomcat/
bin/startup.sh
netstat -antlp

微服务监控组件 zabbix监控微服务_zabbix_65

微服务监控组件 zabbix监控微服务_mysql_66


网页测试tomcat是否启动成功,访问172.25.9.3:8080端口

微服务监控组件 zabbix监控微服务_mysql_67

进入zabbix-web配置模板添加java通用模板

微服务监控组件 zabbix监控微服务_zabbix_68


添加JMX接口

微服务监控组件 zabbix监控微服务_mysql_69

JMX启动成功状态

微服务监控组件 zabbix监控微服务_微服务监控组件_70


查看图形

微服务监控组件 zabbix监控微服务_微服务监控组件_71

四、Zabbix + proxy分布式

准备一台全新的虚拟机server4,安装zabbix+proxy安装包,配置zabbix+proxy分布式

server4 proxy:

yum list zabbix-*
yum install -y zabbix-proxy-mysql.x86_64

微服务监控组件 zabbix监控微服务_nginx_72


修改zabbix_proxy配置文件

vim /etc/zabbix/zabbix_proxy.conf
Server=172.25.9.1 #分布式服务位于zabbix-server端
ServerPort=10051 #默认端口为10051
Hostname=proxy #主机名为proxy,需要与添加的proxy名保持一致,并且所有zabbix的服务机都需要做解析
DBHost=172.25.9.1 #数据库位置
DBName=zabbix_proxy #数据库中的库名称
DBUser=zabbix #访问数据库的身份
DBPassword=westos #访问数据库的密码
JavaGateway=172.25.9.1 #java服务监听端口指向zabbix-server端
StartJavaPollers=5 #Java轮询器为5,实际设置根据需求

将生成的数据库信息传给数据库位置server1中

cd /usr/share/doc/zabbix-proxy-mysql-4.0.5/
scp schema.sql.gz server1:

微服务监控组件 zabbix监控微服务_java_73

修改完配置文件后重启服务

systemctl restart zabbix-proxy.service

查看服务进程是否开启

ps ax

微服务监控组件 zabbix监控微服务_java_74

修改主机名为proxy并添加解析

hostnamectl set-hostname proxy
vim /etc/hosts

微服务监控组件 zabbix监控微服务_zabbix_75

systemctl restart zabbix-proxy.service
cat /var/log/zabbix/zabbix_proxy.log

server1:

创建mysql数据库zabbix_proxy,并将库的所有权利给zabbix用户,授权后刷新

微服务监控组件 zabbix监控微服务_微服务监控组件_76

将schema.sql.gz 文件解压后导入 zabbix_proxy 库中

zcat schema.sql.gz | mysql -pwestos zabbix_proxy

微服务监控组件 zabbix监控微服务_微服务监控组件_77

解析proxy

vim /etc/hosts

微服务监控组件 zabbix监控微服务_微服务监控组件_78

server3:

vim /etc/hosts
cat /etc/hosts

微服务监控组件 zabbix监控微服务_mysql_79

将server3的服务指向proxy,通过proxy连接server,agent ----> proxy(4) ----> server
vim /etc/zabbix/zabbix_agentd.conf

Server=172.25.9.4
ServerActive=172.25.9.4

systemctl restart zabbix-agent.service

测试web创建agent代理程序

微服务监控组件 zabbix监控微服务_nginx_80

微服务监控组件 zabbix监控微服务_微服务监控组件_81


微服务监控组件 zabbix监控微服务_zabbix_82

server4端查看日志

cat /var/log/zabbix/zabbix_server.log

微服务监控组件 zabbix监控微服务_nginx_83


设定server3中的java导入proxy后日志变化

微服务监控组件 zabbix监控微服务_mysql_84

接收来自172.25.9.1数据成功

server1端查看日志

微服务监控组件 zabbix监控微服务_nginx_85

如果出现error,刷新zabbix-server 数据修改缓存

zabbix_server --help
zabbix_server -R config_cache_reload

查看web端状态

微服务监控组件 zabbix监控微服务_nginx_86


server3通过server4的proxy成功连接到zabbix-server端,并且所有服务恢复启用。