CentOS 7.6基於Xampp集成環境安裝部署Lepus監控MySQL 5.7

1、Lepus相關概念:php

一、Lepus簡介:html

Lepus(天兔)是一套由Python+PHP開發的數據庫企業級監控系統。監控系統由Python實現多進程數據採集和告警,PHP實現Web展現和管理。企業經過Lepus能夠對數據庫的實時健康和各類性能指標進行全方位的監控。目前已支持MySQLOracleSQLServerMongoDBRedis數據庫的全面監控。Lepus能夠在數據庫出現故障或潛在性能問題時,根據用戶設置及時將數據庫的異常進行報警,通知數據庫管理員以進行處理和優化,幫助企業解決數據庫性能監控問題,及時發現性能和瓶頸,避免由數據庫潛在問題形成的直接經濟損失。Lepus可以查看各類實時性能狀態指標,而且對健康、性能數據進行統計分析,從運維者到決策者多個層面的視角查看相關報表,幫助決策者對將來數據庫容量進行更好的規劃,從而下降了硬件成本。node

二、Lepus目前主要有以下功能和特性:python

(1)無需Agent,遠程監視雲中數據庫mysql

(2)Web直觀的管理和監視數據庫linux

(3)實時MySQLOracleSQLServerMongoDBRedis健康監控和告警sql

(4)實時MySQL緩存、OracleSQLServerMongoDB索引、Redis性能監控shell

(5)實時MySQL複製監視和告警、資源監視和分析、InnoDB IO性能監控、表空間增加趨勢分析、慢查詢在線分析數據庫

(6)實時Oracle表空間使用監控apache

(7)實時MongoDB內存使用監控

(8)實時OS主機CPU、內存、磁盤、網絡、IO監控

三、Lepus相關網站:

(1)Lepus官方網站:http://www.lepus.cc

(2)在線手冊:http://www.lepus.cc/manual/index

備註:目前最新版本爲3.8 Beta,更新時間爲2016-05-03


2、準備工做(3個節點都須要執行以下操做):

一、演示環境:

IP

操做系統

主機名

角色

數據庫版本

安裝方式

192.168.1.144

CentOS   7.6 x86_64

node1

master

5.7.26-log   MySQL Community Server

rpm

192.168.1.145

CentOS   7.6 x86_64

node2

slave

5.7.26-log   MySQL Community Server

rpm

192.168.1.146

CentOS   7.6 x86_64

node3

lepus

10.1.38-MariaDB   Source distribution

Xampp

二、關閉SELinuxfirewalld

三、配置epel

四、配置節點時間同步

五、配置主機名

六、配置/etc/hosts文件:

# vim /etc/hosts

192.168.1.144 node1

192.168.1.145 node2

192.168.1.146 node3

七、下載MySQL 5.7軟件包,https://dev.mysql.com/downloads/mysql/5.7.html#downloads


3、安裝配置MySQL GTID主從複製(如未特殊說明,在masterslave兩個節點中執行以下操做):

一、卸載CentOS 7.6自帶的MariaDB

# rpm -qa | grep -i mariadb --> mariadb-libs-5.5.60-1.el7_5.x86_64

# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

二、若是以前安裝過MySQL,先卸載:# rpm -qa | grep -i mysql

三、若是存在/etc/my.cnf配置文件,先刪除:# rm -rf /etc/my.cnf

四、將軟件包上傳至主機/tmp目錄下:

mysql-community-client-5.7.26-1.el7.x86_64.rpm

mysql-community-libs-5.7.26-1.el7.x86_64.rpm

mysql-community-common-5.7.26-1.el7.x86_64.rpm

mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm

mysql-community-devel-5.7.26-1.el7.x86_64.rpm

mysql-community-server-5.7.26-1.el7.x86_64.rpm

五、安裝MySQL軟件包:# yum -y localinstall *.rpm

六、初始化MySQL# mysqld --initialize --user=mysql --datadir=/var/lib/mysql

備註:初始化以前確保/var/lib/mysql目錄爲空

七、配置GTID主從複製:

# mv /etc/my.cnf /etc/my.cnf.bak

# vim /etc/my.cnf

master節點:

[mysqld]

port=3306

