lepus天兔數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng)搭建記錄

一、開場(chǎng)白

去年的鍋,今年才接。時(shí)間都耗在了各種業(yè)務(wù)測(cè)試上,上周剛剛把鍋甩了,趕緊把以前沒完成的事做完。

二、lepus簡(jiǎn)介

簡(jiǎn)潔、直觀、強(qiáng)大的開源數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng),MySQL/Oracle/MongoDB/Redis一站式性能監(jiān)控,讓數(shù)據(jù)庫(kù)監(jiān)控更簡(jiǎn)單。沒有memcached。
官網(wǎng):http://www.lepus.cc/
QQ群:149648217
搭建完成后是這樣的

三、lepus3.7搭建

3.8版本已經(jīng)發(fā)布,這里用的是3.7,文末照舊給出所有相關(guān)軟件下載地址。操作系統(tǒng)CentOS6.4 64位,自帶python2.6.6。

依賴軟件

1.MySQL 5.0及以上(必須,用來存儲(chǔ)監(jiān)控系統(tǒng)采集的數(shù)據(jù))
2.Apache 2.2及以上 (必須,WEB服務(wù)器運(yùn)行服務(wù)器)
3.PHP 5.3以上 (必須,提供WEB界面支持)
4.Python2 (必須,推薦2.6及以上版本,執(zhí)行數(shù)據(jù)采集和報(bào)警任務(wù),不支持Python3)
5.Python連接和監(jiān)控?cái)?shù)據(jù)庫(kù)的相關(guān)驅(qū)動(dòng)模塊包:
MySQLdb for python (Python連接MySQl的接口,用于監(jiān)控MySQL,此模塊必須安裝)
cx_oracle for python (Python連接Oracle的接口,非必須,如果需要監(jiān)控oracle此模塊必須安裝)
Pymongo for python (Python連接MongoDB的接口,非必須,如果需要監(jiān)控MongoDB此模塊必須安裝 )
redis-py for python (Python連接Redis的接口,非必須,如果需要監(jiān)控Redis此模塊必須安裝)

安裝步驟

1.xampp安裝

上傳安裝文件并添加+x執(zhí)行權(quán)限,執(zhí)行安裝

./xampp-linux-x64-5.5.24-0-installer.run

2.安裝各數(shù)據(jù)庫(kù)python驅(qū)動(dòng)

安裝前準(zhǔn)備:

yum -y install rpm-build gcc-c++ mysql-devel python-devel

各驅(qū)動(dòng)名稱:
Mysql:MySQLdb
Redis:redis
Mongodb:pymongo

安裝以上三個(gè):

pip install pymongo redis mysql-python

安裝oracle驅(qū)動(dòng):
Oracle:cx_Oracle
參考網(wǎng)址:
http://blog.csdn.net/u011666720/article/details/41350897

需要先配置oracle客戶端:
下載地址:
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
下載
instantclient-basic-linux.x64-12.2.0.1.0.zip
instantclient-sdk-linux.x64-12.2.0.1.0.zip

分別解壓后:

yum install unzip -y
unzip ***********
cp -R instantclient_12_2 /opt/

配置環(huán)境變量:

vi /etc/profile
#在文件末添加:
export ORACLE_HOME=/opt/instantclient_12_2/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

確保文件生效

source /etc/profile

創(chuàng)建軟鏈接

cd /opt/instantclient_12_2/
ln -s libclntsh.so.12.1 libclntsh.so

使用pip安裝

pip install cx_Oracle

3.創(chuàng)建并配置lepus數(shù)據(jù)庫(kù)

解壓安裝包:

unzip  lepus_v3.7.zip

啟動(dòng)lampp

/opt/lampp/lampp start

進(jìn)入mysql命令行,默認(rèn)密碼為空(直接回車)

/opt/lampp/bin/mysql –uroot –p 

創(chuàng)建lepus數(shù)據(jù)庫(kù)、賬號(hào)、修改密碼以及訪問host

use mysql
create database lepus default character set utf8;
GRANT ALL privileges ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456';
GRANT ALL privileges ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL privileges ON *.* TO 'lepus'@'localhost' IDENTIFIED BY '123456';
GRANT ALL privileges ON *.* TO 'lepus'@'%' IDENTIFIED BY '123456';
flush privileges;

