Zabbix使用percona-zabbix-templates监控mysql

将zabbix运行在docker中

尝试将zabbix整体环境运行在docker中,方便以后使用,部署方式使用docker-compose,设置上可能不是很全面,后面有使用场景再补充

  • zabbix主机: 192.168.2.180
  • mysql主机: 192.168.2.230

部署zabbix

目录结构
[root@jenkins server]# tree zabbix/ -L 1
zabbix/
├── alertscripts
├── conf
├── db
└── docker-compose.yml

docker compose部署文件内容如下

version: '3'

services:

  zabbix:
    image: zabbix/zabbix-appliance:latest
    container_name: zabbix
    restart: always
    ports:
      - "80:80"   #zabbix web访问端口
      - "10051:10051"
      - "3306:3306"
    environment:
      - PHP_TZ = "Asia/Shanghai"
      - ZBX_DEBUGLEVEL = 2
      - ZBX_TIMEOUT = 10
      - ZBX_SERVER_NAME = "zabbix" 
      - ZBX_MEMORYLIMIT = 2048
      - MYSQL_USER = "zabbix"     #zabbix连接数据库用户
      - MYSQL_PASSWORD = "zabbix"   #连接数据库密码
      - MYSQL_DATABASE = "zabbix"     #数据库名称
     #上面这些参数可以在docker hub上的文档中找到,还有一些其他的参数没有用到

    volumes: 
      - /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - ./db/my.cnf:/etc/mysql/my.cnf
      - ./db/mysql:/var/lib/mysql
      - ./conf/zabbix_server.conf:/etc/zabbix/zabbix_server.conf

zabbix整体环境运行在一个容器内,所以本地映射好所需的配置文件

mysql的配置文件内容

[client]
port            = 3306
socket          = /run/mysqld/mysqld.sock

[mysqld]
port            = 3306
socket          = /run/mysqld/mysqld.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

#log-bin=mysql-bin
#binlog_format=mixed
server-id       = 1 
innodb_buffer_pool_size = 2G  

[mysql] 
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M 

zabbix-server.conf 文件内容(最好使用容器内的配置项,这里是从容器内的的配置文件中摘出来的,所以配置是没有变动的)

LogType=console

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306

JavaGateway=localhost
JavaGatewayPort=10052
StartJavaPollers=5

AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/sbin/fping

Fping6Location=/usr/sbin/fping6
SSHKeyLocation=/var/lib/zabbix/ssh_keys
SSLCertLocation=/var/lib/zabbix/ssl/certs/
SSLKeyLocation=/var/lib/zabbix/ssl/keys/
SSLCALocation=/var/lib/zabbix/ssl/ssl_ca/
LoadModulePath=/var/lib/zabbix/modules/
  • 上面的配置文件准备好后启动执行 dockre-compose up -d 指令(在compose文件所在目录下执行)启动zabbix服务。启动成功后访问即可。

《Zabbix使用percona-zabbix-templates监控mysql》

docker拉取的版本最新版是4.X的版本

安装mysql数据库

在另一台主机上安装mysql, (这里略过),mysql服务主机上安装zabbix-agent也略过,这里只记录一下使用percona的监控模板监控mysql,zabbix自带的mysql监控模板监控指标比较少。

使用percona的percona-monitoring-plugins的监控模板

下载插件:https://www.percona.com/downloads/percona-monitoring-plugins/

wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm

#rpm安装下载下来的安装包
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

安装percona的rpm包,安装php插件

yum install  php php-mysql –y

安装后,会在/var/lib/zabbix/目录下生成percona目录,目录下的文件如下

[root@tccp ~]# cd /var/lib/zabbix/percona/
[root@tccp percona]# tree ./
./
├── scripts
│   ├── get_mysql_stats_wrapper.sh
│   └── ss_get_mysql_stats.php
└── templates
    ├── userparameter_percona_mysql.conf
    └── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml  #监控模板,导入到zabbix server

进入templates目录,把监控配置文件userparameter_percona_mysql.conf复制到/etc/zabbix/zabbix_agentd.d/目录下:

 cp templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

修改脚本文件

将get_mysql_stats_wrapper.sh脚本中的大概19行处mysql的登录指令,把RES=HOME=~zabbix mysql -e改成RES=/usr/bin/mysql -uzabbix -pzabbix -e `。
将scripts目录下的ss_get_mysql_stats.php文件内配置连接数据库的用户和密码,端口等信息,如下:

$mysql_user = 'zabbix';
$mysql_pass = 'zabbix';
$mysql_port = 3306;

修改保存后将该文件权限改为600,并且确保percona目录的属主属组是不是zabbix,如果不是,要改成zabbix

测试两个脚本,这个步奏可以确认脚本能不能连接上数据库

/usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
4   #执行成功会返回一个随机数

重启zabbix-agent,重启后到/tmp目录下,会生成一个localhost-mysql_cacti_stats.txt文件,(ss_get_mysql_stats.php在一定时间间隔内更新txt文档,生成监控数据,zabbix-server根据监控项名称通过zabbix-agent配置文件去txt文档中获取数据,因此,该文件的属主属组要给zabbix,默认是root用户,需要修改

zabbix server 测试获取数据:在zabbix容器中执行

bash-4.3# zabbix_get -s 192.168.2.230 -p 10050 -k "MySQL.Threads-connected"
1  #获取的数据值

进入zabbix管理页面,导入配置模板,zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

导入的时候,出现标签无效 “/zabbix_export/date”: “YYYY-MM-DDThh: mm:ssZ” 问题,是因为插件的模板与zabbix server版本不匹配,解决方式有两种,安装一个较低版本的zabbix server,将这个模板文件导入后再导出,3.X的版本可用,或者网上去找可用的模板文件。

这里提供一个直接在zabbix server4.X版本使用的模板文件

链接:https://pan.baidu.com/s/1wkxzPt6vK5t8a_ET7bVpWw
提取码:pvuj

上传模板后就可以关联到主机使用了

《Zabbix使用percona-zabbix-templates监控mysql》

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注