socket=/var/lib/mysql/mysql.sock

datadir=/var/lib/mysql

pid-file=/var/run/mysqld/mysqld.pid

log-error=/var/log/mysqld.log

lower_case_table_names=1

character_set_server=utf8mb4

collation_server=utf8mb4_general_ci

innodb_file_per_table=1

skip_name_resolve=1

slow_query_log=1

slow_query_log_file=mysql-slow.log

symbolic-links=0

explicit_defaults_for_timestamp=1

sync_binlog=1

innodb_flush_log_at_trx_commit=1

log_bin=mysql-bin

log_bin_index=mysql-bin.index

binlog_format=row

server_id=1

gtid_mode=on

enforce_gtid_consistency=on

備註:

(1)MySQL 5.7版本開始,gtid_mode支持動態修改,gtid_mode的可取值爲:

a、off:不支持GTID事務,生成的是匿名事務,slave節點也只能應用匿名事務

b、off_permissive:生成的是匿名事務,slave節點能夠應用匿名事務和GTID事務

c、on_permissive:生成的是GTID事務,slave節點能夠應用匿名事務和GTID事務(此步驟操做完成後,master節點的二進制日誌就會變成GTID模式)

d、on:支持GTID事務,生成的是GTID事務,slave節點也只能應用GTID事務

注意:在生產環境中,可能有把傳統複製改成GTID複製模式的需求,gtid_mode雖然支持動態修改,但不支持跳躍式修改,好比從on_permissive修改成off是不能夠的。

(2)enforce_gtid_consistency主要用於不讓違反GTID的操做執行,可取值爲:

a、off:容許全部操做

b、on:不容許有違反GTID的操做,且報錯

c、warnMySQL 5.7版本新增,容許全部操做,可是違反GTID的操做會提示警告

slave節點:

[mysqld]

port=3306

socket=/var/lib/mysql/mysql.sock

datadir=/var/lib/mysql

pid-file=/var/run/mysqld/mysqld.pid

log-error=/var/log/mysqld.log

lower_case_table_names=1

character_set_server=utf8mb4

collation_server=utf8mb4_general_ci

innodb_file_per_table=1

skip_name_resolve=1

slow_query_log=1

slow_query_log_file=mysql-slow.log

symbolic-links=0

explicit_defaults_for_timestamp=1

relay_log=relay-log

relay_log_index=relay-log.index

server_id=2

read_only=1

gtid_mode=on

enforce_gtid_consistency=on

備註:

(1)slave節點只能讀不能寫

(2)中繼日誌默認不存在

(3)MySQL 5.6版本中使用GTID複製模式,必需要開啓參數log_slave_updates=1,但在MySQL 5.7版本中使用gtid_executed系統表記錄已經執行的GTID集合信息,因此就不用開啓參數log_slave_updates=1,開啓的意義是把relay log中的日誌內容再次記錄到slave節點的本地binlog中。

八、啓動MySQL服務:

# systemctl start mysqld.service

# ss -tunlp | grep mysqld

# systemctl enable mysqld.service

# systemctl status mysqld.service

九、查看root@localhost用戶的初始密碼:# grep password /var/log/mysqld.log

十、配置MySQL安全向導:# mysql_secure_installation

十一、master節點建立具備複製權限的用戶repluser

# mysql -uroot -p

mysql> create user 'repluser'@'192.168.1.%' identified by '123456';

mysql> grant replication slave on *.* to 'repluser'@'192.168.1.%';

mysql> flush privileges;

mysql> show global variables like 'server_uuid';

image.png

備註:內容和/var/lib/mysql/auto.cnf文件中的內容一致

十二、slave節點使用具備複製權限的用戶repluser鏈接至master節點:

# mysql -uroot -p

mysql> change master to master_host='192.168.1.144',master_user='repluser',master_password='123456',master_port=3306,master_auto_position=1;

mysql> show slave status\G

image.png

image.png

備註:

(1)Slave_IO_RunningSlave_SQL_Running的值,默認爲No

(2)自動在/var/lib/mysql數據目錄中建立relay-log.000001relay-log.indexrelay-log.info文件

1三、slave節點啓動複製線程:

mysql> start slave;

備註:

