Zabbix监控Nginx、Mysql、Java应用、Zabbix+Proxy分布式

一、zabbix监控nginx

在server2上部署nginx

E87B5B68-6ECC-3F00-DEFE-9DD9C3A54A2A.png

配置

243FC830-ED68-776C-BD3C-06D4C212C5DF.png

编译、安装

E561D8E9-3A91-C351-7B80-A2AFDAD1D29E.png

创建软链接方便使用

A7D6368B-E86E-A9F2-9AF8-B595F0305763.png

修改nginx配置文件,设定只允许本机访问

F3C18C38-42A7-AF77-89B5-5575FC29EDAA.png

语法检测

3B4CCE36-E94F-8AAA-265D-464069714849.png

启动服务

C4581DC1-D041-2440-90F4-1196CEE142EF.png

本机访问测试;

server accepts handled requests — 总共处理了1个连接 , 成功创建1次握手, 总共处理了1个请求;

reading — 读取客户端的连接数;

writing — 响应数据到客户端的数量

waiting — 开启 keep-alive 的情况下,nginx 已经处理完正在等候下一次请求指令的驻留连接.

97F52765-E0B3-2366-5F9C-8A2E814A6C27.png

访问本机时,可以看到nginx的默认发布页面

96416299-6806-B8D6-6953-389DC528AFC5.png

其他主机访问时被拒绝

D45EE206-1FDC-82DC-3A98-2E98F4ECAAE8.png

此时就可以查看图形的各种监控项了,但是发现有乱码,这是由于服务器zabbix字体的原因。

5B7F5B84-A850-45CA-8692-666BBCCC77A2.png

解决字体乱码方法:将真机的字体文件传给server1(zabbix服务端)

98925120-BAB3-6168-509B-9A4091C02249.png

将字体文件复制到相应目录下

03FC43DE-D23C-E813-BD7D-EB68DFB04821.png

把之前的文件删除,将正确的中文字体软连接为原来的文件,好处是不需要动配置文件

E13FA739-9A6E-44DF-8D80-9A81D0F94837.png

此时再次查看server2图形监控,发现字体正常

668BA401-1A02-11A5-87C2-A707C1001F26.png

通过shell命令,截取我们需要的信息;

过滤得到活跃连接数

D1AE70D0-1E59-01CA-6CF7-C67EF7BD113F.png

接下来,编写一个nginx脚本,通过agent获取信息;

重命名文件

DC794970-27AE-0A2A-359A-BBAA4CDC64E2.png

把刚才在shell测试的抓取指令写进去,脚本内容如下;

完成之后,重启agent

4BF36DF6-C59C-05C6-9431-1AE435FA0C33.png

server1安装zabbix-get,zabbix_get命令是在server端用来检查agent端的一个命令,在添加完主机或者触发器后,不能正常获得数据,可以用zabbix_get来检查能否采集到数据。

A36AB639-3B01-F062-30E7-27092E33AE89.png

-s --host: 指定客户端主机名或者IP;

-p --port:客户端端口,默认10050;

-k --key:你想获取的key(键值)

A4E32FE4-9408-FCC6-75C5-A473E8DF2503.png

接下来需要图形化添加监控,网页访问172.25.1.1/zabbix,为server2创建监控项

E7BADDB1-7142-E138-ED9F-29ED5DED998B.png

F6C06E89-63FB-AC04-DA48-BD489756CD98.png

之后选择创建图形:

C9BE01D5-DC02-949C-0976-DE879E47D5F6.png

D61B6883-7409-38BF-26C3-B43E9752403C.png

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

4AD59957-066E-E6CC-310F-E3323F9BB019.png

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

C7D34E19-671B-0D76-5431-BFA325070332.png

添加更多nginx监控项;

通过shell命令截取所需处理连接数 , 成功创建握手次数, 处理的请求次数

93AB8C7E-2013-944A-A421-5E27BD2E7D79.png

同样的添加到之前的配置文件里面,重启agent端服务读取脚本

46E2D6EF-A2EA-52BE-FC59-94E3F335CA87.png

我们在server1验证,获取agent端的相关键值

9B0672EC-D601-0CA0-70C3-1D07713716AB.png

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

8F2AA34B-15D5-DA63-92B5-C422C196A5D9.png

AA4B2BBA-4354-9917-1545-C5A59ED190AF.png

06320993-0946-0C3A-5A0A-F7576021FC9E.png

然后选择图形nginx_status,在监控项处点击添加

F2CC17D7-59CE-AA57-3177-80ED72068CEE.png

完成之后,预览一下图形

371DBEE8-5201-ECFF-5DE5-73FFFC877C78.png

二、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” :可以正常看到值

FF13C173-4EA2-5FD4-44FF-A3BE44271134.png

添加DB mysql模板

C4A02AC4-1B73-7478-D252-E9E61611D11D.png

52210959-DBE7-E6F5-B98D-883B61845A2D.png

查看图形信息

87891DD7-116D-66A6-1AB7-F8A969354B6A.png

