zabbix

  • 1.zabbix自带的数据库实验
  • 2. percona监控数据库
  • 2.1 安装percona软件
  • 2.2 切换到模板目录
  • 2.3 导入刚才的模板
  • 3. java应用的监控方法
  • 3.1 下载安装tomcat
  • 3.2 安装java并配置文件
  • 3.3 server1上添加java网关并配置文件
  • 3.4 web界面server2添加JMX接口,实现监控
  • 4. 优化监控,客户端主动回传数据
  • 4.1 第一种修改客户端配置文件
  • 4.1第二种,批量设置(server端)
  • 5. 分布式监控(proxy)
  • 5.1 使用server3来做proxy的一些前期配置
  • 5.2安装proxy软件,并安装数据库软件,proxy、server都是基于数据库的
  • 5.3 web添加代理
  • 5.4 server2上设置配置文件
  • 5.5 jmx的设置
  • 6. 报警系统(zabbix+睿象云)
  • 6.1 安装探针
  • 6.2 配置网页上的睿象云
  • 6.3 测试是否会报警


1.zabbix自带的数据库实验

直接在服务端进行操作!!

server1查看agent下自带的数据库文件。

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy


也是键值对的形式,HOME表示现在HOME文件夹下读取文件,然后执行后面的值。

ZABBIX监控连接MySQL用户的宏配置_报警_02


先给数据库设置一个密码,创建对应文件

[root@server1 zabbix_agentd.d]# mysqladmin password westos
[root@server1 zabbix_agentd.d]# ll /var/lib/zabbix
ls: cannot access /var/lib/zabbix: No such file or directory
[root@server1 zabbix_agentd.d]# mkdir /var/lib/zabbix
[root@server1 zabbix_agentd.d]# cd /var/lib/zabbix
[root@server1 zabbix]# vim .my.cnf
[root@server1 zabbix]# ll /var/lib/mysql/mysql.sock 
srwxrwxrwx 1 mysql mysql 0 Jan 17 08:28 /var/lib/mysql/mysql.sock

[root@server1 zabbix]# cat .my.cnf 
[mysql]
user=root
password=westos
socket=/var/lib/mysql/mysql.sock

[mysqladmin]
user=root
password=westos
socket=/var/lib/mysql/mysql.sock

[root@server1 zabbix]# systemctl restart zabbix-agent.service ##c重启agent服务,让zabbix可以读取到文件信息

[root@server1 zabbix]# zabbix_get -s 127.0.0.1 -p 10050 -k "mysql.ping" ##这里的ip必须和web界面的一致,也就是zabbix配置文件中的一致
1
[root@server1 zabbix]# zabbix_get -s 127.0.0.1 -p 10050 -k "mysql.version" 
mysql  Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1

ZABBIX监控连接MySQL用户的宏配置_percona_03


ZABBIX监控连接MySQL用户的宏配置_mysql_04

ZABBIX监控连接MySQL用户的宏配置_mysql_05


ZABBIX监控连接MySQL用户的宏配置_percona_06


通过zabbix命令行形式查看

ZABBIX监控连接MySQL用户的宏配置_percona_07


通过zabbix的web界面查看

ZABBIX监控连接MySQL用户的宏配置_JMX_08


ZABBIX监控连接MySQL用户的宏配置_报警_09


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_10


图形只有两项,监控项只有14

ZABBIX监控连接MySQL用户的宏配置_mysql_11


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_12

2. percona监控数据库

2.1 安装percona软件