導(dǎo)入初始化數(shù)據(jù):

use lepus
source xxx/xxx/lepus_table.sql 
source xxx/xxx/lepus_data.sql 

4.安裝lepus程序

切換到安裝包python目錄下執(zhí)行安裝:

cd lepus_v3.7/python
./install.sh

修改配置文件

vi  /usr/local/lepus/etc/config.ini
[monitor_server]
host="127.0.0.1"  #這個(gè)必須是127.0.0.1
port=3306
user="lepus"#數(shù)據(jù)庫(kù)用戶名,我上面設(shè)置的是lepus
passwd="123456"#數(shù)據(jù)庫(kù)密碼,我上面設(shè)置的密碼是123456
dbname="lepus"

lepus常用命令:

lepus start/stop/status

查看啟動(dòng)日志:

tail -f /usr/local/lepus/nohup.out

5.安裝lepus web

創(chuàng)建文件夾

mkdir /opt/lampp/htdocs/lepus

拷貝安裝文件

cp -rf lepus_v3.7/php/* /opt/lampp/htdocs/lepus

編輯配置文件

vi  /opt/lampp/htdocs/lepus/application/config/database.php

$db['default']['hostname'] = '192.168.200.136';
$db['default']['port']     = '3306';
$db['default']['username'] = 'lepus';
$db['default']['password'] = '123456';
$db['default']['database'] = 'lepus';
$db['default']['dbdriver'] = 'mysql';

重啟xampp

/opt/lampp/lampp restart

啟動(dòng)lepus

lepus start

訪問http://192.168.200.136/lepus (記得關(guān)防火墻或者設(shè)置防火墻策略)
默認(rèn)賬號(hào)密碼admin/Lepusadmin

四、監(jiān)控mysql

1.添加mysql

2.配置慢查詢

被監(jiān)控機(jī)主要有以下幾個(gè)步驟:mysql基礎(chǔ)配置--依賴軟件安裝---腳本配置--定時(shí)任務(wù)。

mysql基礎(chǔ)配置:

在mysql命令行中執(zhí)行以下命令:

set global slow_query_log=on;
set global long_query_time=1;#設(shè)置記錄查詢超過多長(zhǎng)時(shí)間的sql,根據(jù)自己情況定
set global slow_query_log_file='/opt/lampp/var/mysql/';#設(shè)置mysql慢查詢?nèi)罩韭窂?

斷開當(dāng)前連接然后重新連接進(jìn)入命令行查詢(緩存):

show variables like '%slow%';
show variables like '%long_query_time%';

依賴軟件安裝:

# yum -y install perl-IO-Socket-SSL
# yum -y install perl-DBI
# yum -y install perl-DBD-MySQL
# yum –y install perl-Time-HiRes
#yum –y install perl-Digest-MD5

或者:

yum install perl* -y

上傳percona-toolkit.rpm并安裝

rpm -ivh percona-toolkit.rpm

腳本配置:

vi /usr/local/lepus/client/mysql/lepus_slowquery.sh 

#config lepus database server  lepus服務(wù)器
lepus_db_host="192.168.200.136"
lepus_db_port=3306
lepus_db_user="lepus"
lepus_db_password="123456"
lepus_db_database="lepus"

#config mysql server  被監(jiān)控的mysql
mysql_client="/opt/lampp/bin/mysql"
mysql_host="192.168.200.136"
mysql_port=3306
mysql_user="lepus"
mysql_password="123456"

#config slowqury  慢查詢?nèi)罩?slowquery_dir="/opt/lampp/var/mysql/"
slowquery_long_time=1
slowquery_file=`$mysql_client -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password  -e "show variables like 'slow_query_log_file'"|grep log|awk '{print $2}'`
pt_query_digest="/usr/bin/pt-query-digest"

#config server_id  與web上配置中心,mysql列表中的ID對(duì)應(yīng)
lepus_server_id=1

手動(dòng)運(yùn)行查看是否正常運(yùn)行:

sh /usr/local/lepus/client/mysql/lepus_slowquery.sh 

定時(shí)任務(wù):

查看所有定時(shí)任務(wù):

crontab -l

添加定時(shí)任務(wù):

crontab -e 
*/5 * * * * sh /usr/local/sbin/lepus_slowquery.sh > /dev/null 2>&1