(1)start slave等同於分別執行start slave io_threadstart slave sql_thread

(2)stop slave表示中止主從複製線程

(3)重slave節點所在的主機,複製線程會自動啓動

mysql> show slave status\G

image.png

image.png

image.png

備註:

(1)只有當Slave_IO_RunningSlave_SQL_Running的值都爲Yes時,複製線程纔算啓動成功

(2)Seconds_Behind_Master的值爲0,說明slave節點沒有落後於master節點

(3)複製時的詳細信息記錄在slave節點的錯誤日誌/var/log/mysqld.log

(4)slave節點start slave時,會計算show slave statusRetrieved_Gtid_SetExecuted_Gtid_Set的並集,而後將此GTID並集發送給master節點。master節點會使用slave節點請求的GTID集合和master節點自身的gtid_executed比較,把slave節點GTID集合裏缺失的事務所有發送給slave節點。若是slave節點缺失的GTID已經被master節點清除,則slave節點會提示1236錯誤,I/O線程中斷。

1四、master節點查看GTID相關信息:

mysql> show master status;

image.png

mysql> show slave hosts;

image.png

mysql> show global variables like '%gtid%';

image.png

備註:

(1)gtid_executed:當前實例上已經執行過的GTID集合,實際上包含了全部記錄到binlog中的事務。若是set sql_log_bin=0,執行的事務不會生成binlog事件,也不會記錄到gtid_executed中。執行reset master能夠將變量@@global.gtid_executed清空。

(2)gtid_owned:當前實例正在執行中的GTID,以及對應的線程ID

(3)gtid_purged:記錄當前實例執行過,但已被清除的GTID集合。gtid_purgedgtid_executed的子集。只有gtid_executed爲空時才能手動設置gtid_purged變量,此時會將gtid_executed更新爲和gtid_purged相同的值。

mysql> show variables like '%gtid%';

image.png

備註:gtid_nextsession會話級別的變量,如何產生下一個GTID,可取值爲

(1)automatic:默認取值,在每次事務提交時自動生成新的GTID,它從當前已執行的GTID集合(即gtid_executed)中,找一個大於0的、未使用的transaction_id最小值做爲下個事務的GTID,同時在binlog的實際更新事務事件前插入一條set gtid_next事件,因此即便是同一個server_uuid,也不能經過transaction_id的大小來判斷事務的順序。

(2)anonymous:執行事務不會產生GTID

(3)顯示指定GTID:能夠指定任意合法的GTID,但不能是當前gtid_executed中已經包含的GTID

mysql> show processlist;

image.png

1五、slave節點查看GTID相關信息:

mysql> show slave status\G

mysql> show global variables like '%gtid%';

image.png

mysql> show variables like '%gtid%';

image.png

mysql> show processlist;

image.png

1六、master節點建立測試數據:

mysql> create database db;

mysql> create table db.tb(id int unsigned auto_increment primary key not null,age int not null);

mysql> desc db.tb;

mysql> insert into db.tb(age) values(35),(40);

mysql> select * from db.tb;

image.png

mysql> show master status;

image.png

1七、slave節點查看測試數據:

mysql> show databases like 'db';

image.png

mysql> select * from db.tb;

image.png

mysql> show slave status\G

mysql> show global variables like '%gtid%';

image.png


4、安裝啓動Lepus(如未特殊說明,在lepus節點中執行以下操做):

一、安裝依賴軟件包:# yum -y install openssl-devel python-devel xterm libffi-devel python-setuptools zlib-devel

二、安裝Xampp

Lepus的安裝須要LAMP環境,此處不推薦使用yumrpm方式安裝,建議使用Xampp集成環境包進行安裝。Xampp是一個可靠穩定的LAMP套件,目前已被諸多公司用於生產服務器的部署,目前Lepus的開發環境、測試環境及線上官網的Web環境都運行在Xampp環境下,且很是穩定。

特別說明:Lepus不支持PHP 7.x的版本,因此不能下載安裝目前最新版本xampp-linux-x64-7.3.7-0-installer.run,該軟件包集成的PHP版本爲7.3.7

Xampp下載地址:https://www.apachefriends.org/download.html

# chmod +x xampp-linux-x64-5.6.40-1-installer.run