[root@server1 ~]# ll percona-zabbix-templates-1.1.8-1.noarch.rpm 
-rwxr-xr-x 1 root root 28296 Jan 17 10:33 percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@server1 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 
warning: percona-zabbix-templates-1.1.8-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
Preparing...                                                            (100################################# [100%]
Updating / installing...
   1:percona-zabbix-templates-1.1.8-1                                   ( 18################################# [100%]

Scripts are installed to /var/lib/zabbix/percona/scripts ##脚本位置
Templates are installed to /var/lib/zabbix/percona/templates ##模板位置

ZABBIX监控连接MySQL用户的宏配置_percona_13

2.2 切换到模板目录

[root@server1 ~]# 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/   ##复制到agent读取文件位置
[root@server1 templates]# systemctl restart zabbix-agent.service ##重启agent
[root@server1 templates]# wc -l userparameter_percona_mysql.conf 
190 userparameter_percona_mysql.conf  ## 190个监控项
[root@server1 templates]# cd ..
[root@server1 percona]# ls
scripts  templates
[root@server1 percona]# cd scripts/
[root@server1 scripts]# ls
get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php
[root@server1 scripts]# vim get_mysql_stats_wrapper.sh  ##抓取数据库里面的数据
[root@server1 scripts]# vim ss_get_mysql_stats.php  ##修改使用的数据库用户名和密码,负责数据库的登陆

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_14


ZABBIX监控连接MySQL用户的宏配置_报警_15


ZABBIX监控连接MySQL用户的宏配置_percona_16

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_17


执行脚本拿取对应gg这个键对应的值,然后输出到/tmp下

[root@server1 scripts]# ls
get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php
[root@server1 scripts]# ./get_mysql_stats_wrapper.sh gg 
5      ##测试结果
[root@server1 scripts]# cd /tmp/
[root@server1 tmp]# ls
localhost-mysql_cacti_stats.txt
systemd-private-a5e3b8d7c0384949b7949f334fecfc35-httpd.service-ydNjFW
systemd-private-a5e3b8d7c0384949b7949f334fecfc35-mariadb.service-fIktFl
systemd-private-e9771d3fd47f4c999dd5fe6b8fd196a9-httpd.service-ng94e3
systemd-private-e9771d3fd47f4c999dd5fe6b8fd196a9-mariadb.service-27rpgD
[root@server1 tmp]# cat localhost-mysql_cacti_stats.txt
[root@server1 tmp]# ll localhost-mysql_cacti_stats.txt
-rw-r--r-- 1 root root 1359 Jan 17 10:44 localhost-mysql_cacti_stats.txt
[root@server1 tmp]# rm -fr localhost-mysql_cacti_stats.txt ##删除原因在下面

ZABBIX监控连接MySQL用户的宏配置_percona_18


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_19

2.3 导入刚才的模板

ZABBIX监控连接MySQL用户的宏配置_percona_20


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_21


ZABBIX监控连接MySQL用户的宏配置_JMX_22


删除原来的数据库模板

ZABBIX监控连接MySQL用户的宏配置_JMX_23


添加新的模板

ZABBIX监控连接MySQL用户的宏配置_报警_24


ZABBIX监控连接MySQL用户的宏配置_报警_25


这个没问题就没问题!!!

ZABBIX监控连接MySQL用户的宏配置_JMX_26


在进行操作会变成zabbix操作的

ZABBIX监控连接MySQL用户的宏配置_percona_27


检查问题

ZABBIX监控连接MySQL用户的宏配置_报警_28

3. java应用的监控方法

3.1 下载安装tomcat

tomcat官网 监控配置模板

[root@server2 ~]# ll apache-tomcat-7.0.37.tar.gz 
-rwxr-xr-x 1 root root 7814288 Jan 17 11:37 apache-tomcat-7.0.37.tar.gz
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server2 ~]# cd /usr/local/
[root@server2 local]# ll
total 0
drwxr-xr-x  9 root root 160 Jan 17 11:38 apache-tomcat-7.0.37
drwxr-xr-x. 2 root root   6 Dec 15  2017 bin
drwxr-xr-x. 2 root root   6 Dec 15  2017 etc
drwxr-xr-x. 2 root root   6 Dec 15  2017 games
drwxr-xr-x. 2 root root   6 Dec 15  2017 include
drwxr-xr-x. 2 root root   6 Dec 15  2017 lib
drwxr-xr-x. 2 root root   6 Dec 15  2017 lib64
drwxr-xr-x. 2 root root   6 Dec 15  2017 libexec
drwxr-xr-x. 2 root root   6 Dec 15  2017 sbin
drwxr-xr-x. 5 root root  49 Dec 31 18:39 share
drwxr-xr-x. 2 root root   6 Dec 15  2017 src
[root@server2 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server2 local]# cd tomcat/
[root@server2 tomcat]# ls
bin   lib      logs    RELEASE-NOTES  temp     work
conf  LICENSE  NOTICE  RUNNING.txt    webapps

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_29


ZABBIX监控连接MySQL用户的宏配置_mysql_30

3.2 安装java并配置文件

需要安装JDK环境,直接安装java,自带JDK。

[root@server2 tomcat]# yum install -y java-1.8.0-openjdk.x86_64
[root@server2 bin]# pwd
/usr/local/tomcat/bin
[root@server2 bin]# vim catalina.sh 
	#写入配置文件,大概在102行、
	CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888 ##这个端口可以自己设置
 	  	-Dcom.sun.management.jmxremote.ssl=false
  		-Dcom.sun.management.jmxremote.authenticate=false'
[root@server2 bin]# ./startup.sh  ##启动tomcat
[root@server2 bin]# netstat -antlp | grep :8888
tcp6       0      0 :::8888                 :::*                    LISTEN      5908/java

ZABBIX监控连接MySQL用户的宏配置_mysql_31

ZABBIX监控连接MySQL用户的宏配置_percona_32

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_33


启动tomcat

ZABBIX监控连接MySQL用户的宏配置_报警_34

ZABBIX监控连接MySQL用户的宏配置_mysql_35

3.3 server1上添加java网关并配置文件

[root@server1 ~]# yum install -y zabbix-java-gateway.x86_64  ##服务端需要安装一个java网关,使用10052端口,不然是访问不到8888端口的
#访问流程:server1 -> java-gateway (10052)-> server2(tomcat8888)
[root@server1 zabbix]# pwd
/etc/zabbix
[root@server1 zabbix]# ls
web                 zabbix_java_gateway.conf
zabbix_agentd.conf  zabbix_java_gateway_logback.xml
zabbix_agentd.d     zabbix_server.conf
[root@server1 zabbix]# vim zabbix_java_gateway.conf
[root@server1 zabbix]# systemctl enable --now zabbix-java-gateway.service 
[root@server1 zabbix]# netstat -antlp | grep :10052
tcp6       0      0 :::10052                :::*                    LISTEN      2280/java           

[root@server1 zabbix]# vim zabbix_server.conf 
	JavaGateway=172.25.13.1   ##最关键
	JavaGatewayPort=10052
	StartJavaPollers=10
[root@server1 zabbix]# systemctl restart zabbix-server.service

ZABBIX监控连接MySQL用户的宏配置_JMX_36


ZABBIX监控连接MySQL用户的宏配置_mysql_37

ZABBIX监控连接MySQL用户的宏配置_JMX_38


ZABBIX监控连接MySQL用户的宏配置_报警_39


ZABBIX监控连接MySQL用户的宏配置_percona_40


ZABBIX监控连接MySQL用户的宏配置_JMX_41

ZABBIX监控连接MySQL用户的宏配置_报警_42

3.4 web界面server2添加JMX接口,实现监控

ZABBIX监控连接MySQL用户的宏配置_JMX_43


ZABBIX监控连接MySQL用户的宏配置_mysql_44


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_45


ZABBIX监控连接MySQL用户的宏配置_percona_46


ZABBIX监控连接MySQL用户的宏配置_JMX_47

4. 优化监控,客户端主动回传数据

每隔一段时间,客户端回传数据到server端,而不是让server端一直主动去取数据,不然server端工作量太大

4.1 第一种修改客户端配置文件

禁用server主动访问的ip,设置StartAgent=0,相当于关闭了10050端口

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_48


ZABBIX监控连接MySQL用户的宏配置_JMX_49


这个意思是ahent主动传数据给server端

ZABBIX监控连接MySQL用户的宏配置_报警_50


以上就是设置方法,但是这样设置还需要web界面,也就是server端设置。这个位置必须设置成主动方式才可以实现,不然访问会出错。

一个一个修改比较耗时!!

ZABBIX监控连接MySQL用户的宏配置_JMX_51

4.1第二种,批量设置(server端)

ZABBIX监控连接MySQL用户的宏配置_percona_52


ZABBIX监控连接MySQL用户的宏配置_percona_53


ZABBIX监控连接MySQL用户的宏配置_percona_54


然后下面添加

ZABBIX监控连接MySQL用户的宏配置_percona_55


ZABBIX监控连接MySQL用户的宏配置_mysql_56


修改成主动回传数据的方式

ZABBIX监控连接MySQL用户的宏配置_percona_57


ZABBIX监控连接MySQL用户的宏配置_报警_58


取消原来客户端server3的模板,重新添加新的模板

ZABBIX监控连接MySQL用户的宏配置_JMX_59

ZABBIX监控连接MySQL用户的宏配置_报警_60

5. 分布式监控(proxy)

5.1 使用server3来做proxy的一些前期配置

ZABBIX监控连接MySQL用户的宏配置_percona_61


ZABBIX监控连接MySQL用户的宏配置_报警_62


ZABBIX监控连接MySQL用户的宏配置_mysql_63


ZABBIX监控连接MySQL用户的宏配置_报警_64


ZABBIX监控连接MySQL用户的宏配置_percona_65


ZABBIX监控连接MySQL用户的宏配置_percona_66

5.2安装proxy软件,并安装数据库软件,proxy、server都是基于数据库的

安装数据库并配置数据库信息

[root@proxy ~]# yum install -y mariadb-server.x86_6
[root@proxy ~]# systemctl enable --now mariadb.service
[root@proxy ~]# mysql
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user 'zabbix'@'localhost' identified by 'westos';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.00 sec)

