Lepus(天兔)监控数据库

寵の児 提交于 2020-03-01 00:30:53

该博文是参考Lepus官方文档撰写的,官方文档蛮详细的,但是有些下载链接失效(这个开源产品的维护者比较忙,所以更新不太及时),也为了以自己的写作风格记录下lepus的使用方法,所以这篇博文就出现了。

Lepus系统特性如下:

  • 无需Agent,远程监视云中数据库
  • WEB直观的管理和监视数据库
  • 实时MySQL健康监视和告警
  • 实时MySQL复制监视和告警
  • 实时MySQL资源监视和分析
  • 实时MySQL缓存等性能监视
  • 实时InnoDB IO性能监控
  • MySQL表空间增长趋势分析
  • 可视化MySQL慢查询在线分析
  • MySQL慢查询自动推送功能
  • MySQL AWR在线性能分析
  • 实时Oracle健康监控和报警
  • 实时Oracle表空间使用监控
  • 实时Oracle性能监控
  • 实时MongoDB健康监控和报警
  • 实时MongoDB索引性能监控
  • 实时MongoDB内存使用监控
  • 实时Redis健康监控和报警
  • 实时Redis性能监控
  • 实时SQLServer健康监控和报警
  • 实时OS主机CPU/内存/磁盘/网络/IO监控
  • 可视化告警系统,邮件发送告警,短信接口支持
  • 严格的权限认证系统
  • 丰富的健康性能分析图表
  • 多维的对比和性能分析

一、环境准备

OS IP 主机名 角色
Cent os 7.5 192.168.20.2 mysql 被监控端
Cent os 7.5 192.168.20.3 redis 被监控端
Cent os 7.5 192.168.20.4 lepus 监控端

部署Lepus需要的核心如下:

  • MySQL5.1及以上(必须,用来存储监控系统采集的数据)。
  • Apache 2.2及以上 (必须,WEB服务器运行服务器)。
  • PHP 5.3以上 (必须,提供WEB界面支持,不支持PHP7)。
  • Python2 (必须,推荐2.6及以上版本,执行数据采集和报警任务,不支持Python3)。
  • Python连接和监控数据库的相关驱动模块包:
    • MySQLdb for python (Python连接MySQl的接口,用于监控MySQL,此模块必须安装)。
    • cx_oracle for python (Python连接Oracle的接口,非必须,如果需要监控oracle此模块必须安装)。
    • Pymongo for python (Python连接MongoDB的接口,非必须,如果需要监控MongoDB此模块必须安装)。
    • redis-py for python (Python连接Redis的接口,非必须,如果需要监控Redis此模块必须安装)。

注:由于lepus官方文档最后一次更新是在17年,所以官方提供的很多下载链接失效了,我这里下载了所涉及到的所有软件包,版本与官方所用版本完全一致,有需要的话,可以通过我的网盘链接下载,提取码:vofv 。

注:PHP和Python都是跨平台的语言,所以理论上系统应该可以支持在不同的平台上运行。但是由于时间和精力以及资源有限,目前天兔系统只测试完善了Centos/RedHat系统的支持。官方目前提供的技术支持也是只针对于Centos/RedHat系统,其他系统暂不支持技术服务。

二、部署LAMP环境

lepus需要lamp环境的支持,配置lamp环境的方式有很多中,官方采用的是集成环境包Xampp进行部署的,所以这里就以官方为准。

Xampp相关链接:

官方推荐xampp版本:xampp-linux-x64-1.8.2-5-installer.run。

注意:接下来的所有操作,没有特殊声明的话,都是在lepus主机上进行的。

#执行安装脚本
[root@lepus src]# chmod +x xampp-linux-x64-1.8.2-5-installer.run 
[root@lepus src]# ./xampp-linux-x64-1.8.2-5-installer.run 
#执行后,一路默认回车即可。

出现如下所示,表示安装成功(lampp默认安装在/opt目录下):

1、开启远程访问xampp

部署成功后,就在监听80端口,但是默认只能在本地访问,如需开启远程访问,需进行以下操作:

1)编辑httpd-xampp.conf文件:

[root@lepus ~]# vim /opt/lampp/etc/extra/httpd-xampp.conf
#更改如下:
<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
#        Require local      #注释掉该行
       ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>
#设置命令环境变量
[root@lepus bin]# vim /etc/profile  #在末尾添加以下内容
export PATH=/opt/lampp/bin:${PATH}
[root@lepus bin]# source /etc/profile
#重启服务,使更改生效
[root@lepus ~]# httpd -k stop
[root@lepus ~]# httpd -k start

浏览器访问lepus服务器,即可看到如下页面,表示lampp运行成功:

三、安装python基础模块

自行准备python环境,一般Centos系统自带python环境,python环境要求在2.6以上,但不支持python3。