# ./xampp-linux-x64-5.6.40-1-installer.run

image.png

備註:

(1)Xampp默認安裝路徑:/opt/lampp

(2)Apache默認配置文件:/opt/lampp/etc/httpd.conf/opt/lampp/etc/extra/httpd-xampp.conf

(3)PHP默認配置文件:/opt/lampp/etc/php.ini

(4)MySQL默認配置文件:/opt/lampp/etc/my.cnf

(5)ProFTPD默認配置文件:/opt/lampp/etc/proftpd.conf

(6)Web代碼默認上傳路徑:/opt/lampp/htdocs

三、啓動Xampp服務:# /opt/lampp/lampp start

image.png

# /opt/lampp/lampp --help

image.png

四、配置Xampp安全向導:# /opt/lampp/lampp security

image.png

五、測試Xampp集成環境是否正常運行:瀏覽器中輸入192.168.1.146

image.png

六、配置系統環境變量:

# vim /etc/profile.d/xampp.sh

export PATH=/opt/lampp/bin:$PATH

export LD_LIBRARY_PATH=/opt/lampp/lib:$LD_LIBRARY_PATH

# . /etc/profile.d/xampp.sh

七、查看Python版本:# python --version

image.png

特別說明:Lepus暫不支持Python 3.x版本

八、安裝Python基礎模塊:

MySQLdbPython鏈接和操做MySQL的類庫,若是準備使用Lepus監控MySQL數據庫,那麼該模塊必須安裝,此處使用yum方式安裝。

# yum -y install MySQL-python

備註:也可經過Python模塊地址:https://pypi.org/project/MySQL-python/,下載MySQL-python-1.2.5.zip進行安裝,或直接使用pip命令進行安裝:# easy_install pip  # pip install MySQL-python

九、測試Python基礎模塊是否正常運行:

# python

>>> import MySQLdb

>>> exit()

image.png

十、下載Lepus採集器:http://www.lepus.cc/soft/index

十一、測試MySQL驅動是否正常運行:

# cd Lepus_v3.8_beta/python

# python test_driver_mysql.py

image.png

十二、建立監控數據庫,並授予相關用戶指定權限:

# /opt/lampp/bin/mysql -uroot -p

MariaDB [(none)]> create database lepus default character set utf8;

MariaDB [(none)]> grant all on lepus.* to 'lepus_user'@'192.168.1.%' identified by '123456';

MariaDB [(none)]> flush privileges;

image.png

備註:已配置系統環境變量,可直接使用命令# mysql -uroot -p

1三、導入表結構和表數據文件:

# cd Lepus_v3.8_beta/sql

# mysql -uroot -p lepus < lepus_table.sql

# mysql -uroot -p lepus < lepus_data.sql

1四、安裝Lepus採集器:

# cd Lepus_v3.8_beta/python

# chmod +x install.sh

# ./install.sh

image.png

備註:Lepus默認安裝在/usr/local/lepus目錄下,可經過install.sh腳本修改其默認安裝路徑

1五、授予腳本文件執行權限:

# cd /usr/local/lepus

# chmod +x *.sh

# chmod +x *.py

1六、修改監控機MySQL數據庫鏈接信息:

# vim /usr/local/lepus/etc/config.ini

image.png

1七、啓動Lepus採集進程:

# lepus start

image.png

# lepus --help

image.png

# tail /usr/local/lepus/logs/lepus.log

image.png

1八、lepus_monitor腳本部署爲任務計劃:

# crontab -e

*/5 * * * * /usr/local/lepus/lepus_monitor >> /tmp/lepus_monitor.log

備註:該腳本能夠監控Lepus是否正常運行


5、配置Lepus Web管理平臺:

一、登陸Lepus Web管理平臺:

# mkdir -pv /opt/lampp/htdocs/lepus

# cd Lepus_v3.8_beta/php

# cp -rf * /opt/lampp/htdocs/lepus/

# vim /opt/lampp/htdocs/lepus/application/config/database.php

image.png

# /opt/lampp/lampp restart

image.png

輸入http://192.168.1.146/lepus,登陸Lepus Web管理平臺,默認的管理員帳號密碼是admin/Lepusadmin

