zabbix监控nginxmysqljava应用Zabbix + proxy分布式
Posted 奋斗的小猴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix监控nginxmysqljava应用Zabbix + proxy分布式相关的知识,希望对你有一定的参考价值。
一、zabbix监控nginx
在server2上部署nginx
配置
编译、安装
创建软链接方便使用
修改nginx配置文件,设定只允许本机访问
语法检测
启动服务
本机访问测试;
server accepts handled requests — 总共处理了1个连接 , 成功创建1次握手, 总共处理了1个请求;
reading — 读取客户端的连接数;
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,nginx 已经处理完正在等候下一次请求指令的驻留连接.
访问本机时,可以看到nginx的默认发布页面
其他主机访问时被拒绝
此时就可以查看图形的各种监控项了,但是发现有乱码,这是由于服务器zabbix字体的原因。
解决字体乱码方法:将真机的字体文件传给server1(zabbix服务端)
将字体文件复制到相应目录下
把之前的文件删除,将正确的中文字体软连接为原来的文件,好处是不需要动配置文件
此时再次查看server2图形监控,发现字体正常
通过shell命令,截取我们需要的信息;
过滤得到活跃连接数
接下来,编写一个nginx脚本,通过agent获取信息;
重命名文件
把刚才在shell测试的抓取指令写进去,脚本内容如下;
完成之后,重启agent
server1安装zabbix-get,zabbix_get命令是在server端用来检查agent端的一个命令,在添加完主机或者触发器后,不能正常获得数据,可以用zabbix_get来检查能否采集到数据。
-s --host: 指定客户端主机名或者IP;
-p --port:客户端端口,默认10050;
-k --key:你想获取的key(键值)
接下来需要图形化添加监控,网页访问172.25.1.1/zabbix,为server2创建监控项
之后选择创建图形:
创建完成,点击更新,查看图形结果
当出现数值时表明图形添加成功
添加更多nginx监控项;
通过shell命令截取所需处理连接数 , 成功创建握手次数, 处理的请求次数
同样的添加到之前的配置文件里面,重启agent端服务读取脚本
我们在server1验证,获取agent端的相关键值
同样的,分别添加三个监控项nginx_accept,nginx_handle,nginx_request
然后选择图形nginx_status,在监控项处点击添加
完成之后,预览一下图形
二、zabbix监控mysql
因为之前在server1搭建了mysql数据库,为了节省资源,我们直接使用server1;
mkdir /var/lib/zabbix zabbix :创建目录
cd /var/lib/zabbixzabbix :放zabbix脚本
vim .my.cnf:修改文件引导
zabbix_get -s 127.0.0.1 -p 10050 -k “mysql.ping” :可以正常看到值
添加DB mysql模板
查看图形信息
但是由于自带的mysq模板监控项(只有102个)太少了,所以我们需要手动添加模板;
删掉刚才添加的mysql模板
将真机的percona模板软件包传给server1
server1安装percona-mysql模块rpm包
将模板文件复制到zabbix服务相应位置
编辑如下.php文件,修改真实的用户和密码如下:
安装php-mysql
手动测试如下,手动测试之后会生成一个txt文件,这个文件默认权限是root,而访问时是用zabbix用户访问的,所以测试完成后删除.txt,root用户下测试的文件其余用户无法写入
现在导入外部模板
把zbx_percona_mysql_template.xml(真机上提前下载好)导入到模板中,导入时聚合图形
接着选择zabbix server添加已经导入的模板
之后点击触发器,需要禁用一个触发器
停用stop slave触发器
完成之后,进到/tmp目录,发现已经自动生成了前面删掉的文件,而且用文件所属权是zabbix
此时监控项就增加到了279项
图形监控如下
三、zabbix监控tomcat+jave
监控原理:
1、当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用"JMXmanagementAPI"去查询特定的应用程序,而前提是应用程序这端在开启时需要"-Dcom.sun.management.jmxremote"参数来开启JMX远程查询。Java程序会启动自身的一个简单的小程序端口向Zabbix-JavaGateway提供请求数据。
2、配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等 ;
3、Java-gateway不安装在zabbix-server上也可以,仅仅是作为一个采集器,tomcat监控主要是监控JVM。
我们在server1上安装java模块插件
默认java应用监听端口10052
编辑 zabbix_server.conf文件,设定java监听网关指向zabbix-server主机并设置处理的进程数
将真机的tomcat压缩包传给server3,Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
server3解压缩,创建软链接
编辑tomcat脚本,设定JMX监听端口为8888,vim /usr/local/tomcat/bin/catalina.sh
然后安装java
开启脚本
查看端口
网页测试tomcat是否启动成功,访问172.25.9.3:8080端口(Apache Tomcat web server安装后,默认的服务端口就是8080)
点击server3,选择模板,将java TMX加入模板
将JMX端口写入
此时发现server3的JMX绿色亮了
查看监控图形,出现数据
四、Zabbix-agent主动模式 (全克隆)
在server2上操作,StartAgent:处理被动检查的zabbix agentd的预分叉实例数。如果设置为0,则禁用被动检查,代理将不会侦听任何TCP端口。
点击OS 模板,选择全克隆
创建Active模板
左下角全选,点击下面的批量更新
选择zabbix客户端主动式
server2点击添加模板,将Linux-Active模板进行链接
更新成功,此时server2将直接向zabbix server(server1)传递主机信息
五、Zabbix + proxy分布式
原理:
server1 ( zabbix-server、mysql-server ) <---- server4( proxy ) <------ server3( agent )
如果所有agent直接向server传递主机信息,一方面会增大server的负载,另一方面由于所有agent都需要穿过防火墙,因此降低了安全性,所以设定代理server收集所有受监控主机信息,再传给server控制端,降低负载同时保证安全性。
实验环境:
server1作为zabbix server控制端
server4作为代理端,负责接受其他agent发来的信息,再传递给server1控制端
server3作为agent,向代理端传递信息
server4安装proxy并使用Mysql数据库
编辑 /etc/zabbix/zabbix_proxy.conf 配置文件;
DBName=zabbix_proxy:数据库中的库名称
DBHost=172.25.36.1:数据库位置
DBUser=zabbix :访问数据库的身份
DBPassword=westos:访问数据库的密码
将生成的数据库信息传给数据库位置server1中
查看服务进程是否开启
将server4的主机名改为proxy
在server1,2,3,4的本地解析都加入server4解析proxy
server进入数据库
创建mysql数据库zabbix_proxy,并将库的所有权利给zabbix用户,授权后刷新
将schema.sql.gz 文件解压后导入 zabbix_proxy 库中
点击创建agent代理程序
然后输入代理名称,代理地址
在server4的配置文件里面继续修改;
Server=172.25.36.1 :分布式服务位于zabbix-server端
ServerPort=10051 :默认端口为10051
Hostname=proxy :主机名为proxy
查看server4日志显示:成功接受server1的信息
server1日志显示:成功发送信息给server4
然后再网页上点击主机server3,选择proxy代理
然后修改server3的配置文件/etc/zabbix/zabbix_agentd.conf;
设定其server为server4(proxy)
查看图形,此时server3通过server4的proxy成功连接到zabbix-server端
此时发现JMX不能正常工作
在server4修改配置文件;
JavaGateway=172.25.36.1 :java服务监听端口指向zabbix-server端
StartJavaPollers=5 :Java轮询器为5,实际设置根据需求
此时所有服务将恢复启用
如果设定完server3中的java导入proxy后,查看server1的日志显示不能找到,需要刷新zabbix-server 数据修改缓存:zabbix_server -R config_cache_reload
以上是关于zabbix监控nginxmysqljava应用Zabbix + proxy分布式的主要内容,如果未能解决你的问题,请参考以下文章