以下几个python链接数据库的驱动包,选择性的安装即可(要监控哪种类型的数据库,就安装哪个包)。

1、安装MySQLdb for python (必须安装)

MySQLdb为Python连接和操作MySQL的类库,如果您准备使用lepus系统监控MySQL数据库,那么该模块必须安装。

[root@lepus ~]# yum -y install python-devel
[root@lepus ~]# unzip MySQL-python-1.2.5.zip
[root@lepus bin]# which mysql_config   #查看mysql_config命令的绝对路径
/opt/lampp/bin/mysql_config
[root@lepus ~]# cd MySQL-python-1.2.5/
[root@lepus MySQL-python-1.2.5]# vim site.cfg  #修改以下
mysql_config = /opt/lampp/bin/mysql_config   #指定mysql_config命令的绝对路径
#进行安装
[root@lepus MySQL-python-1.2.5]# python setup.py build
[root@lepus MySQL-python-1.2.5]# python setup.py install

2、安装redis相关驱动(如果需要监控Redis则必须安装)

[root@lepus ~]# tar zxf redis-py-2.10.3.tar.gz 
[root@lepus ~]# cd redis-py-2.10.3/
[root@lepus redis-py-2.10.3]# python setup.py install

如果需要监控其他数据库,参考官方文档去安装,某些软件包,在我博文的开头网盘链接中也有提供。

四、安装Lepus采集器

注:以下所有操作都是在Lepus主机上进行,涉及到数据库授权等一些操作,也是在Lepus上进行,不用想这台主机没有装MySQL,lampp软件包已经集成了MySQL。

1、下载软件包

[root@lepus ~]# cd /usr/local
[root@lepus local]# git clone https://github.com/ruzuojun/lepus.git

如果git clone命令报错如下:

正克隆到 'lepus'...
fatal: unable to access 'https://github.com/ruzuojun/lepus.git/': SSL certificate problem: unable to get local issuer certificate

请执行下面的指令即可:

[root@monitor local]# git config --global http.sslVerify false

2、对可执行文件授权,并创建软链接

[root@lepus lepus]# pwd
/usr/local/lepus
[root@lepus lepus]# chmod +x lepus*
[root@lepus lepus]# ln -sf /usr/local/lepus/lepus /usr/local/bin/
[root@lepus lepus]# ln -sf /usr/local/lepus/lepus_monitor /usr/local/bin/

3、在监控机创建数据库并授权

[root@lepus lepus]# ln -sf /opt/lampp/lampp /usr/local/bin
[root@lepus lepus]# lampp start           #启动lamp环境
[root@lepus lepus]# mysql -uroot   #默认数据库无密码
#创建相关库及用户
mysql> create database lepus default character set utf8;
mysql> grant select,insert,update,delete,create on lepus.* to 'lepus_user'@'localhost' identified by '123.com';
mysql> flush privileges;

4、导入SQL目录中的初始化SQL文件(表结构和数据文件)

[root@lepus lepus]# pwd
/usr/local/lepus
[root@lepus lepus]# mysql -uroot lepus < sql/lepus_table.sql
[root@lepus lepus]# mysql -uroot lepus < sql/lepus_data.sql 

5、修改配置文件

[root@lepus lepus]# pwd
/usr/local/lepus
[root@lepus lepus]# cat etc/config.ini   #修改配置文件如下
###监控机MySQL数据库连接地址###
[monitor_server]
host="127.0.0.1"
port=3306
user="lepus_user"
passwd="123.com"
dbname="lepus"
#注:上面指定的数据库信息是lepus主机用来存储采集到的信息的,并不是被监控端

6、启动lepus

[root@lepus lepus]# lepus start

如果报错如下:

[root@lepus lepus]# lepus start
/usr/local/bin/lepus: 行 16: 72095 段错误               (吐核)nohup python lepus.py &>logs/lepus.log
lepus server start fail!

则执行以下指令即可:

[root@lepus lepus]# ln -s /opt/lampp/lib/* /usr/lib64/
[root@lepus lepus]# lepus start    #再次启动即可成功
lepus server start success!

7、测试各个数据库驱动是否正常运行(非必须)

[root@lepus lepus]# pwd
/usr/local/lepus
[root@lepus lepus]# python test_driver_mysql.py 
MySQL python drivier is ok!
[root@lepus lepus]# python test_driver_redis.py 
Redis python drivier is ok!

五、安装web管理台

[root@lepus lepus]# vim /opt/lampp/etc/httpd.conf    #修改主配置文件
<Directory />
    AllowOverride none
    Require all granted   # 214行左右,将原本的denied修改为granted
</Directory>
             ........  #省略部分内容