但是由于自带的mysq模板监控项(只有102个)太少了,所以我们需要手动添加模板;

删掉刚才添加的mysql模板

6538C9E1-4B4C-7F93-1D76-B4EF95CEF02C.png

将真机的percona模板软件包传给server1

4E1EB556-58EA-F624-0DB8-E4FF7DACC4DA.png

server1安装percona-mysql模块rpm包

8AF28BE9-B655-0D72-F3FF-CC79A1FEC460.png

将模板文件复制到zabbix服务相应位置

BC705578-DC7E-C735-5FAC-052EB2F83A04.png

编辑如下.php文件,修改真实的用户和密码如下:

156A7D6B-F906-3BF1-67E7-DBC11BD2EC16.png

C6D6979F-3FF4-273F-EAE4-0AF3D729380C.png

安装php-mysql

889ADFC2-6EF1-D240-1A2E-8790FCB62F6B.png

手动测试如下,手动测试之后会生成一个txt文件,这个文件默认权限是root,而访问时是用zabbix用户访问的,所以测试完成后删除.txt,root用户下测试的文件其余用户无法写入

2484A634-8EE3-4B26-3732-EAFD0AA6DCAC.png

EFB0F1BE-6764-73E4-AD70-89BAC1F2F7D5.png

现在导入外部模板

4E590AD7-C947-A065-5B13-0FB3F3F85371.png

把zbx_percona_mysql_template.xml(真机上提前下载好)导入到模板中,导入时聚合图形

A0556C56-7B2C-C335-0A33-FE3F633E2562.png

接着选择zabbix server添加已经导入的模板

2F6746E4-ED61-9C82-4728-9F871B517F2D.png

之后点击触发器,需要禁用一个触发器

BD39B552-C52B-8072-951A-CC2C8C8FFC80.png

停用stop slave触发器

9464A40F-78EB-6949-8AE1-E49E41712A21.png

完成之后,进到/tmp目录,发现已经自动生成了前面删掉的文件,而且用文件所属权是zabbix

701B8A5F-999E-ED9B-F82D-1479F7E205DD.png

720A5B4D-CDD0-D825-B536-DE4FA6C694B4.png

此时监控项就增加到了279项

C4B2F751-B514-B52E-7960-558DC2FC5D27.png

图形监控如下

2A0C5816-92FD-D646-0CBE-9DB1EE807648.png

三、zabbix监控tomcat+jave

监控原理:

18D09DF0-315A-ED5C-ECCF-CA55B9975D9B.png

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模块插件

E36A7901-7D38-2D2E-E345-AA82A3D79076.png

默认java应用监听端口10052

75FFC06D-1A4D-BE6C-1EDB-AAC7C259A595.png

编辑 zabbix_server.conf文件,设定java监听网关指向zabbix-server主机并设置处理的进程数

243373D6-D49E-9D45-FABA-956C06712414.png

ED5E120C-9AD4-9B5C-5620-246BD080417A.png

AD0C20A8-D73D-410C-A340-031DBCB433F7.png

将真机的tomcat压缩包传给server3,Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

DE8F4A9C-65EB-962D-240C-6D5411E6A2C5.png

server3解压缩,创建软链接

B5C3CA93-00CE-C404-9989-C2FC2C0C9A7D.png

编辑tomcat脚本,设定JMX监听端口为8888,vim /usr/local/tomcat/bin/catalina.sh

F063D540-8A5A-5E73-05B3-AB35FB06BF6C.png

7BEDFCD7-022D-E4D9-B112-431B84E4F5C4.png

然后安装java

FC1B3C5D-C2B1-E2AC-681B-63FC2F7A7216.png

开启脚本

F48D4524-83E0-9E41-EEAD-367024F48316.png

查看端口

FDEF0E36-F270-2212-FBCA-9139BF976EF7.png

网页测试tomcat是否启动成功,访问172.25.9.3:8080端口(Apache Tomcat web server安装后,默认的服务端口就是8080)

5DE60ABC-DA92-34E5-A45E-6099FDC3C119.png

点击server3,选择模板,将java TMX加入模板

9884DB83-3436-29E0-7D0D-0C3F5BE644C8.png

将JMX端口写入

C17BDBEA-FCD7-3348-6517-74780C33BF8A.png

此时发现server3的JMX绿色亮了

2BE1E500-083F-085B-4416-9F0FD2EFD559.png

查看监控图形,出现数据

8AC8DE77-06D1-F2D8-DE28-FD9400486421.png

四、Zabbix-agent主动模式 (全克隆)

在server2上操作,StartAgent:处理被动检查的zabbix agentd的预分叉实例数。如果设置为0,则禁用被动检查,代理将不会侦听任何TCP端口。

573F0636-BD67-CC50-A9EA-59047B8A2D75.png

F80E979D-AB67-B4DD-C75B-C103100E49AF.png

点击OS 模板,选择全克隆

5BFB09E7-057D-041C-F1DE-35EA2AE47863.png

