CentOS 7.6基于Xampp集成环境安装部署Lepus监控MySQL 5.7

一、Lepus相关概念:

1、Lepus简介:

Lepus(天兔)是一套由Python+PHP开发的数据库企业级监控系统。监控系统由Python实现多进程数据采集和告警,PHP实现Web展示和管理。企业通过Lepus可以对数据库的实时健康和各种性能指标进行全方位的监控。目前已支持MySQLOracleSQLServerMongoDBRedis数据库的全面监控。Lepus可以在数据库出现故障或潜在性能问题时,根据用户设置及时将数据库的异常进行报警,通知数据库管理员以进行处理和优化,帮助企业解决数据库性能监控问题,及时发现性能和瓶颈,避免由数据库潜在问题造成的直接经济损失。Lepus能够查看各种实时性能状态指标,并且对健康、性能数据进行统计分析,从运维者到决策者多个层面的视角查看相关报表,帮助决策者对未来数据库容量进行更好的规划,从而降低了硬件成本。

2、Lepus目前主要有如下功能和特性:

(1)无需Agent,远程监视云中数据库

(2)Web直观的管理和监视数据库

(3)实时MySQLOracleSQLServerMongoDBRedis健康监控和告警

(4)实时MySQL缓存、OracleSQLServerMongoDB索引、Redis性能监控

(5)实时MySQL复制监视和告警、资源监视和分析、InnoDB IO性能监控、表空间增长趋势分析、慢查询在线分析

(6)实时Oracle表空间使用监控

(7)实时MongoDB内存使用监控

(8)实时OS主机CPU、内存、磁盘、网络、IO监控

3、Lepus相关网站:

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

(2)在线手册:http://www.lepus.cc/manual/index

备注:目前最新版本为3.8 Beta,更新时间为2016-05-03


二、准备工作(3个节点都需要执行如下操作):

1、演示环境:

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

2、关闭SELinuxfirewalld

3、配置epel

4、配置节点时间同步

5、配置主机名

6、配置/etc/hosts文件:

# vim /etc/hosts

192.168.1.144 node1

192.168.1.145 node2

192.168.1.146 node3

7、下载MySQL 5.7软件包,https://dev.mysql.com/downloads/mysql/5.7.html#downloads


三、安装配置MySQL GTID主从复制(如未特殊说明,在masterslave两个节点中执行如下操作):

1、卸载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

2、如果之前安装过MySQL,先卸载:# rpm -qa | grep -i mysql

3、如果存在/etc/my.cnf配置文件,先删除:# rm -rf /etc/my.cnf

4、将软件包上传至主机/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

5、安装MySQL软件包:# yum -y localinstall *.rpm

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

备注:初始化之前确保/var/lib/mysql目录为空

7、配置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中。

8、启动MySQL服务:

# systemctl start mysqld.service

# ss -tunlp | grep mysqld

# systemctl enable mysqld.service

# systemctl status mysqld.service

9、查看root@localhost用户的初始密码:# grep password /var/log/mysqld.log

10、配置MySQL安全向导:# mysql_secure_installation

11、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文件中的内容一致

12、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文件

13、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线程中断。

14、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

15、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

16、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

17、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


四、安装启动Lepus(如未特殊说明,在lepus节点中执行如下操作):

1、安装依赖软件包:# yum -y install openssl-devel python-devel xterm libffi-devel python-setuptools zlib-devel

2、安装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

3、启动Xampp服务:# /opt/lampp/lampp start

image.png

# /opt/lampp/lampp --help

image.png

4、配置Xampp安全向导:# /opt/lampp/lampp security

image.png

5、测试Xampp集成环境是否正常运行:浏览器中输入192.168.1.146

image.png

6、配置系统环境变量:

# 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

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

image.png

特别说明:Lepus暂不支持Python 3.x版本

8、安装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

9、测试Python基础模块是否正常运行:

# python

>>> import MySQLdb

>>> exit()

image.png

10、下载Lepus采集器:http://www.lepus.cc/soft/index

11、测试MySQL驱动是否正常运行:

# cd Lepus_v3.8_beta/python

# python test_driver_mysql.py

image.png

12、创建监控数据库,并授予相关用户指定权限:

# /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

13、导入表结构和表数据文件:

# cd Lepus_v3.8_beta/sql

# mysql -uroot -p lepus < lepus_table.sql

# mysql -uroot -p lepus < lepus_data.sql

14、安装Lepus采集器:

# cd Lepus_v3.8_beta/python

# chmod +x install.sh

# ./install.sh

image.png

备注:Lepus默认安装在/usr/local/lepus目录下,可通过install.sh脚本修改其默认安装路径

15、授予脚本文件执行权限:

# cd /usr/local/lepus

# chmod +x *.sh

# chmod +x *.py

16、修改监控机MySQL数据库连接信息:

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

image.png

17、启动Lepus采集进程:

# lepus start

image.png

# lepus --help

image.png

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

image.png

18、lepus_monitor脚本部署为任务计划:

# crontab -e

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

备注:该脚本可以监控Lepus是否正常运行


五、配置Lepus Web管理平台:

1、登录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

2、修改admin账号默认密码:右上角admin --> 个人面板 --> 保存

image.png

image.png

3、配置监控项目、告警和邮件:配置中心 --> 全局设置 --> 保存

image.png

image.png

image.png

image.png

4、测试邮件模块是否正常运行:

# cd /usr/local/lepus

# python test_send_mail.py

image.png

image.png

5、添加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

6、配置主机监控:

(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

7、配置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

8、配置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 [email protected]:/usr/local/sbin

# scp -p /usr/local/lepus/client/mysql/lepus_slowquery.sh [email protected]:/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

9、常用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


猜你喜欢

转载自blog.51cto.com/qiuyue/2422259