10 生產(chǎn)經(jīng)驗:如何為數(shù)據(jù)庫的監(jiān)控系統(tǒng)部署可視化報表系統(tǒng)?

生產(chǎn)經(jīng)驗:如何為數(shù)據(jù)庫的監(jiān)控系統(tǒng)部署可視化報表系統(tǒng)?
1、部署Grafana
上一篇文章我們講解到安裝好了Prometheus,接著我們來繼續(xù) 講解如何安裝Grafana,首先要從下面的地址下載grafana-4.6.3.linux-x64.tar.gz,然后一步一步的執(zhí)行下面的命令,完成他的啟動。
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3.linux-x64.tar.gz
tar xf grafana-4.6.3.linux-x64.tar.gz -C /data/prometheus
cd /data/prometheus
mv grafana-4.6.3 grafana
cd /data/prometheus/grafana
./bin/grafana-server &
接著就完成了grafana的啟動,然后可以通過瀏覽器訪問3000端口,默認(rèn)的用戶名和密碼是admin/admin。接著在Grafana左側(cè)菜單欄里有一個Data Sources,點擊里面的一個按鈕是Add data source,就是添加一個數(shù)據(jù)源。
然后在界面里輸入你的數(shù)據(jù)源的名字是Prometheus,類型是Prometheus,HTTP URL地址是http://127.0.0.1:9090,其他的都用默認(rèn)的配置就行了,接下來Grafana就會自動從Prometheus里獲取監(jiān)控數(shù)據(jù)和展示了。
接著需要安裝Grafana的儀表盤組件,首先需要下載grafana-dashboards-1.6.1.tar.gz,用如下的鏈接即可:https://github.com/percona/grafana-dashboards/archive/v1.6.1.tar.gz。
接著執(zhí)行一系列的命令去安裝grafana-dashboard組件。
tar xvf grafana-dashboards-1.6.1.tar.gz
cd grafana-dashboards-1.6.1
updatedb
locate json |grep dashboards/
這個時候會看到一大堆的json文件,就是各種不同的儀表盤對應(yīng)的json配置文件,你可以把這些json配置文件通過WinSCP之類的工具從linux機器上拖到你的windows電腦上來,因為需要通過瀏覽器上傳他們。
接著在grafana頁面中,可以看到最上面有一個Home按鈕,點擊一下進入一個界面,你會看到一個Import Dashboard的按鈕,就是說可以導(dǎo)入一些儀表盤,這個時候就是要導(dǎo)入剛才看到的一大堆的json文件。
你點擊Upload json file按鈕,就會出現(xiàn)一個界面讓你上傳一個一個的json文件,然后你就依次上傳,接著grafana中就會出現(xiàn)一大堆的儀表盤了,比如機器的CPU使用率的儀表盤,磁盤性能儀表盤,磁盤空間儀表盤,MySQL監(jiān)控儀表盤,等等。
2、添加MySQL機器的監(jiān)控
首先我們?nèi)绻胍孭rometheus去采集MySQL機器的監(jiān)控數(shù)據(jù)(CPU、內(nèi)存、磁盤、網(wǎng)絡(luò),等等),然后讓Grafana可以展示出來,那么就必須先添加Prometheus對MySQL機器的監(jiān)控。
首先必須要在MySQL機器上解壓縮和啟動node_exporter,這啟動之后是個linux進程,他會自動采集這臺linux機器上的CPU、磁盤、內(nèi)存、網(wǎng)絡(luò)之類的各種監(jiān)控數(shù)據(jù),其實本質(zhì)你可以理解為通過我們之前講解的那些linux命令,就可以采集到一切你想要的linux機器的監(jiān)控數(shù)據(jù)。
tar xf node_exporter-0.15.2.linux-amd64.tar
mv node_exporter-0.15.2.linux-amd64 node_exporter
cd node_exporter
nohup ./node_exporter &
到這一步為止,我們就在MySQL所在的機器上啟動了一個node_exporter了,他就會自動采集這臺機器的CPU、磁盤、內(nèi)存、網(wǎng)絡(luò)的監(jiān)控數(shù)據(jù),但是此時還不夠,因為Prometheus上還沒加入對這臺機器的監(jiān)控。
此時我們應(yīng)該還記得,之前在Prometheus的yml配置文件中,我們已經(jīng)定義了一個host監(jiān)控項,他就是用來監(jiān)控機器的,他的配置文件是host.yml,此時我們可以編輯一下這個host.yml配置文件,加入mysql所在機器的地址就可以了
vi host.yml
- labels:
? ?service: test
?targets:
?- 127.0.0.1
接著Prometheus就會跟MySQL機器上部署的node_exporter進行通信,源源不斷的獲取到這臺機器的監(jiān)控數(shù)據(jù),寫入自己的時序數(shù)據(jù)庫中進行存儲。接著我們就可以打開Grafana的頁面,此時你就可以看到這臺機器的相關(guān)性能監(jiān)控了。
3、添加MySQL數(shù)據(jù)庫的監(jiān)控
接著我們同樣需要在MySQL所在機器上再啟動一個mysqld_exporter的組件,他負(fù)責(zé)去采集MySQL數(shù)據(jù)庫自己的一些監(jiān)控數(shù)據(jù),我們看下面的指令就可以了。
tar xf mysqld_exporter-0.10.0.linux-amd64.tar
mv mysqld_exporter-0.10.0.linux-amd64 mysqld_exporter
接著需要配置一些環(huán)境變量,去設(shè)置mysqld_exporter要監(jiān)控的數(shù)據(jù)庫的地址信息,看下面配置了賬號、密碼以及地址和端口號
export DATA_SOURCE_NAME='root:root@(127.0.0.1:3306)/'
echo "export DATA_SOURCE_NAME='root:root@(127.0.0.1:3306)/'" >> /etc/profile
接著啟動mysqld_exporter
cd mysqld_exporter
nohup ./mysqld_exporter --collect.info_schema.processlist --collect.info_schema.innodb_tablespaces --collect.info_schema.innodb_metrics --collect.perf_schema.tableiowaits --collect.perf_schema.indexiowaits --collect.perf_schema.tablelocks --collect.engine_innodb_status --collect.perf_schema.file_events --collect.info_schema.processlist --collect.binlog_size --collect.info_schema.clientstats --collect.perf_schema.eventswaits &
上面的啟動命令指定了大量的選項去開啟一些監(jiān)控的采集,這些命令也都是我手敲的,因為目前寫作環(huán)境的一些不便利的因素,所以只能是如此,如果大家發(fā)現(xiàn)有什么小的錯誤,可以評論區(qū)后臺告訴我。
接著這個mysqld_exporter進程就會自動采集MySQL自己的監(jiān)控數(shù)據(jù)了,然后我們還需要在Prometheus里配置一下他去跟mysqld_exporter通信獲取數(shù)據(jù)以及存儲,然后Grafana才能看到對應(yīng)的報表。
vi /data/prometheus/mysql.yml
- labels:
? ?service: mysql_test
?targets:
?- 127.0.0.1
接著我們在Grafana中就可以看到MySQL的各種監(jiān)控數(shù)據(jù)了。
4、一個作業(yè)
今天我想留給大家一個小作業(yè),希望大家可以參考今天的兩篇文章,動手搭建一下數(shù)據(jù)庫的監(jiān)控系統(tǒng),然后可以用sysbench做一下壓測,在壓測過程中,可以直接看看Grafana上的機器以及MySQL的各項監(jiān)控指標(biāo)。
這個過程沒什么難度,但是可能會遇到一些操作性的問題,如果大家搭建的過程中發(fā)現(xiàn)什么問題,不要直接把報錯的截圖貼在評論區(qū),你可以先去上網(wǎng)查查,錯誤在哪里
如果真的有問題的話,我后續(xù)會想辦法解決一下錯誤,然后更新出來的。
另外,我希望大家思考一個問題,大家可以去看看自己公司里的數(shù)據(jù)庫有沒有做過壓測?可視化監(jiān)控做了嗎?是怎么做的?自己項目的數(shù)據(jù)庫平時的一些機器負(fù)載和QPS、TPS都是多少?自己對數(shù)據(jù)庫是否有一個較為全面的掌握?
希望每個人都去看看,然后發(fā)表在評論區(qū)里跟大家一起分享和交流。
End
專欄版權(quán)歸公眾號儒猿技術(shù)窩所有
未經(jīng)許可不得傳播,如有侵權(quán)將追究法律責(zé)任