3.配置表空間分析

vi /usr/local/lepus/lepus.py

在monitor_mysql中添加(注意python代碼格式):

job = Process(target = job_run, args = ('check_mysql_bigtable',int(frequency_monitor)*120)
joblist.append(job)
job.start()

修改腳本(非必須)

vi /usr/local/lepus/check_mysql_bigtable.py
bigtable=curs.execute("SELECT table_schema as 'DB',table_name as 'TABLE',CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 ), 2), '') 'TOTAL' , table_comment as COMMENT FROM information_schema.TABLES group by table_name having total > 5 ORDER BY data_length + index_length DESC LIMIT 10;");

以上修改內(nèi)容表示提取表大小大于5M并且是排名前10的表。

pip install functions

將腳本放到crontab中執(zhí)行,定期采集數(shù)據(jù)

crontab -e
*/5 * * * * python /usr/local/lepus/check_mysql_bigtable.py

4.配置表復(fù)制監(jiān)控

主從mysql實(shí)例添加到監(jiān)控后,等一會(huì)時(shí)間,監(jiān)控就會(huì)有數(shù)據(jù)產(chǎn)生。
搜索選項(xiàng)的“角色”框中選擇SLAVE角色,搜索后就會(huì)出現(xiàn)相應(yīng)的數(shù)據(jù)。

五、監(jiān)控mongodb

確保驅(qū)動(dòng)已安裝:

python lepus_v3.7/python/test_connect_mongodb.py

試運(yùn)行check_mongodb.py :

cd /usr/local/lepus/
python check_mongodb.py  

運(yùn)行成功則能正常使用。
我遇到的問題:


Pymongo安裝了太新的版本,重新安裝pymongo2.4再次運(yùn)行(不知道lepus3.8有無更新)

這次真看不懂了,留個(gè)鍋,以后再看。

六、監(jiān)控redis

輸入ip端口即可。

七、監(jiān)控OS

安裝組件:

yum install net-snmp*

編輯配置

vi /etc/snmp/snmpd.conf
#41行 將default改為監(jiān)控服務(wù)器ip; 將public改成lepus (備注: lepus是您在天兔配置文件里配置的通用實(shí)體,如果您配置的實(shí)體是其他名稱,這里要做相應(yīng)的修改)示例如下:
com2sec notConfigUser  10.0.10.10      lepus 

#62行 將systemview 改為all,供所有snmp訪問權(quán)限 
access  notConfigGroup ""      any       noauth    exact  all none none 

#85行 將#注釋符號(hào)去掉 
view all    included  .1                               80 

嘗試啟動(dòng):

/etc/init.d/snmpd start 

驗(yàn)證是否啟動(dòng)成功:

ps -ef | grep 'snmpd' 

修改日志級(jí)別

vi /etc/init.d/snmpd
#OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a" 
OPTIONS="-LS 4 d -p /var/run/snmpd.pid -a" 

重啟服務(wù)

/etc/init.d/snmpd restart

八、監(jiān)控oracle

確保驅(qū)動(dòng)已安裝:

python lepus_v3.7/python/test_driver_oracle.py 

添加實(shí)例,果失敗,查看日志:
ORA-00942: table or view does not exist
查到可能有如下原因:


使用數(shù)據(jù)庫(kù)管理員賬號(hào)再次添加實(shí)例重試成功。
安利一波我的圖


恩 大概就是這樣。

九、其它亂起八糟的記錄

python2.6升級(jí)python2.7

參考:
http://blog.csdn.net/xh16319/article/details/39276053

wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 --no-check-certificate
tar -jxvf Python-2.7.3.tar.bz2
cd Python-2.7.3
mkdir /usr/local/python27
./configure --prefix=/usr/local/python27
make
make install
mv /usr/bin/python /usr/bin/python_old
ln -s /usr/local/python27/bin/python2.7 /usr/bin/python 

python -V命令驗(yàn)證

安裝pip

wget https://bootstrap.pypa.io/get-pip.py 
python get-pip.py
#curl https://bootstrap.pypa.io/get-pip.py | python 

yum源更換

卸載原來的yum,安裝新的然后配置源為163,參考地址:
http://blog.csdn.net/h249059945/article/details/11636107

升級(jí)python為2.7后yum無法正常使用,yum支持的是python2.6版本

vi /usr/bin/yum

將第一行python修改為python2或python2.6

奇葩問題一個(gè):使用yum的時(shí)候提示:

GPG key retrieval failed: [Errno 14] PYCURL ERROR 56 - "Failure when receiving data from the peer"

解決辦法:

rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

mongodb安裝

參考文檔:
http://www.cnblogs.com/savokiss/p/6410433.html
http://blog.csdn.net/sikichan/article/details/53738449

1、下載mongodb安裝包,
2、在/usr/local目錄下創(chuàng)建一個(gè)mongodb文件夾,然后把mongodb的安裝包解壓到mongodb文件中
3、創(chuàng)建一個(gè)存放數(shù)據(jù)的文件夾data和日志文件logs

cd /usr/local/mongodb
mkdir data
touch mongodb.logs

4、啟動(dòng)和關(guān)閉mongodb

/usr/local/mongodb/bin/mongod -dbpath=/usr/local/mongodb/data/ -logpath=/usr/local/mongodb/mongodb.logs -logappend -port=27017 -fork
/usr/local/mongodb/bin/mongod  --shutdown --dbpath /usr/local/mongodb/data/

注:參考文章使用的是配置文件啟動(dòng)。

5.創(chuàng)建管理員以及常用的操作

./mongo
use admin;
db.system.users.find();
show collections;
db.createUser({ user: "root",pwd: "123456",customData:{name:"root"},roles:[{ role: "userAdminAnyDatabase",db: "admin" }]})
db.createUser({user: "myUserAdmin",pwd: "abc123",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
db.auth('myUserAdmin','abc123');  //本地授權(quán)操作1 代表成功
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
db.system.users.remove({user:"myUserAdmin"});
db.dropUser('myUserAdmin')
db.dropUser('useradmin')
db.auth('admin','123456'); 
db.changeUserPassword("username", "xxx")

////////以上為創(chuàng)建賬戶
////////以下為創(chuàng)建庫(kù)
./mongo // 進(jìn)入mongo shell

use test // 使用 test 庫(kù),如果沒有則新建
db.createCollection('test') // 在 test 庫(kù)中新建一個(gè)叫 user 的 collection
db.test.insert({"name":"yuyuy","nums":100});
db.test.find()

6.遠(yuǎn)程無法登陸的問題

db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}}) 

