利用Zabbix部署一個簡易的MySQL監控系統

語言: CN / TW / HK
  • GreatSQL社群原創內容未經授權不得隨意使用,轉載請聯絡小編並註明來源。
  • GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。

[toc]

一、Zabbix部署

1.配置Zabbix源

# 1.下載rpm包
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i "s#http://repo.zabbix.com/#https://mirror.tuna.tsinghua.edu.cn/zabbix/#g" /etc/yum.repos.d/zabbix.repo

# 2.啟用Zabbix前端倉庫
sed -i "s/gpgcheck=1/gpgcheck=0/g" /etc/yum.repos.d/zabbix.repo
sed -i "s/enabled=0/enabled=1/g" /etc/yum.repos.d/zabbix.repo

# 3.清理源yum資訊
yum clean all

2.安裝 Zabbix server 和 agent

yum -y install zabbix-server-mysql zabbix-agent

3.啟用 Red Hat軟體集合

SCL(Software Collections)可以讓你在同一個作業系統上安裝和使用多個版本的軟體,而不會影響整個系統的安裝包。

yum -y install centos-release-scl

4.安裝Zabbix前端軟體包

通常我們會安裝的獨立的Nginx和Php,這裡演示方便就直接安裝了

yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl

5.安裝MySQL用來儲存Zabbix的元資料資訊

安裝MySQL步驟跳過,非本文重點。

6.資料庫賦權

create database zabbix charset utf8 collate utf8_bin; 
create user [email protected]'127.0.0.1' identified by 'zabbix';
grant all on zabbix.* to [email protected]'127.0.0.1';
ALTER USER 'zabbix'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'zabbix';
flush privileges;

7.匯入Zabbix元資料SQL

zcat /usr/share/doc/zabbix-server-mysql-5.0.24/create.sql.gz|mysql -uroot -p -S /data/GreatSQL/3306/mysql.sock zabbix

8.服務端配置連線zabbix資料庫

[[email protected]]# cat /etc/zabbix/zabbix_server.conf|grep -v '#'|grep -v '^$'
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBHost=127.0.0.1
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

9、配置Nignx 配置後把域名繫結到hosts檔案中

[[email protected]]# more /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
        listen      80;
        server_name     greatsql.zabbix.com;  # 自定義域名
        root    /usr/share/zabbix;

10、配置Php

[[email protected]]# cat /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx           # 加個nginx白名單
php_value[date.timezone] = Asia/Shanghai  # 時區改成上海

11、啟動服務並設定開機啟動

systemctl start zabbix-server
systemctl start rh-nginx116-nginx.service 
systemctl start rh-php72-php-fpm.service 
systemctl enable zabbix-server
systemctl enable rh-nginx116-nginx.service 
systemctl enable rh-php72-php-fpm.service 

二、瀏覽器安裝Zabbix

1.訪問WEB地址

先繫結下host,步驟略,然後瀏覽器訪問地址。

http://greatsql.zabbix.com/setup.php

file

2.確認所有條件都OK,點選Next step

file

3.填寫賬戶密碼等資訊,點選Next step

file

4.再執行Next step

file

5.執行Next step

file

6.確認安裝完成

file

7.登陸主頁,預設賬戶密碼:Admin/zabbix

http://greatsql.zabbix.com/index.php

file

8.主頁資訊

file

三、Zabbix Agent 安裝

1、配置Zabbix yum地址

# 1.下載rpm包
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i "s#http://repo.zabbix.com/#https://mirror.tuna.tsinghua.edu.cn/zabbix/#g" /etc/yum.repos.d/zabbix.repo

# 2.啟用Zabbix前端倉庫
sed -i "s/gpgcheck=1/gpgcheck=0/g" /etc/yum.repos.d/zabbix.repo
sed -i "s/enabled=0/enabled=1/g" /etc/yum.repos.d/zabbix.repo

# 3.清理源yum資訊
yum clean all

2、安裝zabbix-agent

yum install zabbix-agent -y

3、配置Zabbix Server地址

[[email protected] zabbix]# cat /etc/zabbix/zabbix_agentd.conf|grep -v '#'|grep -v '^$'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.6.221         # Zabbix服務端地址
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf

4、啟動zabbix-agent

systemctl start zabbix-agent
systemctl enable zabbix-agent

四、配置MySQL監控

4.1 配置 Host groups

左側下拉選單欄 Configuration -> Host groups

file

右上角 Create host group

file

輸入名稱 MySQL Monitor 點選 Add,完成

file

4.2 配置 Templates

1、選單欄點選 Templates

file

2、右上角點選 Create template

file

3、填寫模板名稱和組,Groups就是上一個步驟建立的MySQL Monitor

file

4、選擇連結的模板,連結了2個模板、分別是系統監控和MySQL服務監控

file

5、配置完成後,如果是首次配置則點選Add。否則就是Update。

4.3 配置 hosts

1、左側選單欄點選 hosts

file

2、右側點選 Create host

file

3、配置Host內容

file

4、配置 Templates 內容,選擇上個步驟建立的自定義MySQL Monitor Template

file

5、配置完成後,點選Add

4.4 配置後最終效果

file

以上就配置完成一臺受監控的資料庫伺服器。

五、檢視監控資料

點選左邊選單頁Monitorning -> Latest data 可以看到 MySQL-01 系統以及MySQL相關的監控項彙總資訊。

file

點選其中一個監控項Graph,可以看到歷史監控繪圖資料。

file

由於zabbix_agentd沒有收集MySQL的資訊,所以我們要結合監控模板自定義編寫監控指令碼進行資料收集。

1、檢視模板配置要求

開啟相關模板,檢視描述

file

Requirements for template operation:
1.Install Zabbix agent and MySQL client.
2.Copy Template_DB_MySQL.conf into folder with Zabbix agent configuration (/etc/zabbix/zabbix_agentd.d/ by default). Don't forget restart zabbix-agent. 
3.Create MySQL user for monitoring. For example:
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
For more information read the MYSQL documentation https://dev.mysql.com/doc/refman/8.0/en/grant.html , please. 
4.Create .my.cnf in home directory of Zabbix agent for Linux (/var/lib/zabbix by default ) or my.cnf in c:\ for Windows. For example:
[client]
user=zbx_monitor
password=<password>

按步驟滿足相關要求。

1、安裝 Zabbix agent and MySQL client.

2、複製監控採集模板,伺服器並沒有Template_DB_MySQL.conf檔案,我們自定義一個檔案,如下:

[[email protected] ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.uptime[*], HOME=/etc/zabbix mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.ping[*], HOME=/etc/zabbix mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], HOME=/etc/zabbix mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], HOME=/etc/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"

3、資料庫採集許可權開通

CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '123456';
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
flush privileges;

4、建立監控採集的賬戶資訊

[email protected] ~]# cat /etc/zabbix/.my.cnf
[mysql]
user=zbx_monitor
password=123456
[mysqladmin]
user=zbx_monitor
password=123456

以上按要求配置完成後,重啟程序。

[[email protected] ~]# systemctl restart zabbix-agent

再次檢視就有MySQL監控資料了。

file

Enjoy GreatSQL :)