性能監控2

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響應流量帶寬

 

編寫check_mysql.sh腳本

# 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

修改zabbix_agentd.conf

增長自定義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路徑信息

 

重啓zabbix

# killall zabbix-agentd

# /usr/local/zabbix-2.4.4/bin/zabbix_agentd

或者

# service zabbix_agentd restart

 

MySQL模板

模板是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

三、doDBA tools

在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

 

相關文章
相關標籤/搜索