image.png

image.png

二、修改admin帳號默認密碼:右上角admin --> 我的面板 --> 保存

image.png

image.png

三、配置監控項目、告警和郵件:配置中心 --> 全局設置 --> 保存

image.png

image.png

image.png

image.png

四、測試郵件模塊是否正常運行:

# cd /usr/local/lepus

# python test_send_mail.py

image.png

image.png

五、添加MySQL主機:

(1)master節點建立監控用戶,並授予指定權限:

mysql> create user 'lepus_monitor'@'192.168.1.%' identified by '123456';

mysql> grant all on *.* to 'lepus_monitor'@'192.168.1.%';

mysql> flush privileges;

(2)配置中心 --> MySQL --> 新增 --> 保存

image.png

image.png

image.png

(3)儀表盤:

image.png

六、配置主機監控:

(1)三個節點安裝SNMP服務:# yum -y install net-snmp net-snmp-utils

(2)三個節點部署SNMP服務:# vim /etc/snmp/snmpd.conf

a、註釋com2sec notConfigUser default public,新增:com2sec notConfigUser 192.168.1.146 lepus

b、取消註釋view all included .1 80

c、註釋access notConfigGroup "" any noauth exact systemview none none

   新增:access notConfigGroup "" any noauth exact all none none

(3)三個節點啓動SNMP服務:

# systemctl start snmpd.service

# systemctl enable snmpd.service

# systemctl status snmpd.service

# ss -tunlp | grep 161

(4)lepus節點執行命令:# snmpwalk -v 1 -c lepus 192.168.1.144  # snmpwalk -v 1 -c lepus 192.168.1.145

備註:獲取到信息表示SNMP服務正常運行

(5)配置中心 --> 操做系統 --> 新增 --> 保存

image.png

image.png

image.png

image.png

(6)lepus節點執行check_os.py腳本:

# cd /usr/local/lepus

# python check_os.py

image.png

(7)儀錶盤:

image.png

(8)主機監控 --> 健康監控

image.png

七、配置MySQL監控 --> 複製監控:

(1)masterslave節點分別執行操做:mysql> set global show_compatibility_56=on;

(2)lepus節點執行以下操做:

# cd /usr/local/lepus

# python check_mysql.py

會提示以下信息:

2019-07-19 17:01:35 [INFO] check mysql controller started.

2019-07-19 17:01:36 [WARNING] check mysql 192.168.1.144:3306 failure: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'information_schema.processlist.USER' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

2019-07-19 17:01:36 [WARNING] check mysql 192.168.1.144:3306 failure: sleep 3 seconds and check again.

(3)masterslave節點分別執行以下操做:

mysql> select @@sql_mode;

image.png

mysql> set @@global.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

備註:去除ONLY_FULL_GROUP_BY模式,退出後從新登陸

mysql> \q

mysql> select @@sql_mode;

image.png

(4)lepus節點執行以下操做:

# cd /usr/local/lepus

# python check_mysql.py

會提示以下信息:

2019-07-19 17:07:24 [INFO] check mysql controller started.

check_mysql.py:254: Warning: 'INFORMATION_SCHEMA.GLOBAL_VARIABLES' is deprecated and will be removed in a future release. Please use performance_schema.global_variables instead

  gtid_mode=cur.execute("select * from information_schema.global_variables where variable_name='gtid_mode';")

check_mysql.py:261: Warning: 'INFORMATION_SCHEMA.GLOBAL_VARIABLES' is deprecated and will be removed in a future release. Please use performance_schema.global_variables instead

  read_only=cur.execute("select * from information_schema.global_variables where variable_name='read_only';")

check_mysql.py:220: Warning: 'INFORMATION_SCHEMA.GLOBAL_VARIABLES' is deprecated and will be removed in a future release. Please use performance_schema.global_variables instead

  gtid_mode=cur.execute("select * from information_schema.global_variables where variable_name='gtid_mode';")

check_mysql.py:227: Warning: 'INFORMATION_SCHEMA.GLOBAL_VARIABLES' is deprecated and will be removed in a future release. Please use performance_schema.global_variables instead

  read_only=cur.execute("select * from information_schema.global_variables where variable_name='read_only';")

