前言
隨着公司postgresql數據庫被廣泛應用,尤其是最近多個項目在做性能測試的時候都是基於postgresql的數據庫,為了確定性能瓶頸是否會出現在數據庫中,數據庫監控也被我推上了日程。在網上找了一遍好像沒有特別好的監控工具,雖然推薦比較多的是pgwatch,但是部署比較麻煩,需要Linux環境,然而公司大部分都是Windows而且后期推廣也不是很方便,因此果斷放棄了。
最近在做一個服務器性能監控時發現telegraf+influxdb+grafana的組合比較不錯,然后去官網和github上查了一下發現telegraf可以對postgresql進行監控,瞬間驚喜萬分。下面簡單介紹一下監控postgresql的配置方法:
環境
首先去官網下載telegraf、influxdb和grafana:
telegraf: 是一個用 Go 編寫的代理程序,可收集系統和服務的統計數據,並寫入到 InfluxDB 數據庫。下載地址
influxdb:是一個用 Go 編寫的目前比較流行的時間序列數據庫。下載地址
grafana:是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風格,支持多個數據源特點。下載地址
三者之間的關系為:telegraf(監控數據收集)->influxdb(監控數據存儲)->(監控數據展示)
部署
本次描述的方法是在Windows環境下部署實施,如果需要在Linux下部署請參考grafana + influxdb + telegraf , 構建性能監控平台
1、influxdb部署方式
下載influxdb包后解壓,修改influxdb.conf配置文檔中的以下內容:
修改[data]下內容dir和wal-dir路徑為本地存儲路徑,如下圖所示:
之后設置[admin]下的配置參數如下即可:
保存配置文件后,在當前文件夾路徑下啟動cmd(在文件夾路徑內輸入cmd回車即可),在cmd窗口中輸入:influxd -config influxdb.conf回車,啟動influxdb數據庫。
在瀏覽器中輸入http://127.0.0.1:8083/查看是否顯示influxdb數據庫界面,如下圖所示:
出現該界面后influxdb部署完成。
2、telegraf部署方式
下載telegra包后解壓,修改telegraf.conf配置文檔中的以下內容:
##output##中urls=["influxdb服務地址:監聽端口"],database=“存儲監控數據的數據庫名稱”,如下圖所示:
之后在配置最下方加入如下內容進行postgresql監控配置:
[[inputs.postgresql]]
address = "postgres://postgres:postgres@localhost" #"postgres://數據庫用戶:密碼@數據庫ip/指定的數據庫(可選)"
ignored_databases = ["template0", "template1"] #忽略[]內的數據庫監控,不能與database同時使用
#databases = ["test"] #只監控[]內數據庫,不能與ignored_database同時使用
配置完成后保存conf文件,並在當前文件夾路徑下啟動cmd(在文件夾路徑內輸入cmd回車即可),在cmd窗口中輸入:telegraf -config telegraf.conf啟動監聽
可在influxdb中查看是否生成telegraf數據庫及postgresql表單信息,如下圖所示:
相關postgresql監控內容參數意義可參考官方文檔
3、grafana部署方式
下載grafana部署包后解壓,雙擊\bin\grafana-server.exe,然后在瀏覽器中輸入:http://127.0.0.1:3000/,如下圖所示:
輸入用戶名和密碼,默認均為:admin,登錄成功后配置數據源,如下圖所示:
一般初始過程中會提示配置數據源,可能與本過程存在差異,但是不影響配置
此處在Data Sources中點擊“Add data source”添加influxdb數據源,選擇數據類型為influxdb,之后配置相關參數,如下圖所示:
配置完成后點擊“Save&Test”按鈕,提示如下信息:
連接成功並保存。切換到“Dashboards”->“New”界面
在新界面中添加Graph等展示圖,如下圖所示:
點擊新生成的graph界面的標題處,選擇“Edit”進行參數編輯,如下圖所示:
修改General中的Title為相關監控參數名
修改Metrics中的Panel Data Source為之前配置的telegraf,並選取展示數據,如下圖所示:
配置完成后可以看到展示結果,如下圖所示:
如果未顯示數據,可以設置右上角的展示時間范圍,如下圖所示:
到此為止一個最基本的postgresql讀取磁盤塊(blks_read)的監控配置完成,下面是一個簡單的系統及postgresql監控界面如下圖所示:
優化
為了讓監控框架的啟動方式更加簡潔,我這里進行了一下bat一鍵啟動,代碼如下: