zabbix 监控 nginx、mysql、java 应用,64 位 java8 百度云盘
同样的添加到之前的配置文件里面,重启 agent 端服务读取脚本
我们在 server1 验证,获取 agent 端的相关键值
同样的,分别添加三个监控项 nginx_accept,nginx_handle,nginx_request
然后选择图形 nginx_status,在监控项处点击添加
![请添加图片描述](
https://img-blog.csdnimg.cn/1e6feeb42a404c51a173367263bb08ab.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4NjY0NDc5,size_16,color_FFFFFF,t_70)
完成之后,预览一下图形
==============================================================================
因为之前在 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 项
图形监控如下
====================================================================================
监控原理:
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 绿色亮了
查看监控图形,出现数据
=======================================================================================
在 server2 上操作,StartAgent:处理被动检查的 zabbix agentd 的预分叉实例数。如果设置为 0,则禁用被动检查,代理将不会侦听任何 TCP 端口。
点击 OS 模板,选择全克隆
创建 Active 模板
左下角全选,点击下面的批量更新
选择 zabbix 客户端主动式
server2 点击添加模板,将 Linux-Active 模板进行链接
更新成功,此时 server2 将直接向 zabbix server(server1)传递主机信息
==================================================================================
原理:
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 修改配置文件;
评论