2019-07-19 17:07:34 [INFO] check mysql controller finished.

(5)儀表盤:

image.png

(6)MySQL監控 --> 複製監控

image.png

八、配置MySQL監控 --> 慢查詢分析:

Lepus的慢查詢分析平臺是獨立於監控系統的模塊,該功能須要使用percona-toolkit工具來採集和記錄慢查詢日誌,並須要部署一個shell腳原本進行數據採集,該腳本會自動開啓數據庫的慢查詢日誌,並對慢查詢日誌進行按小時的切割操做,收集慢查詢日誌的數據到監控機數據庫,以後就能夠經過Lepus系統分析慢查詢。

(1)masterslave節點分別執行以下操做:

a、安裝依賴軟件包:# yum -y install perl-IO-Socket-SSL perl-DBI perl-DBD-MySQL perl-Time-HiRes

b、配置percona源:# yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

c、安裝percona-toolkit工具:# yum -y install percona-toolkit

(2)lepus節點執行以下操做:

a、授予lepus_slowquery.sh慢查詢分析腳本可執行權限:

# chmod +x /usr/local/lepus/client/mysql/lepus_slowquery.sh

b、修改lepus_slowquery.sh腳本中的配置信息:# vim /usr/local/lepus/client/mysql/lepus_slowquery.sh

lepus_db_host="192.168.1.146"

lepus_db_user="lepus_user"

lepus_db_password="123456"

mysql_client="/usr/bin/mysql"

mysql_host="192.168.1.144"

mysql_user="lepus_monitor"

mysql_password="123456"

slowquery_dir="/var/lib/mysql/"

lepus_server_id=1

備註:lepus_server_id的值來源於配置中心 --> MySQL列表中的ID

image.png

c、改變lepus_slowquery.sh腳本的文件格式爲unix,在vim中執行:set fileformat=unix

d、lepus_slowquery.sh腳本分別發送至masterslave節點的/usr/local/sbin目錄下:

# scp -p /usr/local/lepus/client/mysql/lepus_slowquery.sh root@192.168.1.144:/usr/local/sbin

# scp -p /usr/local/lepus/client/mysql/lepus_slowquery.sh root@192.168.1.145:/usr/local/sbin

(3)slave節點修改lepus_slowquery.sh腳本:# vim /usr/local/sbin/lepus_slowquery.sh

mysql_host="192.168.1.145"

lepus_server_id=2

(4)masterslave節點分別將/usr/loca/sbin/lepus_slowquery.sh腳本加入任務計劃:

# crontab -e

*/10 * * * * /usr/local/sbin/lepus_slowquery.sh &> /dev/null

(5)masterslave節點分別測試MySQL慢查詢:

a、查看變量slow_query_log的值:mysql> show global variables like 'slow_query_log';

image.png

備註:慢查詢日誌已啓用

b、查看變量long_query_time的值:mysql> show global variables like 'long_query_time';

image.png

備註:超過1秒的查詢將被斷定爲慢查詢

c、執行測試查詢:

mysql> use db;

mysql> select sleep(10);

備註:

Ø   會在masterslave節點的/var/lib/mysql目錄中生成相似slowquery_2019071917.log的日誌文件

Ø   pt-query-digest命令執行的日誌保存在/tmp/lepus_slowquery.log日誌文件中

(6)MySQL監控 --> 慢查詢分析

image.png

九、經常使用MySQL監控界面展現:

(1)儀表盤:

image.png

image.png

(2)配置中心 --> MySQL

image.png

(3)配置中心 --> 操做系統

image.png

(4)MySQL監控 --> 健康監控

image.png

(5)MySQL監控 --> 資源監控

image.png

(6)MySQL監控 --> 鍵緩存監控

image.png

(7)MySQL監控 --> InnoDB監控

image.png

(8)MySQL監控 --> 複製監控

image.png

(9)MySQL監控 --> 慢查詢分析

image.png

(10)MySQL監控 --> AWR報告

image.png

image.png

(11)主機監控 --> 健康監控

image.png

image.png

(12)主機監控 --> 磁盤

image.png

image.png

(13)主機監控 --> 磁盤IO

image.png

相關文章
相關標籤/搜索