目录
五、zabbix实现数据库监控
1、在agent端设置
2、在浏览器前端设置
六、zabbix对JMX(Java)应用的支持
七、server和agent的关系
1、agent端的信息采集变被动为主动
2、zabbix的server端的分布式架构——zabbix代理
第一步:参考官网文档
第二步:引入代理机制的概念
第三步:实验环境
第四步:安装软件包
第五步:安装并配置proxy
第六步:在agent端配置(server8上)
八、zabbix的监控报警
1、实验环境:先注册一个可以实现微信报警功能的帐号
2、zabbix报警平台的使用
3、配置zabbix_server
4、在浏览器中查看
5、在云报警平台上的配置
6、模拟问题
一般提供的模板都中都有自带的插件,没有的话可以导入第三方插件,再没有就自己编译插件。
五、zabbix实现数据库监控
1、在agent端设置
第一步:实验环境
在zabbix服务端(server6)中安装监控mysql的zabbix插件。其实测试时应该是在agent端安装,但是server6上已经有了mysql了,所以直接在本机上安装监控插件。换言之,server6既是mysql客户端,也是zabbix的agent端;同时也是zabbix的server端。自己监控自己!!!
第二步:复制模板到</etc/zabbix/zabbix_agentd.d/>目录下,因为此目录中的配置文件模板可以用来直接作为监控项。复制完成后重启zabbix-agent服务使其生效。
systemctl restart zabbix-agent.service #重启zabbix-agent服务
以下图为例:
第三步:执行脚本和php文件
具体操作步骤为:(1)zabbix的监控配置文件中的监控命令</etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf>,调用的是(2)</var/lib/zabbix/percona/scripts>目录中的shell脚本,(3)脚本中调用的是同一目录下的<ss_get_mysql_stats.php>文件。php文件中获取到数据库的基本信息后,返回给shell脚本,zabbix监控配置目录中调用脚本得到要监控的参数。
修改 php文件中访问数据库的帐号和密码。
vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
30 $mysql_user = 'root';
31 $mysql_pass = 'Westos+007';
第四步:执行脚本测试
直接执行的话,报错,因为找不到执行路径下的php环境变量。
通过以下方式解决:
rpm -qa| grep php
rpm -ql rh-php72-php-cli-7.2.24-1.el7.x86_64
ln -s /opt/rh/rh-php72/root/usr/bin/php /usr/bin/php #在所需路径中创建软链接
which php
脚本执行结果如下图,执行成功后,会将获取到的参数存放在</tmp/localhost-mysql_cacti_stats.txt>文件中。
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg #执行脚本
注意:以root用户身份执行脚本后,生成的“.log”文件的所有人也是root。在浏览器端应该使用zabbix用户身份运行,之前产生的文件将导致zabbix身份运行的结果无法操作。因此在正式执行前应先将该文件删除,以防对后续操作产生影响。
2、在浏览器前端设置
操作步骤如下:
这里导入一个模板文件<zbx_percona_mysql_template.xml>
添加完成后查看server6主机,监控mysql的模板已添加。
模板添加完成后,令其在图形中显示:
这里所有关于“MySQL”的参数,都是刚才的模板创建的。
选择几个参数,查看图形统计效果:
所有采集信息的模板文件都是在</etc/zabbix/zabbix_agentd.d/>中的“***.conf”文件。
六、zabbix对JMX(Java)应用的支持
实验环境:在server8中测试zabbix对java插件的支持。
1、下载安装tomcat
第一步:下载并移动到指定目录下
tar zxf apache-tomcat-8.5.24.tar.gz #解压tomcat
yum install -y java-1.8.0-openjdk #安装支持java的软件openjdk
移动tomcat目录到</usr/local/tomcat>下,方便编译。
更改配置文件参考tomcat官网:
Apache Tomcat® - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi
第二步:更改配置文件:
vim /usr/local/tomcat/bin/catalina.sh #编辑文件内容如下
109 CATALINA_OPTS=-'Dcom.sun.management.jmxremote.port=8888
110 -Dcom.sun.management.jmxremote.ssl=false
111 -Dcom.sun.management.jmxremote.authenticate=false'
第三步:启动tomcat
启动完以后,查看端口出现上一步设置的8888。这个端口是上一步手动设置的监控端口,其他端口为tomcat调用的端口。
第四步:在zabbix的server服务器(server6)中安装zabbix-java插件
这个插件是zabbix监控java应用的组件,所有的java应用必须通过这个java网关
yum install -y zabbix-java-gateway #安装插件来监控java网关
systemctl enable --now zabbix-java-gateway.service #设置zabbix-java开机自启动
netstat -antlp |grep 10052 #检查端口10052,证明启动成功
第五步:编辑zabbix-java的server端
编辑zabbix-server端的配置文件,告诉zabbix怎么去调用java-gateway
vim /etc/zabbix/zabbix_server.conf #编辑zabbix-server的配置文件
297 JavaGateway=172.25.254.6
305 JavaGatewayPort=10052
313 StartJavaPollers=5
systemctl restart zabbix-server.service #重启zabbix-server服务
其中配置文件更改内容如下:分别表示java网关为<172.25.254.6>;监听端口为10052端口;线程数为5个(和上图所示一致)。
第六步:在浏览器前端设置
以下两个模板都可以,一般来说选择“通用模板”,监控的参数更多
添加完成后,刷新。“server8”的“JMX”已经亮了,证明JMX可以正常使用。
具体的执行流程是:zabbix-server——>java-gateway:10052——>jmx:8888——>tomcat
第六步:通过图形可视化
通过浏览器访问,增加8080端口的访问量
在统计界面可以监视到,已经有访问量进来。
七、server和agent的关系
对agent来说,它的主动模式和被动模式都是支持的。agent的模式由server端决定,主动被动主要取决于server端给agent端加的什么模板。
1、agent端的信息采集变被动为主动
下图所示,agent端通过这些端口被server端监听。那么是否可以让agent端主动将数据传到server端?随着agent端的增多,每个agent端又有许多监控项,那么如果让server端主动去监控agent端的话,agent端的压力会很大;所以需要让agent主动将自己的数据发送给server端。
以agent端(server7)为例:
取消server上的模板:
选择完成后,看到主机页面已经切换到“agent active”模板,表示agent主动将数据回传给server端。
随便选一个监控项,这里显示此监控项已经成为了“主动式”的。
查看图形统计,也可以统计出来。
2、zabbix的server端的分布式架构——zabbix代理
因为即使agent端主动向server端发送采集的信息,在agent节点过多时,对server端的压力还是会很大。因此就需要对serber端进行水平扩容,以提高其处理数据峰值的能力。
第一步:参考官网文档
1 代理https://www.zabbix.com/documentation/5.0/zh/manual/distributed_monitoring/proxies
第二步:引入代理机制的概念
Zabbix proxy 使用场景:
监控远程区域设备;
监控本地网络不稳定区域;
监控上千设备时,减轻 zabbix server 的负荷;
简化分布式监控的维护。
proxy的功能只有数据采集,无法用来做事件处理。
第三步:实验环境
从zabbix监控界面将server7移除,将server7设置为zabbix_proxy。
第四步:安装软件包
yum install -y zabbix-proxy #安装软件包
systemctl disable --now zabbix-agent.service #关闭zabbix-agent并禁止自启动
第五步:安装并配置proxy
1 Red Hat Enterprise Linux/CentOShttps://www.zabbix.com/documentation/5.0/zh/manual/installation/install_from_packages/rhel_centos在server6中为zabbix-proxy配置数据库:
由于zabbix是分布式的,所以数据库可以在其他主机配置。这里选用server6中的数据库。
mysql> create database zabbix_proxy character set utf8 collate utf8_bin;
#创建数据库
mysql> grant all on zabbix_proxy.* to zabbix@'%' identified by 'Westos+007';
#授权用户访问
mysql> flush privileges; #刷新授权表
更改server7中的zabbix_proxy配置:
vim /etc/zabbix/zabbix_proxy.conf
30 Server=172.25.254.6
49 Hostname=server7
162 DBHost=172.25.254.6
173 DBName=zabbix_proxy
196 DBPassword=Westos+007
向server6数据库中导入proxy的数据(proxy主机只需要安装mysql的客户端即可):
proxy主机上的文件为</usr/share/doc/zabbix-proxy-mysql-5.0.19/schema.sql.gz>,将其导入到server6中的数据库中。
cd /usr/share/doc/zabbix-proxy-mysql-5.0.19 #进入目录
zcat schema.sql.gz | mysql -h 172.25.254.6 -uzabbix -pWestos+007 zabbix_proxy
#导入该目录下的数据库到172.25.254.6
在server6的数据库中查看,proxy的数据已导入到数据库中。
在server7中启动zabbix-proxy:
systemctl start zabbix-proxy.service #启动zabbix-proxy
启动完成后查看进程,可以看到进程都已启用。注意:如果这一步启动失败,很可能是数据库问题
查看zabbix_proxy的日志,发现proxy服务找不到“server7”对应的主机。
cat /var/log/zabbix/zabbix_proxy.log #查看zabbix_proxy的日志
为了解决上述问题,因此需要在浏览器中做以下更改:
zabbix_server -R config_cache_reload #刷新zabbix_server端的配置缓存
再次查看日志,可以看到proxy端的服务已经成功启动
查看server6(zabbix_server)端的日志,显示代理已成功发送数据
第六步:在agent端配置(server8上)
更改server8中的配置文件,令其指向的master成为proxy服务器 。 更改完成后重启zabbix-agent服务。
vim /etc/zabbix/zabbix_agentd.conf #更改agent端的配置文件
117 Server=172.25.254.7 #改成proxy的地址
158 ServerActive=172.25.254.7
systemctl restart zabbix-agent.service #重启zabbix-agent服务
在proxy端中查看端口:
测试:在浏览器中查看
可以看到agent端可以正常使用,但是其中的JMX服务失效了。 这是因为agent端的java应用需要通过“java-geteway”访问,原本的zabbix_server中安装了JMX服务,可以访问agent的java;但是proxy端并没有设置”java-gateway“的端口,因此proxy要采集angent端的java信息的话,必须设置“java-gateway”端口。
修正方法:在proxy中添加“java-gateway”
vim /etc/zabbix/zabbix_proxy.conf #编辑zabbix-proxy的配置文件
338 JavaGateway=172.25.254.6
346 JavaGatewayPort=10052
354 StartJavaPollers=5
grep -v ^# /etc/zabbix/zabbix_proxy.conf | uniq
systemctl restart zabbix-proxy.service #重启zabbix-proxy服务
配置更改完成后,重启“zabbix-proxy.service”服务,在浏览器中已看到JMX已经连接上。
八、zabbix的监控报警
1、实验环境:先注册一个可以实现微信报警功能的帐号
2、zabbix报警平台的使用
3、配置zabbix_server
wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.0.tar.gz
#获取Cloud Alert Agent包:
tar zxf ca_zabbix_release-4.0.0.tar.gz -C /usr/lib/zabbix/alertscripts
#解压到zabbix脚本目录
进入到刚解压的目录下,执行脚本。并输入上一步中获得到的“Appkey",接着输入要报警的zabbix地址,以及登录zabbix时设置的用户名和密码。
cd /usr/lib/zabbix/alertscripts/cloudalert/bin/ #进入zabbix脚本目录
./install.sh 933177f39ca247c59fe2f76d8db18848 #执行启动脚本,并注册认证用户
请输入Zabbix管理地址:http://172.25.254.6/zabbix
Check connection success!
请输入Zabbix管理员账号:Admin
请输入Zabbix管理员密码: zabbix
更改zabbix脚本的权限:
chown zabbix.zabbix cloudalert/ -R
4、在浏览器中查看
列表中出现了许多类型的报警信息。为了方便测试,我们仅测试一项报警信息。
其他项目中也出现了“云平台”的信息。
这里是具体的执行动作:
5、在云报警平台上的配置
新增通知策略:
6、模拟问题
关掉server8上的agent。
systemctl stop zabbix-agent.service
在浏览器中查看,server8已经“失联”了。
查看“监测栏“的“问题”选项,故障信息已经出现,并且报警信息也发送到报警平台上。
查看云平台的服务日志:
cat /usr/lib/zabbix/alertscripts/cloudalert/logs/cloudalert.log
#显示云平台报警信息日志
在平台和微信上都能看到相应的通知:
server8中重新启动zabbix-agent服务,监测窗口显示”已解决“ ,云平台上也显示问题已解决。