Zabbix自定义监控模块 | 智能报警平台 | 分布式监控 (二)

server1:172.25.28.1  rhel7.3

server2:172.25.28.2  rhel6.3

server3:172.25.28.3  rhel6.3

 

一,nginx手动编写代码

1,安装nginx

[root@server2 ~]# rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm

2,修改配置文件

[root@server2 ~]# cd /etc/nginx/

[root@server2 nginx]# cd conf.d/

[root@server2 conf.d]# vim default.conf

注意:      1,stub_status是nginx的一个统计功能模块,利用nginx -V可以查看该模块是否安装,在浏览器输入ip/status就会显示nginx上次启动以来工作状态的统计的结果

2,关闭access_log,即不记录访问日志

3,只允许本地访问,拒绝所有

[root@server2 conf.d]# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@server2 conf.d]# /etc/init.d/nginx start

Starting nginx:                                            [  OK  ]

3,访问测试

[root@server2 conf.d]# curl http://127.0.0.1/status     成功访问

Active connections: 1  #当前nginx正在处理的活动连接数

server accepts handled requests

 2 2 8

Reading: 0 Writing: 1 Waiting: 0

accepts:处理的连接数

handled:成功创建的tcp握手数(没有失败的)

requests:总共处理的请求数

Reading: nginx读取到客户端的Header信息数.

Writing: nginx返回给客户端的Header信息数.

Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是nginx已经处理完成,正在等候下一次请求指令的驻留连接。

[root@server2 conf.d]# curl http://172.25.28.2/status  访问失败

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>404 Not Found</title>

</head><body>

<h1>Not Found</h1>

<p>The requested URL /status was not found on this server.</p>

</body></html>

 

4,建立读取文件,仿照mysql的配置写

[root@server2 conf.d]# cd /etc/zabbix/

[root@server2 zabbix]# cd zabbix_agentd.d/

[root@server2 zabbix_agentd.d]# ls

userparameter_mysql.conf

[root@server2 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf

抓取数据测试

[root@server2 conf.d]# curl -s http://127.0.0.1/status | grep Active | awk '{print $NF}'

1

[root@server2 zabbix_agentd.d]# curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'

19

[root@server2 zabbix_agentd.d]# curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $2}'

20

[root@server2 zabbix_agentd.d]# curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $3}'

27

[root@server2 zabbix_agentd.d]# vim userparameter_nginx.conf

UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $NF}'    NF表示最后一列

可以理解为:键 键值

UserParameter=nginx.accepts,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'      NR表示行数

UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $2}'

UserParameter=nginx.requests,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $3}'

5,重启zabbix-agent