Include etc/extra/httpd-vhosts.conf   # 488行左右,开启虚拟主机
[root@lepus lepus]# vim /opt/lampp/etc/extra/httpd-vhosts.conf   #修改虚拟主机配置文件如下
<VirtualHost *:80>
    ServerAdmin demo.lepus.cc
    DocumentRoot "/usr/local/lepus/web"
    ServerName demo.lepus.cc
    ServerAlias demo.lepus.cc
    ErrorLog "logs/demo.lepus.cc-error_log"
    CustomLog "logs/demo.lepus.cc-access_log" common
</VirtualHost>
[root@lepus lepus]# httpd -k restart  #重启httpd服务,使更改生效
#修改php连接监控服务器的数据库信息
[root@lepus lepus]# vim /usr/local/lepus/web/application/config/database.php
$db['default']['hostname'] = '127.0.0.1';
$db['default']['port']     = '3306';
$db['default']['username'] = 'lepus_user';
$db['default']['password'] = '123.com';
$db['default']['database'] = 'lepus';
$db['default']['dbdriver'] = 'mysql';

六、web界面配置

登录到web界面进行登录,默认管理员账号密码为:admin/Lepusadmin,登录后建议修改管理员密码并增加普通用户。

1、登录

2、设置全局配置(设置监控)

全局配置设置比较简单,依次点击如下即可设置,最后点击保存即可。


3、设置告警

进入配置中心-全局设置,在告警标签页面里面可以看到告警设置。

在这里,可以设置是否开启告警,是否发送邮件,是否发送短信等等功能。

告警最大次数和告警休眠时间两个参数用于防止告警泛滥而设置,其含义是当连续告警次数达到告警最大次数则会停止发送告警通知,等侯时间超过告警休眠时间后如果告警未解除,则会继续发送告警。

如下(短信告警这里就不设置了):

4、配置邮件报警

只有当邮件服务器配置成功,才可以正常发送邮件报警。我这里使用qq邮箱为例,其他邮箱服务大同小异。

进入配置中心-全局设置,在邮件标签里面,我们可以看到如下的邮件服务器设置:


注:生成授权码不是这篇博文要说的,如果不会,自行百度解决吧。

若要配置短信报警,请参考官方文档,同时在全局配置中还需要开启短信报警。

5、添加MySQL数据库实例

注:Lepus支持MySQL,Oracle,MongoDB,Redis,SQLServer等数据库的监控。

监控MySQL数据库,无需在被监控端安装任何agent,只需创建一个有相应权限的用户即可。

1)在被监控端创建授权用户

这个用户是要监控哪台主机就在哪台主机上创建,我这里是192.168.20.2这台主机

mysql> grant select,process,super on *.* to 'lepus_monitor'@'192.168.20.%' identified by '123.com';
mysql> flush privileges;

2)web界面添加MySQL监控数据库


保存后,即可看到新增的MySQL实例:


我们可以通过观察日志来观察主机是否添加成功。在没有任何主机的时候,log里面会输出check mysql: not found any servers信息:

[root@MyCloudServer lepus]# tail -f logs/lepus.log 
2017-04-27 16:45:55 [INFO] check mysql controller started.
2017-04-27 16:45:55 [WARNING] check mysql: not found any servers
2017-04-27 16:45:55 [INFO] check mysql controller finished.

当添加主机后,我们可以看到上面的提示消失了,这种状态说明Lepus采集进程已经发现了我们添加的主机:

2017-04-27 16:47:55 [INFO] check mysql controller started.
2017-04-27 16:48:05 [INFO] check mysql controller finished.
2017-04-27 16:48:44 [INFO] alarm controller started.
2017-04-27 16:48:44 [INFO] alarm controller finished.

最后我们可以在MySQL监控菜单里发现我们添加的主机被监控了。
点击如下,可以看到相应的监控项详细信息:

6、添加Redis监控实例

1)修改redis相关配置

[root@redis ~]# vim /etc/redis.conf   #修改配置文件如下
bind 0.0.0.0     #监听所有地址
requirepass 123.com    #设置密码
[root@redis ~]# systemctl restart redis   #重启生效

2)web界面配置如下:


添加redis主机

按常理来说,此时应该已经采集到数据的,但是我测试了一下,数据并没有采集到,搜索一番,得到以下解决办法:

[root@lepus lepus]# pwd
/usr/local/lepus
[root@lepus lepus]# python check_redis.py    #需要手动执行一下这个测试脚本
2020-02-29 21:16:06 [INFO] check redis controller started.
2020-02-29 21:16:07 [INFO] check redis controller finished.

最后数据采集成功:

七、测试邮件报警功能

由于在配置时,都是把链接数的阈值调的比较低,所以只需要多几个客户端去登录MySQL和redis数据库,指定的邮件收件人就可以收到如下邮件了:

MySQL的报警信息如下:

redis的报警信息如下:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!