[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf 
	DBName=zabbix_proxy
	DBUser=zabbix
	DBPassword=westos

ZABBIX监控连接MySQL用户的宏配置_报警_67


ZABBIX监控连接MySQL用户的宏配置_mysql_68

ZABBIX监控连接MySQL用户的宏配置_mysql_69


导入数据库文件

[root@proxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.27/
[root@proxy zabbix-proxy-mysql-4.0.27]# ls
AUTHORS  ChangeLog  COPYING  NEWS  README  schema.sql.gz
[root@proxy zabbix-proxy-mysql-4.0.27]# zcat schema.sql.gz | mysql -uzabbix -pwestos zabbix_proxy

ZABBIX监控连接MySQL用户的宏配置_mysql_70

安装proxy并配置系统文件

[root@proxy ~]# yum install zabbix-proxy-mysql.x86_64 -y 
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
	Hostname=proxy
	Server=172.25.13.1

ZABBIX监控连接MySQL用户的宏配置_percona_71


ZABBIX监控连接MySQL用户的宏配置_percona_72

5.3 web添加代理

创建代理

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_73


ZABBIX监控连接MySQL用户的宏配置_JMX_74


ZABBIX监控连接MySQL用户的宏配置_percona_75

为server2添加代理

ZABBIX监控连接MySQL用户的宏配置_JMX_76


ZABBIX监控连接MySQL用户的宏配置_JMX_77

5.4 server2上设置配置文件

让server2通过proxy代理回传数据!!

[root@server2 zabbix]# vim zabbix_agentd.conf
	Server=172.25.13.3
	ServerActive=172.25.13.3
[root@server2 zabbix]# systemctl restart zabbix-agent.service

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_78

ZABBIX监控连接MySQL用户的宏配置_JMX_79


ZABBIX监控连接MySQL用户的宏配置_JMX_80


重启server1,查看server1的日志,看是否查看连接到proxy

[root@server1 zabbix]# systemctl restart zabbix-server.service
[root@server1 zabbix]# cat /var/log/zabbix/zabbix_server.log

ZABBIX监控连接MySQL用户的宏配置_报警_81

ZABBIX监控连接MySQL用户的宏配置_报警_82


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_83


查看proxy端日志,是否代理了server2

[root@proxy ~]# systemctl restart zabbix-proxy.service
[root@proxy ~]# cat /var/log/zabbix/zabbix_proxy.log

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_84

ZABBIX监控连接MySQL用户的宏配置_mysql_85

5.5 jmx的设置

proxy端进行设置,java网关在server1上

[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
	JavaGateway=172.25.13.1
	JavaGatewayPort=10052
	StartJavaPollers=10
[root@proxy ~]# systemctl restart zabbix-proxy.service

ZABBIX监控连接MySQL用户的宏配置_报警_86


ZABBIX监控连接MySQL用户的宏配置_JMX_87


ZABBIX监控连接MySQL用户的宏配置_mysql_88


ZABBIX监控连接MySQL用户的宏配置_percona_89

6. 报警系统(zabbix+睿象云)

6.1 安装探针

先把没用的删除掉!!

ZABBIX监控连接MySQL用户的宏配置_mysql_90

wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz    ##探针下载地址

https://www.aiops.com/docs/ca/integration/zabbix/  ##集成zabbix的帮助文档地址


[root@server1 ~]# ll ca_zabbix_release-2.1.0.tar.gz 
-rwx--x--x 1 root root 3470 Jan 17 17:00 ca_zabbix_release-2.1.0.tar.gz
[root@server1 ~]# tar zxf ca_zabbix_release-2.1.0.tar.gz -C /usr/lib/zabbix/alertscripts/
[root@server1 ~]# cd /usr/lib/zabbix/alertscripts/

[root@server1 alertscripts]# ls
cloudalert
[root@server1 alertscripts]# cd cloudalert/
[root@server1 cloudalert]# ls

首先要保证服务端有网络,不然警报发不出去,因为用的是网络报警!!

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_91

ZABBIX监控连接MySQL用户的宏配置_mysql_92

[root@server1 alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@server1 alertscripts]# vim /etc/zabbix/zabbix_server.conf

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_93

ZABBIX监控连接MySQL用户的宏配置_JMX_94

6.2 配置网页上的睿象云

睿象云

注册,查看免费额度

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_95


ZABBIX监控连接MySQL用户的宏配置_mysql_96


开始配置zabbix

ZABBIX监控连接MySQL用户的宏配置_JMX_97


ZABBIX监控连接MySQL用户的宏配置_percona_98


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_99

现在需要通过key启动探针

[root@server1 alertscripts]# ls
cloudalert
[root@server1 alertscripts]# cd cloudalert/bin/
[root@server1 bin]# ls
alert.sh  install.sh  log.sh  update.sh
[root@server1 bin]# ./install.sh d6a550ee-9bf0-4c70-b913-2ccc1b617a8b
./log.sh: line 6: /usr/lib/zabbix/alertscripts/cloudalert/bin/cloudalert.conf: No such file or directory
start to create config file...
Zabbix管理地址: http://172.25.13.1/zabbix
Zabbix管理员账号: Admin
Zabbix管理员密码:

ZABBIX监控连接MySQL用户的宏配置_JMX_100


ZABBIX监控连接MySQL用户的宏配置_JMX_101


ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_102

ZABBIX监控连接MySQL用户的宏配置_percona_103


ZABBIX监控连接MySQL用户的宏配置_JMX_104


ZABBIX监控连接MySQL用户的宏配置_报警_105

配置报警策略

ZABBIX监控连接MySQL用户的宏配置_percona_106


ZABBIX监控连接MySQL用户的宏配置_报警_107

6.3 测试是否会报警

ZABBIX监控连接MySQL用户的宏配置_分布式监控proxy_108


停止掉后,默认是5分钟,会自动发送报警信息到手机微信,也可以查看zabbix网页信息。微信警告就不发了,没办法截图。

ZABBIX监控连接MySQL用户的宏配置_percona_109


ZABBIX监控连接MySQL用户的宏配置_percona_110