參考:
http://www.cnblogs.com/chenjianxiang/p/6909236.html

默認(rèn)所有ip都可以訪問
新安裝的數(shù)據(jù)沒有admin管理員
MongoDB默認(rèn)情況下不啟用訪問控制

redis安裝

1、下載redis安裝包

wget  http://download.redis.io/releases/redis-2.8.12.tar.gz

2、安裝redis依賴

yum -y install gcc* make  tcl

3、編譯安裝

tar xvf  redis-2.8.12.tar.gz 
#改名
mv redis-2.8.12 redis
#移動(dòng)
mv redis /usr/local 
cd /usr/local/redis
make

4、使用redis的可執(zhí)行命令
將redis命令移動(dòng)到/usr/local/bin目錄下,把redis命令放到/usr/local/bin目錄下后就可以直接使用redis命令,如果不放到/usr/local/bin也是可以的,直接到/usr/local/redis/src目錄下使用即可。

cd /usr/local/redis/src
cp -rf redis-benchmark redis-server redis-cli redis-check-dump redis-check-aof /usr/local/bin

5.啟動(dòng)和關(guān)閉redis

redis-server &
redis-cli shutdown    

文件編碼

windows編碼一般是GBK(dos),而linux文件編碼是unix UTF-8
如果編碼不正確會(huì)導(dǎo)致腳本無法運(yùn)行
首先使用locale命令查看系統(tǒng)編碼,如果不是LANG=en_US.UTF-8就修改/etc/sysconfig/i18n文件直到生效

vi fileName
:set fileencoding 查看文件編碼
:set fileencoding=utf-8
:set ff=unix  設(shè)置為unix
:set ff?    查看系統(tǒng)編碼

十、軟件下載

鏈接:http://pan.baidu.com/s/1pKW0TgZ 密碼:bjdn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容