依據前文:Linux下Zabbix5.0 LTS監控基礎原理及安裝部署(圖文教程) 環境,繼續新增MySQL應用集。
第一部分:新增Zabbix自帶的MySQL應用集。
在ZabbixClient-01上操作。【官方rpm下載】
# 檢查是否已安裝MySQL,反之下載安裝 [root@ZabbixClient-01 ~]# rpm -qa | grep mysql [root@ZabbixClient-01 ~]# wget https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm [root@ZabbixClient-01 ~]# rpm -Uvh mysql57-community-release-el7-10.noarch.rpm [root@ZabbixClient-01 ~]# yum list all | grep mysql-community [root@ZabbixClient-01 ~]# yum install mysql-community-server mysql-community-client -y [root@ZabbixClient-01 ~]# mysql -V mysql Ver 14.14 Distrib 5.7.36, for Linux (x86_64) using EditLine wrapper # 檢查是否正常啟動 [root@ZabbixClient-01 ~]# systemctl start mysqld && systemctl enable mysqld [root@ZabbixClient-01 ~]# netstat -nutpl | grep mysql tcp6 0 0 :::3306 :::* LISTEN 7350/mysqld [root@ZabbixClient-01 ~]# ps -ef | grep mysql mysql 7350 1 0 14:43 ? 00:00:03 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid # MySQL安全初始化 [root@Mysql-Master01 ~]# grep 'temporary password' /var/log/mysqld.log 2021-08-19T04:08:59.720748Z 1 [Note] A temporary password is generated for root@localhost: .!aTlyih4r2y [root@Mysql-Master01 ~]# mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: # 輸入MySQL初始密碼 .!aTlyih4r2y The existing password for the user account root has expired. Please set a new password. New password: # 輸入符合複雜密碼策略的新密碼 Client@01 Re-enter new password: # 再次輸入 Client@01 The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : n # 上面以已經修改了,無需再修改 ... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y # 是否刪除匿名使用者 Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y # 是否禁用root遠端登入 Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y # 是否刪除test庫和對test庫的訪問許可權 - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y # 是否重新整理授權表使修改生效 Success. All done! # root測試登入MySQL,並建立監控使用者 [root@ZabbixClient-01 ~]# mysql -u root -p Enter password: # 輸入上面剛更改的密碼 Client@01 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 113 Server version: 5.7.36 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # 建立使用者zbx_monitor 密碼ZabbixClient@01 mysql> create user 'zbx_monitor'@'localhost' identified by 'ZabbixClient@01'; Query OK, 0 rows affected (0.00 sec) # 授予zbx_monitor許可權 mysql> grant usage,replication client,process,show databases,show view on *.* to 'zbx_monitor'@'localhost'; Query OK, 0 rows affected (0.00 sec) 或 mysql> grant all privileges on *.* to 'zbx_monitor'@'localhost'; Query OK, 0 rows affected (0.00 sec) # 重新整理授權,使其立即生效 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select user,host from mysql.user; +---------------+-----------+ | user | host | +---------------+-----------+ | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | zbx_monitor | localhost | +---------------+-----------+ 4 rows in set (0.00 sec) mysql> show grants for 'zbx_monitor'@'localhost'; +----------------------------------------------------------+ | Grants for zbx_monitor@localhost | +----------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'zbx_monitor'@'localhost' | +----------------------------------------------------------+ 1 row in set (0.00 sec) # zbx_monitor使用者測試登入,並檢視已有許可權 [root@ZabbixClient-01 ~]# mysql -u zbx_monitor -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.7.36 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show grants for current_user(); +----------------------------------------------------------+ | Grants for zbx_monitor@localhost | +----------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'zbx_monitor'@'localhost' | +----------------------------------------------------------+ 1 row in set (0.00 sec) # /etc/zabbix下新增一個檔案 .my.cnf [root@ZabbixClient-01 ~]# vim /etc/zabbix/.my.cnf [mysql] user=zbx_monitor password=ZabbixClient@01 [mysqladmin] user=zbx_monitor password=ZabbixClient@01 # 搜尋zabbix-agent自帶的MySQL Key配置檔案 [root@ZabbixClient-01 ~]# find / -iname userparameter_mysql* /usr/share/doc/zabbix-agent-5.0.17/userparameter_mysql.conf [root@ZabbixClient-01 ~]# cp /usr/share/doc/zabbix-agent-5.0.17/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/ # 修改userparameter_mysql.conf配置檔案(其實只多了一個 HOME=/etc/zabbix) [root@ZabbixClient-01 ~]# sed -i_bak$(date +%Y%m%d) -e 's#],#], HOME=/etc/zabbix#g' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf [root@ZabbixClient-01 ~]# systemctl restart zabbix-agent && systemctl restart mysqld
Zabbix Web設定,新增MySQL監控集。
第二部分: 動作觸發實現163.com郵箱報警功能。
傳送手機簡訊獲取163郵箱授權碼。
Zabbix Web設定。
qq郵箱,已收到測試郵件。
建立二級管理員使用者群組。
建立二級管理員使用者。
建立動作觸發。
ZabbixClient-01測試停用MySQL服務,驗證結果 。
[root@ZabbixClient-01 ~]# systemctl stop mysqld [root@ZabbixClient-01 ~]# ps -ef | grep mysqld root 71766 1141 0 11:30 pts/0 00:00:00 grep --color=auto mysqld
ZabbixClient-01測試啟用MySQL服務,驗證結果。
[root@ZabbixClient-01 ~]# systemctl start mysqld [root@ZabbixClient-01 ~]# ps -ef | grep mysqld mysql 96660 1 0 11:58 ? 00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid root 96816 1141 0 12:06 pts/0 00:00:00 grep --color=auto mysqld
第三部分:執行預處理操作。
設定MySQL告警停用後,自動執行重啟MySQL操作。
# 增加遠端執行命令操作配置 [root@ZabbixClient-01 ~]# sed -i -e '$a\EnableRemoteCommands=1\nLogRemoteCommands=1' /etc/zabbix/zabbix_agentd.conf 解析:EnableRemoteCommands=1 #允許遠端執行命令 LogRemoteCommands=1 #開啟遠端執行命令操作日誌 # 配置zabbix客戶端的sudo許可權 [root@ZabbixClient-01 ~]# visudo #.... # 末行新增以下兩行內容 # allows 'zabbix' user to restart mysqld without password. zabbix ALL=NOPASSWD:/usr/bin/systemctl restart mysqld
至此,已完成所有部署設定。