lepus搭建
監控mysql
整體環境:
192.168.1.30 mini1 監控機
192.168.1.31 mini2主 被監控機
192.168.1.32 mini3從 被監控機
監控機mini1上:
1.安裝依賴包
yum groupinstall Development tools
yum -y install mysql-devel
yum -y install openssl
2.安裝lamp
解壓安裝包
在/usr/local/apapche/conf/httpd.conf中修改
<IfModule dir_module>
DirectoryIndex index.html index.php
啟動httpd
/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf &
啟動php
./php &
3.安裝python2.7
tar -jxvf Python-2.7.13.tar.bz2
#進入解壓后的?目錄
cd Python-2.7.13
#編譯和安裝
./configure
make
make install
檢查是否安裝成功
/usr/local/bin/python2.7 -V
#如果出現如下信息代表安裝成功
Python 2.7.3
4.建立軟連接
#正常情況下即使python2.7安裝成功后,系統默認指向的python仍然是2.6.6版本,考慮到yum是基于python2.6.6才能正常?工作,
所以不不建議卸載。
#采用下面的方法把系統默認的python修改為2.7.3版本
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
#檢測是否成功
python -V
#出現2.7.3版本信息代表成功
Python 2.7.3
5.修改yum源
vi /usr/bin/yum
將#!/usr/bin/python
修改為
#!/usr/bin/python2.6.6
6.安裝setuptools
解壓
cd setuptools-12.0.3
安裝
python setup.py install
7.安裝MySQLdb
cd? MySQL-python-1.2.4
python setup.py build
python setup.py install
8.安裝MySQL作為監控庫
create database lepus default character set utf8;
grant select,insert,update,delete,create on lepus.* to 'lepus'@'%' identified by '123456';
flush privileges;
導入建庫語句句
use lepus
mysql -uroot -p lepus < sql/lepus_table.sql
mysql -uroot -p lepus < sql/lepus_data.sql
修改表結構
use lepus
alter table mysql_status modify column max_connect_errors bigint(18);
alter table mysql_status_history modify column max_connect_errors bigint(18);
創建監控賬號
grant select,super,process,reload,show databases,replication client on *.* to'lepus_monitor'@'%'
identified by 'lepus_monitor';
flush privileges;
9.初始化python
cd python/
chmod +x install.sh
./install.sh
10.修改python配置文件
vi /usr/local/lepus/etc/config.ini
[monitor_server]
host="192.168.1.30"
port=3306
user="lepus"
passwd="lepus"
dbname="lepus"
拷貝PHP文件到相關目錄
cp -r php/* /usr/local/apache/htdocs
11.修改php配置文件
vi /usr/local/apache/htdocs/application/config/database.php
$db['default']['hostname']= '192.168.1.30';
$db['default']['port'] = '3306';
$db['default']['username']= 'lepus';
$db['default']['password']= 'lepus';
$db['default']['database']= 'lepus';
$db['default']['dbdriver']= 'mysql';
12.開啟lepus
cd /usr/local/lepus/
lepus start
日志目錄
tail -f /usr/local/lepus/nohup.out
tail -f /usr/local/lepus/logs/lepus.log
13.設置訪問域名
vi /usr/local/apache/etc/extra/httpd-vhosts.conf
<VirtualHost*:80>
AddDefaultCharset UTF-8
DocumentRoot "/usr/local/apache/htdocs"
ServerName mysqlmtop.tomato.com
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from All
ErrorLog"|/usr/local/apache/bin/rotatelogs /home/logs/apache/php_%Y%m%d_error.log86400 480"
CustomLog"|/usr/local/apache/bin/rotatelogs /home/logs/apache/php_%Y%m%d_access.log86400 480"
common
</VirtualHost>
14.修改hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.1.30 mini1 mysqlmtop.tomato.com
15.訪問主頁 默認賬號密碼
賬號 admin
密碼Lepusadmin
監控redis/mongodb
若要監控redis 和mongodb,則需要安裝相關依賴
1.安裝Redis模塊(監控Redis所需)
[root@vpn lepus]# tar zxvf redis-py-2.10.3.tar.gz
[root@vpn lepus]# cd redis-2.10.3/
[root@vpn redis-2.10.3]# python setup.py install
安裝pymongo模塊(監控Mongodb所需)
[root@vpn lepus]# tar zxvf pymongo-2.7.tar.gz
[root@vpn lepus]# cd pymongo-2.7
[root@vpn pymongo-2.7]# python setup.py install
2.測試各個模塊安裝是否正常運行(測試文件在 /root/lepus/lepus_v3.7/python/下)
[root@vpn pymongo-2.7]# cd /root/lepus/lepus_v3.7/python/
[root@vpn pymongo-2.7]# pwd
/root/lepus/lepus_v3.7/python
[root@vpn python]# python test_driver_mysql.py
MySQL python drivier is ok!
[root@vpn python]# python test_driver_redis.py
Redis python drivier is ok!
[root@vpn python]# python test_driver_mongodb.py
MongoDB python drivier is ok!
3.修改redis的配置文件
ln -s /software/redis-3.xxx/redis.conf /etc/redis.conf
vi /etc/redis.conf
bind 0.0.0.0
redis 可以沒有密碼連入天兔
cd /usr/local/lepus
修改check_mongodb.py中的 db.authenticate(user,passwd)注釋掉即可登錄無需用戶名密碼的MongoDB
4.打開天兔的全局配置項,redis,mongodb
5.重啟lepus
6.輸入被監控端redis的IP,端口,標簽即可,不用填密碼,刷新
? 輸入被監控端mongo的IP,端口,標簽即可,不用填用戶密碼,刷新
監控操作系統OS
1 什么是snmp 協議?
簡單網絡管理協議(SNMP,Simple Network Management Protocol)構成了互聯網工程工作小組(IETF,Internet Engineering Task Force)定義的internet協議簇的一部分。該協議能夠支持網絡管理系統,用以監測連接到網絡上的設備是否有任何引起管理上關注的情況。它由一組網絡管理的標準組成,包含一個應用層協議(application layer protocol)、數據庫模型(database schema),和一組資料物件。
2 在需要監控的linux系統下snmp服務配置
2.1 snmpd 服務安裝
yum install net-snmp*
2.2 編輯snmpd.conf 配置文檔
vim /etc/snmp/snmpd.conf
41行 將default改為監控服務器ip;2 將public改成lepus (備注: lepus是您在天兔配置文件里配置的通用實體,如果您配置的實體是其他名稱,這里要做相應的修改)示例如下:
com2sec notConfigUser? 10.0.10.10? ? ? lepus
62行 將systemview 改為all,供所有snmp訪問權限
access? notConfigGroup ""? ? ? any? ? ? noauth? ? exact? all none none
85行 將#注釋符號去掉
view all? ? included? .1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 80
2.3 啟動 snmpd 服務
/etc/init.d/snmpd start
2.4 驗證snmpd 服務
//snmpd 使用 tcp/udp 161 端口
grep 'Simple Net Mgmt Proto' /etc/services?
snmp? ? ? ? 161/tcp? ? ? ? ? ? # Simple Net Mgmt Proto
snmp? ? ? ? 161/udp? ? ? ? ? ? # Simple Net Mgmt Proto
lsof -i :161
COMMAND? PID USER? FD? TYPE DEVICE SIZE NODE NAME
snmpd? 3734 root? 11u? IPv4? 13174? ? ? UDP *:snmp?
ps -ef | grep 'snmpd'
root? ? ? 3734? ? 1? 0 09:34 ?? ? ? ? 00:00:00 /usr/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a
2.5 修改snmpd 日志級別
//以上操作能夠滿足snmpd 服務正常使用,不過snmpd 默認日志級別將會在/var/log/message 寫入大量snmp 信息,這樣會影響我們察看系統日志,所以我們需要更改下!
Mar? 1 09:55:01 monitor snmpd[3734]: Connection from UDP: [127.0.0.1]:37535?
Mar? 1 09:55:01 monitor snmpd[3734]: Received SNMP packet(s) from UDP: [127.0.0.1]:37535?
Mar? 1 09:55:01 monitor snmpd[3734]: Connection from UDP: [127.0.0.1]:47836?
Mar? 1 09:55:01 monitor snmpd[3734]: Received SNMP packet(s) from UDP: [127.0.0.1]:47836?
//注釋原有的OPTINOS,添加下面的一行,重啟snmpd 服務即可。
vim /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"
/etc/init.d/snmpd restart
Stopping snmpd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting snmpd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
2.6將SNMP服務設置開機啟動
2.7 使用snmpwalk 命令驗證,在監控機上執行以下命令
snmpwalk -v 1 -c lepus? 192.168.1.31
snmpwalk -v 2c -c lepus? 192.168.1.32
-v是指版本,-c 是指密鑰,獲取到系統信息則正常!
至此,您已經成功地開啟了SNMP服務。
驗證snmp服務
[root@HE1 bin]# ps-ef | grep 'snmpd'
root? ? 26100? ? 1? 0 11:20 ?? ? ? ? 00:00:00 /usr/sbin/snmpd -LS 4 d -p/var/run/snmpd.pid -a
root? ? 26114 25540? 0 11:30 pts/0? ? 00:00:00 grep snmpd
監控機修改lepus配置文件添加44,45,46行內容
[root@HE3lepus]# vi /usr/local/lepus/check_os.sh
在43行后添加44,45,46行內容
? ? 40? ? mem_buffered=`/usr/bin/snmpwalk -v1 -c ${community}? ${ip} UCD-SNMP-MIB::memBuffer.0 |cut -d= -f2 |awk -F ' ' '{print $2}'`
? ? 41? ? mem_cached=`/usr/bin/snmpwalk -v1 -c ${community}? ${ip} UCD-SNMP-MIB::memCached.0 |cut -d= -f2 |awk -F ' ' '{print $2}'`
? ? 42? ? mem_usage_rate=`/usr/bin/snmpdf -v1 -c ${community}? ${ip} |grep "Physical"|awk '{print $6}'`
? ? 43? ? mem_available=$[$mem_free+$mem_buffered+$mem_cached]
if [ -z $mem_shared ]; then
mem_shared=0
fi
[root@HE3 lepus]#python check_os.py
安裝完成后即可在天兔系統配置需要監控的主機。
監控mysql慢日志
被監控機主要有以下幾個步驟:mysql基礎配置--依賴軟件安裝---腳本配置--定時任務。
1.mysql基礎配置:
在mysql命令行中執行以下命令:
set global slow_query_log=on;
set global long_query_time=1;#設置記錄查詢超過多長時間的sql,根據自己情況定
set global slow_query_log_file='/opt/lampp/var/mysql/';#設置mysql慢查詢日志路徑
斷開當前連接然后重新連接進入命令行查詢(緩存):
show variables like '%slow%';
show variables like '%long_query_time%';
2.依賴軟件安裝:
# 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
上傳percona-toolkit.rpm并安裝
rpm -ivh percona-toolkit.rpm
3.腳本配置:
vi /usr/local/lepus/client/mysql/lepus_slowquery.sh
#config lepus database server? lepus服務器
lepus_db_host="192.168.1.30"
lepus_db_port=3306
lepus_db_user="lepus"
lepus_db_password="123456"
lepus_db_database="lepus"
#config mysql server? 被監控的mysql
mysql_client="/opt/lampp/bin/mysql"
mysql_host="192.168.200.31"
mysql_port=3306
mysql_user="lepus"
mysql_password="123456"
#config slowqury? 慢查詢日志
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對應
lepus_server_id=1
4.手動運行查看是否正常運行:
sh /usr/local/lepus/client/mysql/lepus_slowquery.sh
報錯:/bin/sh^M: bad interpreter: No such file or directory
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盤退出)
最后再執行文件
#sh>./filename
定時任務:
查看所有定時任務:
crontab -l
添加定時任務:
crontab -e
*/5 * * * * sh /usr/local/sbin/lepus_slowquery.sh > /dev/null 2>&1
復制監控沒有數據顯示
在被監控的mysql數據庫
show variables like 'show_compatibility_56';
+-----------------------+-------+
| Variable_name? ? ? ? | Value |
+-----------------------+-------+
| show_compatibility_56 | OFF? |
+-----------------------+-------+
set global show_compatibility_56=on;
Query OK, 0 rows affected (0.00 sec)
---MySQL復制監控中無法看圖形
vi /opt/lampp/htdocs/application/controllers/lp_mysql.php
337行,去掉'mysql/replication',改為parent::check_privilege();
原來為parent::check_privilege('mysql/replication');
刷新天兔
配置表空間分析
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;");
以上修改內容表示提取表大小大于5M并且是排名前10的表。
pip install functions
將腳本放到crontab中執行,定期采集數據
crontab -e
*/5 * * * * python /usr/local/lepus/check_mysql_bigtable.py
配置郵件發送
去申請一個新的126郵箱,選擇設置-POP3/SMTP/IMAP-客戶端授權密碼
在天兔上設置,SMTP賬號就是申請的126郵箱賬號,SMTP密碼就是你剛剛開啟的客戶端授權密碼,郵件發件人就是126郵箱地址
[root@HE3]# python test_send_mail.py
True
send_mail_status:success
編譯通過
在全局配置里面的郵件那配置郵箱,還有各個小項的郵箱配好收件箱即可。