[root@server2 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart

Shutting down Zabbix agent:                                [FAILED]

Starting Zabbix agent:                                     [  OK  ]

如果在server1上没有启动zabbix-server,那么zabbix-agent会启动失败

[root@server1 ~]# systemctl start mariadb

[root@server1 ~]# systemctl enable mariadb

Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

[root@server1 ~]# systemctl start zabbix-server

[root@server1 ~]# systemctl enable zabbix-server

Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

[root@server1 ~]# systemctl start zabbix-agent

[root@server1 ~]# systemctl enable zabbix-agent

Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

[root@server2 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart

Shutting down Zabbix agent:                                [  OK  ]

Starting Zabbix agent:                                     [  OK  ]

[root@server2 zabbix_agentd.d]# chkconfig zabbix-agent on

server1

1,安装软件获取键值

[root@server1 ~]# rpm -ivh zabbix-get-3.4.6-1.el7.x86_64.rpm

2,测试获取键值

[root@server1 ~]# zabbix_get -s 172.25.28.2 -p 10050 -k 'nginx.active'

1

[root@server1 ~]# zabbix_get -s 172.25.28.2 -p 10050 -k 'nginx.accepts'

23

[root@server1 ~]# zabbix_get -s 172.25.28.2 -p 10050 -k 'nginx.handled'

24

[root@server1 ~]# zabbix_get -s 172.25.28.2 -p 10050 -k 'nginx.requests'

31

[root@server1 ~]# systemctl start httpd

[root@server1 ~]# systemctl enable httpd

浏览器

1,创建图形,名字任意

2,选择要监控的参数

 3,更新

4,查看图形>预览

 

二,Percona 数据库模版

1,安装percona-zabbix数据库模板

[root@server1 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

Scripts are installed to /var/lib/zabbix/percona/scripts

Templates are installed to /var/lib/zabbix/percona/templates

2,复制模板文件到agentd

[root@server1 percona]# cd /var/lib/zabbix/percona/scripts

[root@server1 scripts]# ls

get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php

[root@server1 scripts]# cd /var/lib/zabbix/percona/templates

[root@server1 templates]# ls

userparameter_percona_mysql.conf

zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

[root@server1 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

[root@server1 templates]# cd /etc/zabbix/zabbix_agentd.d/

[root@server1 zabbix_agentd.d]# cat userparameter_percona_mysql.conf

这里面的内容都是键值,脚本,脚本变量的形式,这和我们编写的nginx脚本格式类似

3,用php写mysql的登录文件

[root@server1 scripts]# pwd

/var/lib/zabbix/percona/scripts

[root@server1 scripts]# vim ss_get_mysql_stats.php.cnf

[root@server1 scripts]# cat ss_get_mysql_stats.php.cnf

<?php

$mysql_user = 'root';  

$mysql_pass = 'redhat';  数据库登录密码,先验证此密码是否可以登录数据库

5,重启服务,执行脚本,如果没有报错那么说明配置成功

[root@server1 zabbix_agentd.d]# systemctl restart zabbix-agent

[root@server1 scripts]# ls

get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php  ss_get_mysql_stats.php.cnf

[root@server1 scripts]# ./get_mysql_stats_wrapper.sh gg

4

6,删除脚本执行的临时文件

[root@server1 scripts]# cd /tmp/

[root@server1 tmp]# ls

localhost-mysql_cacti_stats.txt

systemd-private-495ab6c76b754929a96d02da3c3e7ccc-httpd.service-ljwgWj

systemd-private-495ab6c76b754929a96d02da3c3e7ccc-mariadb.service-vXoIt6

systemd-private-6ba4990530d24e25821ca28fcdb461dd-httpd.service-QjYtKU

systemd-private-6ba4990530d24e25821ca28fcdb461dd-mariadb.service-B0Xptz

[root@server1 tmp]# rm -rf localhost-mysql_cacti_stats.txt  必须要删除

7,测试,获取键对应的值

[root@server1 tmp]# cd /etc/zabbix/zabbix_agentd.d/

[root@server1 zabbix_agentd.d]# ls

userparameter_mysql.conf  userparameter_percona_mysql.conf

[root@server1 zabbix_agentd.d]# cat userparameter_percona_mysql.conf

UserParameter=MySQL.Threads-connected,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh iu

[root@server  ~]# systemctl restart zabbix-agent

[root@server1 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k 'MySQL.Threads-cached'

0

客户端下载模块

zbx_percona_mysql_template.xml

浏览器添加模块

1,右上角导入

2,选择模块,模块的位置

3,按照官方的要求,添加聚合图形

4,点击导入,模板导入如下

5,主机>模块

6,选择模块Percona MYSQL模块,更新

7,主机>图形>预览

三,java模块--JMX

http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html

server2

1,安装jdk和tomcat

[root@server2 ~]# rpm -ivh jdk-8u121-linux-x64.rpm

[root@server2 ~]# tar zxf apache-tomcat-7.0.90.tar.gz -C /usr/local/

[root@server2 ~]# cd /usr/local/

[root@server2 local]# ln -s apache-tomcat-7.0.90/ tomcat

2,测试启动tomcat

[root@server2 local]# cd tomcat/bin

[root@server2 bin]# ls

bootstrap.jar                 configtest.bat    setclasspath.sh  tomcat-native.tar.gz

catalina.bat                  configtest.sh     shutdown.bat     tool-wrapper.bat

catalina.sh                   daemon.sh         shutdown.sh      tool-wrapper.sh

catalina-tasks.xml            digest.bat        startup.bat      version.bat

commons-daemon.jar            digest.sh         startup.sh       version.sh

commons-daemon-native.tar.gz  setclasspath.bat  tomcat-juli.jar

[root@server2 bin]# ./startup.sh 尝试启动

Tomcat started.

[root@server2 bin]# netstat -antlp 查看端口看是否成功启动

3,修改catalina.sh脚本文件

[root@server2 bin]# vim catalina.sh

官网查看 http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html

指定端口为8888

4,重启

[root@server2 bin]# ./shutdown.sh

[root@server2 bin]# ./startup.sh

Tomcat started.

[root@server2 bin]# netstat -antlp | grep :8888 查看java端口

tcp        0      0 :::8888                     :::*                        LISTEN      14097/java         

server1

1,安装java-gateway,这个网关不会对网路造成影响

[root@server1 ~]# yum install -y zabbix-java-gateway-3.4.6-1.el7.x86_64.rpm

[root@server1 ~]# cd /etc/zabbix/

[root@server1 zabbix]# ls

web                 zabbix_agentd.d           zabbix_java_gateway_logback.xml

zabbix_agentd.conf  zabbix_java_gateway.conf  zabbix_server.conf

2,启动zabbix-java-gateway,默认端口是10052

[root@server1 zabbix]# systemctl start zabbix-java-gateway

[root@server1 zabbix]# netstat -antlp | grep 10052

tcp6       0      0 :::10052                :::*                    LISTEN      13196/java

3,修改zabbix-server服务的配置文件

[root@server1 zabbix]# vim zabbix_server.conf

5是并发连接数,在zabbix_java_gateway.conf里可以看到说明

4,重启zabbix-server

[root@server1 zabbix]# systemctl restart zabbix-server

浏览器

1,主机添加JMX接口,更新

2,主机>模版

3,选择添加通用性的JMX,tomcat的功能少

4,更新

5,等待JMX变成绿色才算成功

 

6,查看图形

 

注意:查看图形的方法

选择主机>图形>列出的全部都是可以查看的图>点击名称>预览

 

四,onealert云报警平台

http://wiki.onealert.com/integration/zabbix-new.html

1,注册onealert

2,添加应用获取key,我们采用zabbix监控应用

3,添加通知策略

4,真机可以上网的前提下,把虚拟机配置为可以上网

[root@foundation28 pub]# iptables -t nat -I POSTROUTING -s 172.25.28.0/24 -j MASQUERADE

[root@server1 zabbix_agentd.d]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

172.25.28.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

[root@server1 zabbix_agentd.d]# route add default gw 172.25.28.250

[root@server1 zabbix_agentd.d]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         172.25.28.250   0.0.0.0         UG    0      0        0 eth0

172.25.28.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

[root@server1 zabbix_agentd.d]# vim /etc/resolv.conf

[root@server1 zabbix_agentd.d]# cat /etc/resolv.conf

nameserver  114.114.114.114

[root@server1 zabbix_agentd.d]# ping baidu.com

PING baidu.com (123.125.115.110) 56(84) bytes of data.

64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=1 ttl=51 time=52.7 ms

3,查看报警脚本的路径AlertScriptsPath,安装oneitsm_zabbix软件

[root@server1 zabbix_agentd.d]# vim /etc/zabbix/zabbix_server.conf

直接搜索AlertScriptsPath

[root@server1 zabbix_agentd.d]# cd /usr/lib/zabbix/alertscripts

[root@server1 alertscripts]# ls  注意下载的路径

lftp 172.25.28.250:/pub> get oneitsm_zabbix_release-1.2.0.tar.gz

[root@server1 alertscripts]# tar zxf oneitsm_zabbix_release-1.2.0.tar.gz

[root@server1 alertscripts]# ls

oneitsm  oneitsm_zabbix_release-1.2.0.tar.gz

[root@server1 bin]# ls

alert.sh  install.sh  log.sh  update.sh

[root@server1 bin]# ./install.sh 72facccf-994e-33d2-42ad-a62171d8cd09

注意:这个脚本后面跟的字符是zabbix的key值

./log.sh: line 6: /usr/lib/zabbix/alertscripts/oneitsm/bin/oneitsm.conf: No such file or directory

start to create config file...

Zabbix管理地址: http://172.25.28.1/zabbix

Zabbix管理员账号: Admin

Zabbix管理员密码:            #zabbix登录密码

start to auth by zabbix admin user and password...

create action success!

安装成功.

浏览器:

 1,启用oneitsm action

2,在管理>动作里面可以看到调用了api接口

3,报警媒介类型禁用以下,因为没有配置,避免造成干扰

4,查看oneitsm用户:

智能报警测试:
关闭zabbix-agent

[root@server2 bin]# /etc/init.d/zabbix-agent stop

Shutting down Zabbix agent:                                [  OK  ]

在监控>问题里面查看

同时会执行onealert中的通知策略

启动zabbix-agent

[root@server2 bin]# /etc/init.d/zabbix-agent start

Starting Zabbix agent:                                     [  OK  ]

问题解决!

 

五,主动模式

浏览器

1,选择该模板

2,全克隆模板,修改名称

3,添加

4,选者监控项,全部选中,批量更新

5,修改类型为主动式,更新

主动模式模板创建成功!

server3

1,安装zabbix-agent

[root@server3 ~]# rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm

[root@server3 ~]# cd /etc/zabbix/

[root@server3 zabbix]# ls

zabbix_agentd.conf  zabbix_agentd.d

2,修改zabbix-agent服务配置文件

[root@server3 zabbix]# vim zabbix_agentd.conf

注释Server=127.0.0.1

设置为0,看不到端口信息

zabbix-server所在ip

注意做好解析

3,启动zabbix-agent,查看不到10050端口

[root@server3 zabbix]# /etc/init.d/zabbix-agent start

Starting Zabbix agent:                                     [  OK  ]

[root@server3 zabbix]# netstat -antlupe

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name  

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          8154       895/sshd           

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      0          8376       971/master         

tcp        0      0 172.25.28.3:22              172.25.28.250:58882         ESTABLISHED 0          9063       1372/sshd          

tcp        0      0 :::22                       :::*                        LISTEN      0          8156       895/sshd           

tcp        0      0 ::1:25                      :::*                        LISTEN      0          8378       971/master         

4,重新修改zabbix-agent的配置文件

[root@server3 zabbix]# vim zabbix_agentd.conf

 

5,重启服务,查看到10050端口

[root@server3 zabbix]# /etc/init.d/zabbix-agent restart

Shutting down Zabbix agent:                                [  OK  ]

Starting Zabbix agent:                                     [  OK  ]

[root@server3 zabbix]# netstat -antlupe

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name  

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          8154       895/sshd           

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      0          8376       971/master         

tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      498        9695       1486/zabbix_agentd 

tcp        0      0 172.25.28.3:22              172.25.28.250:58882         ESTABLISHED 0          9063       1372/sshd          

tcp        0      0 :::22                       :::*                        LISTEN      0          8156       895/sshd           

tcp        0      0 ::1:25                      :::*                        LISTEN      0          8378       971/master         

tcp        0      0 :::10050                    :::*                        LISTEN      498        9696       1486/zabbix_agentd 

浏览器

1,主机>创建主机>添加

主机名server3,ip 172.25.28.3 端口 10050

2,模板,选择之前我们自己创建的模板,添加,更新

3,等待sevrer3被发现

成功!!

六,Agent代理

https://www.zabbix.com/documentation/3.4/manual/appendix/install/db_scripts

1,浏览器删除server3,停止zabbix-agent服务

[root@server3 ~]# /etc/init.d/zabbix-agent stop

Shutting down Zabbix agent:                                [  OK  ]

2,安装zabbix-proxy代理软件和依赖

[root@server3 ~]# yum install zabbix-proxy-mysql-3.4.6-1.el6.x86_64.rpm fping-2.4b2-16.el6.x86_64.rpm -y

3,安装数据库,启动数据库

[root@server3 zabbix]# yum install -y mysql-server

[root@server3 zabbix]# /etc/init.d/mysqld start

4,修改配置文件

[root@server3 zabbix]# cd /etc/zabbix/

[root@server3 zabbix]# ls

zabbix_proxy.conf         zabbix_agentd.conf               zabbix_agentd.d

[root@server3 zabbix]# vim zabbix_proxy.conf

5,数据库建立用户授权

[root@server3 zabbix]# mysql

mysql> create database zabbix_proxy character set utf8 collate utf8_bin;

Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'redhat';

Query OK, 0 rows affected (0.00 sec)

6,导入数据

[root@server3 doc]# cd zabbix-proxy-mysql-3.4.6/

[root@server3 zabbix-proxy-mysql-3.4.6]# ls

AUTHORS  ChangeLog  COPYING  NEWS  README  schema.sql.gz

[root@server3 zabbix-proxy-mysql-3.4.6]# zcat schema.sql.gz | mysql -u zabbix -p zabbix_proxy

Enter password:

[root@server3 zabbix-proxy-mysql-3.4.6]#

7,启动代理软件

[root@server3 zabbix-proxy-mysql-3.4.6]# /etc/init.d/zabbix-proxy start

Starting Zabbix proxy:                                     [  OK  ]

浏览器:

1,打开server2的zabbix-agent服务,并让zabbix发现server2

2,创建代理

3,代理server2

4,此时可以看到,只不过server3:server2的ZBX是红色状态,需要进行如下配置

5,修改sever2的配置文件

[root@server2 zabbix]# vim zabbix_agentd.conf

由于我们是通过server3代理,所以这里需要做修改

[root@server2 zabbix]# /etc/init.d/zabbix-agent restart

 

猜你喜欢

转载自blog.csdn.net/ha_weii/article/details/81714004