创建Active模板

413425BB-F181-FAE0-C0E2-66F0B14D8C59.png

0709A922-A3BD-831E-0079-84EA2123A352.png

左下角全选,点击下面的批量更新

497FC022-60DB-46F8-D733-3BA88E98F78A.png

A4EAB241-0B56-4E45-2EDD-81492E82FDA9.png

选择zabbix客户端主动式

DFF7BE91-8E6A-3E11-F9A6-1D1D9FE4952E.png

server2点击添加模板,将Linux-Active模板进行链接

DCD60476-32CF-8F20-113F-9BD777988B18.png

更新成功,此时server2将直接向zabbix server(server1)传递主机信息

D389987B-9F85-27CE-7846-34DA9385B2CF.png

五、Zabbix + proxy分布式

3364DE79-A9DC-DAEB-B2BA-90DBA2CCF56B.png

7B7A0428-7187-338A-BE25-E3A38FF945DE.png

原理:

server1 ( zabbix-server、mysql-server ) <---- server4( proxy ) <------ server3( agent )

如果所有agent直接向server传递主机信息,一方面会增大server的负载,另一方面由于所有agent都需要穿过防火墙,因此降低了安全性,所以设定代理server收集所有受监控主机信息,再传给server控制端,降低负载同时保证安全性。

实验环境:

server1作为zabbix server控制端

server4作为代理端,负责接受其他agent发来的信息,再传递给server1控制端

server3作为agent,向代理端传递信息

351E2DC3-7EE8-007A-7E32-8EF54C796BF5.png

server4安装proxy并使用Mysql数据库

DD526683-BD31-1A6A-47E6-E83FE762EF7D.png

编辑 /etc/zabbix/zabbix_proxy.conf 配置文件;

DBName=zabbix_proxy:数据库中的库名称

DBHost=172.25.36.1:数据库位置

DBUser=zabbix :访问数据库的身份

DBPassword=westos:访问数据库的密码

5003E583-F3AE-A704-FE43-A5E4713990EC.png

0DD40DD1-243D-CC6A-67C7-5F4A661DEC37.png

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

15E40093-591C-F7A9-C593-C185EAA27E0D.png

查看服务进程是否开启

F51B4BD7-D621-4839-DBFC-40BEADA27B2D.png

将server4的主机名改为proxy

079C8506-9DF7-A2D9-0381-E7E9A24D766D.png

在server1,2,3,4的本地解析都加入server4解析proxy

05507D72-4B72-2495-6345-897664042247.png

server进入数据库

4769722C-390C-FE52-DAFE-BAD5E39B8748.png

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

42AC6635-77E7-415F-DB7D-44D99A8BFA5B.png

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

C80208EC-062F-941C-3CBE-FCA870B6AD51.png

点击创建agent代理程序

1A5F3701-2F02-D8C8-0F92-57F6EF30CFA6.png

然后输入代理名称,代理地址

8E32D50A-4F25-A4FF-4F81-F625C6A6DE82.png

在server4的配置文件里面继续修改;

Server=172.25.36.1 :分布式服务位于zabbix-server端

ServerPort=10051 :默认端口为10051

Hostname=proxy :主机名为proxy

FFD68248-C19D-6299-55B8-B41EB38DFDA8.png

471A201C-D491-6F9F-13B6-2C993073380F.png

查看server4日志显示:成功接受server1的信息

A76C4D9C-5B28-8359-06E1-A4C9B216FA7F.png

server1日志显示:成功发送信息给server4

DC88B8C6-FC10-B0C9-7762-B158153B39CC.png

然后再网页上点击主机server3,选择proxy代理

28D63A93-2A03-90D3-C932-4BEF8C38E5DE.png

890131F0-49E0-9695-FB3D-C38FE2E91D39.png

然后修改server3的配置文件/etc/zabbix/zabbix_agentd.conf;

设定其server为server4(proxy)

BFAA6A6A-4222-690B-4CAF-62F274E2C311.png

86E0E436-8E8D-D61B-B1D8-6427689165E5.png

8A1601EA-DDAC-4A35-B418-4C60309D3DB1.png

查看图形,此时server3通过server4的proxy成功连接到zabbix-server端DCD1E70C-B515-0184-4BEB-2705D5D2C493.png

此时发现JMX不能正常工作

24F3C990-C655-C83B-0DFD-BF98C51D9383.png

在server4修改配置文件;

JavaGateway=172.25.36.1 :java服务监听端口指向zabbix-server端

StartJavaPollers=5 :Java轮询器为5,实际设置根据需求

DF99E0EC-4474-05BB-2328-C83406344ED6.png

858F84F9-1726-8F5E-45DE-E915191B6717.png

此时所有服务将恢复启用

2CE8A9FC-A6A3-635E-BF74-7787794FE31A.png

如果设定完server3中的java导入proxy后,查看server1的日志显示不能找到,需要刷新zabbix-server 数据修改缓存:zabbix_server -R config_cache_reload

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的