1、mysql監控php
一、Orzdbamysql
二、Tcprstatlinux
三、pt-query-digest git
是用於分析mysql慢查詢的一個工具,它能夠分析binlog、General log、slowlog,也能夠經過SHOWPROCESSLIST或者經過tcpdump抓取的MySQL協議數據來進行分析。能夠把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,而後對參數化之後的查詢進行分組統計,統計出各查詢的執行時間、次數、佔比等,能夠藉助分析結果找出問題進行優化。github
四、prometheus + grafana監控mysqlgolang
GitHub網址:https://github.com/prometheus/prometheusweb
軟件下載地址:https://prometheus.io/download/sql
Prometheus是一個開源的系統監控和報警的工具包,最初由SoundCloud發佈。組件:數據庫
Prometheus 主程序,主要是負責存儲、抓取、聚合、查詢方面。vim
Alertmanager 程序,主要是負責實現報警功能。
Pushgateway 程序,主要是實現接收由Client push過來的指標數據,在指定的時間間隔,由主程序來抓取。
*_exporter 這類是不一樣系統已經實現了的集成。
prometheus部署
一、下載安裝包prometheus-1.6.2.linux-amd64.tar.gz
https://github.com/prometheus/prometheus/releases/tag/v1.6.2
二、解壓
tar -xvf prometheus-1.6.2.linux-amd64.tar.gz
cd prometheus-1.6.2.linux-amd64
三、配置prometheus.yml
scrape_interval: 15s # 默認15秒到目標處抓取數據
四、啓動
nohup ./prometheus -config.file=prometheus.yml &
或
nohup /opt/prometheus-1.6.2.linux-amd64/prometheus &
五、WEB頁面訪問http://localhost:9090/ ,能夠看到Prometheus的首頁頁面。
grafana部署
一、安裝grafana
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm
sudo yum install initscripts fontconfig -y
sudo rpm -Uvh grafana-4.2.0-1.x86_64.rpm
二、啓動服務service grafana-server start
三、訪問頁面http://localhost:3000 ,默認帳號、密碼admin/admin
四、Prometheus 和 Grafana 的對接
建立Prometheus數據源:
1)點擊Grafana徽標打開邊欄菜單。
2)點擊邊欄中的「數據源」。
3)點擊「添加新的」。
4)選擇「Prometheus」做爲類型。
5)設置適當的Prometheus服務器URL(例如http://localhost:9090/)
6)根據須要調整其餘數據源設置(例如,關閉代理訪問)。
7)點擊「添加」保存新的數據源。
五、zabbix監控mysql性能
先在zabbix主機上面配置好mysql服務器的信息,添加好zabbix自帶的 MySQL模版,而後去mysql服務器上安裝agent,再添加mysql監控腳本(chk_mysql.sh),zabbix經過調用chk_mysql.sh這個腳原本獲取mysql的運行信息。能夠監控以下內容:OPS(增刪改查)、mysql請求流量帶寬,mysql響應流量帶寬
# vim /usr/local/zabbix-2.4.4/scripts/chk_mysql.sh
腳本以下:
#!/bin/bash # 用戶名 MYSQL_USER='zabbix' # 密碼 MYSQL_PWD='123456' # 主機地址/IP MYSQL_HOST='127.0.0.1' # 端口 MYSQL_PORT='3306' # 數據鏈接 MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}" # 參數是否正確 if [ $# -ne "1" ];then echo "arg error!" fi # 獲取數據 case $1 in Uptime) result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` echo $result ;; Com_update) result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` echo $result ;; Slow_queries) result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` echo $result ;; Com_select) result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` echo $result ;; Com_rollback) result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` echo $result ;; Questions) result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` echo $result ;; Com_insert) result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` echo $result ;; Com_delete) result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` echo $result ;; Com_commit) result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` echo $result ;; Bytes_sent) result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` echo $result ;; Bytes_received) result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` echo $result ;; Com_begin) result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" ;; esac
安裝mysql
[root@test3 /]# yum -y install mysql mysql-server
初始化數據庫
[root@test3 /]# /etc/init.d/mysqld start
[root@test3 /]# mysqladmin -uroot -h 127.0.0.1 password 123456
[root@test3 /]# mysql -u root -p
Enter password:
建立一個登錄mysql的用戶
mysql> GRANT USAGE ON*.*TO'zabbix'@'localhost'IDENTIFIED BY'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
增長自定義key,在最後一行增長以下:
# 獲取mysql版本
UserParameter=mysql.version,mysql -V
# 獲取mysql性能指標,這個是上面定義好的腳本
UserParameter=mysql.status[*],/usr/local/zabbix2.4.4/scripts/chk_mysql.sh $1
# 獲取mysql運行狀態
UserParameter=mysql.ping,mysqladmin -uzabbix -p123456 -P3306 -h127.0.0.1 ping | grep -c alive
備註:請注意修改你的數據庫信息,以及zabbix路徑信息
# killall zabbix-agentd
# /usr/local/zabbix-2.4.4/bin/zabbix_agentd
或者
# service zabbix_agentd restart
模板是zabbix系統提供的,進入zabbix web後臺,configuration-->hosts-->點擊你的主機name-->選擇template選項卡,選擇模板「Template App MySQL」,最後點擊update便可
若是配置沒有異常,那麼能夠在graph中查看到2張監控圖,分別爲請求流量帶寬、響應流量帶寬、ops,點擊monitoring-->graphs-->選擇你的主機,分別選擇Graph「MySQL bandwidth」、「MySQL operations」,監控圖分別以下(圖片能夠點擊放大查看):
zabbix監控mysql
2、oracle監控
一、AWR報告 AWR是Oracle的一個組件,須要安裝,能夠結合toad一塊兒使用
二、tcprstat
在Oracle數據庫中提供了「AWR,ASH,SQL Monitor」等衆多診斷工具,能夠一眼望穿數據庫正在作什麼,甚至均可以知道在過去30天內任何一個時間區間的性能負載和當時數據庫正在作什麼。在MySQL中雖然有像「zabbix,PMM」等優秀的監控工具,但它們只能反映數據庫歷史的一些性能數據曲線,例如,TPS高了,臨時表使用多了,有InnoDB Deadlocks,但對於MySQL當時的Doing,我只能說不夠直接。
doDBA tools是一個基於控制檯的遠程監控工具,它不須要在本地/遠程系統上安裝任何軟件,它能夠實時收集操做系統、MySQL、InnoDB的實時性能狀態數據,並能夠生成Doing日誌文件,來幫助你快速瞭解/優化系統及MySQL數據庫。
特色
●基於golang語言開發
●可收集Linux、MySQL相關性能數據
●可本地或遠程收集,可多臺
●mytop --Like Linux TOP
●基於併發生成Doing日誌,復現現場
●可記錄到日誌文件
doDBA tools 工做原理
遠程收集系統信息是經過ssh(用戶名密碼或創建信任)的方式鏈接到遠程服務器上收集,收集的方法都是經過讀取Linux的proc下的等meminfo,diskstats,uptime,net,vmstat ,cpuinfo ,loadavg等文件,這和pmm,zabbix收集方式一致。
遠程收集MySQL信息是經過 MySQL tcp鏈接到MySQL數據庫上收集,只須要授予鏈接用戶PROCESS、SELECT權限便可。
系統信息和MySQL信息的收集能夠分離,若是隻想收集系統信息,只須要提供系統用戶名密碼便可,若是隻收集MySQL能夠只提供MySQL鏈接信息,若是是rds用戶,可使用-rds參數,在使用mytop時會自動忽略系統信息的收集。
如何使用
Github主頁:https://github.com/dblucyne/dodba_tools
下載下來就能夠直接使用,不依賴於任何環境。
使用實例
1. 收集Linux性能數據
./doDBA -h=10.1.x.xx -sys
2. 收集MySQL性能數據
./doDBA -h=10.1.x.xx -mysql
3. 收集InnoDB性能數據
./doDBA -h=10.1.x.xx -innodb
4. 收集MySQL及Linux性能數據
./doDBA -h=10.1.x.xx -myall
5. mytop --like linux top
./doDBA -h=10.1.x.xx -mytop
6. 藉助Shell收集多臺
cat ip.txt
10.1.x.x1
10.1.x.x2
Shell
cat ip.txt | while read ip;
do
echo $ip;
./doDBA -h=$ip -mysql -log
done
7. 收集到日誌文件
./doDBA -h=10.1.x.xx -mysql -log
8. 開啓Doing功能
使用【-t】參數能夠基於Threads_running的數量設置閾值,設置後可記錄「processlist,engine innodb status」信息到dodba.log日誌中,--復現現場。
./doDBA -h=10.1.x.xx -myall -t=3
9. 查看Doing日誌
tail -f dodba.log