一、開場(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