公司目前也有一套監(jiān)控系統(tǒng)焕妙,但由于監(jiān)控系統(tǒng)的性能問題及功能擴展性問題等等導(dǎo)致監(jiān)控系統(tǒng)后端急需進行一次大的重構(gòu)嵌灰;采用的是C++寫成的探針用來采集各個主機硬件信息和組件的業(yè)務(wù)信息涨共。前端采用的是基于electron和vue搭建的跨平臺PC客戶端監(jiān)控系統(tǒng),其實際是由js實現(xiàn)的前端項目馁害,因為我們業(yè)務(wù)數(shù)據(jù)過大类垦,對后端和前端都造成的很大的困擾狈邑,因此準備著手開發(fā)一套新的監(jiān)控系統(tǒng)。
新的監(jiān)控系統(tǒng)我們選擇了Prometheus+Grafana這樣的組合方式蚤认,后端部分一部分是go語言寫的探針采集主機信息的功能米苹,另一部分是原來的C++寫的探針采集的業(yè)務(wù)信息。go探針采集的信息通過Prometheus將數(shù)據(jù)發(fā)送給一個中間件websever砰琢,業(yè)務(wù)信息也是發(fā)送到中間件websever中蘸嘶。再通過websever與前端進行交互良瞧,Grafana將嵌入到前端客戶端當(dāng)中。
進行一段時間研究后训唱,發(fā)現(xiàn)Prometheus+Grafana還是可以的褥蚯。這里就主要記錄一下搭建的過程。
概述
Prometheus是一個開源的服務(wù)監(jiān)控系統(tǒng)况增,它通過HTTP協(xié)議從遠程的機器收集數(shù)據(jù)并存儲在本地的時序數(shù)據(jù)庫上赞庶。
- 多維數(shù)據(jù)模型(時序列數(shù)據(jù)由metric名和一組key/value組成)
- 在多維度上靈活的查詢語言(PromQl)
- 不依賴分布式存儲,單主節(jié)點工作.
- 通過基于HTTP的pull方式采集時序數(shù)據(jù)
- 可以通過push gateway進行時序列數(shù)據(jù)推送(pushing)
- 可以通過服務(wù)發(fā)現(xiàn)或者靜態(tài)配置去獲取要采集的目標(biāo)服務(wù)器
- 多種可視化圖表及儀表盤支持
Prometheus通過安裝在遠程機器上的exporter來收集監(jiān)控數(shù)據(jù)澳骤,后面我們將使用到node_exporter收集系統(tǒng)數(shù)據(jù)歧强。
架構(gòu)
Grafana 是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器为肮,有靈活豐富的圖形化選項摊册,可以混合多種風(fēng)格,支持多個數(shù)據(jù)源特點颊艳。
架構(gòu)
軟件安裝
Prometheus
官網(wǎng)下載(https://prometheus.io/)茅特,支持Linux、Mac籽暇、Windows系統(tǒng)温治,很好很強大。我這里安裝過Centos和Mac戒悠,這里的實例以Mac為準。
Mac下載的發(fā)行版為darwin版舟山;
-
下載下來解壓縮就好绸狐,我得到的版本(2.0.0)內(nèi)容如下:
image.png -
目錄下的prometheus可以直接啟動
98772DB7-389C-4C48-84AF-AA8D153494C6.png -
啟動成功以后我們可以通過Prometheus內(nèi)置了web界面訪問,http://ip:9090 累盗,如果出現(xiàn)以下界面寒矿,說明配置成功
image.png
安裝exporter
(一)下載并解壓node_exporter:
#下載
wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.15.0.linux-amd64.tar.gz -O node_exporter-0.15.0.linux-amd64.tar.gz
# 可自定義解壓目錄
tar -xvf node_exporter-0.15.0.linux-amd64.tar.gz
運行node_exporter:
## 后臺運行
./node_exporter &
(二)prometheus可以理解為一個數(shù)據(jù)庫+數(shù)據(jù)抓取工具,工具從各處抓來統(tǒng)一的數(shù)據(jù)若债,放入prometheus這一個時間序列數(shù)據(jù)庫中符相。那如何保證各處的數(shù)據(jù)格式是統(tǒng)一的呢?就是通過這個exporter蠢琳。exporter也是用GO寫的程序啊终,它開放一個http接口,對外提供格式化的數(shù)據(jù)傲须。所以在不同的環(huán)境下蓝牲,需要編寫不同的exporter。好在已經(jīng)有很多寫好的exporter泰讽,我們可以直接使用例衍,(本句是一句廢話為了更好的排版顯示)(https://github.com/prometheus這里可以找到很多exporter)我們這里直接使用mysqld_exporter(prometheus.io/download/#mysqld_exporter)昔期。當(dāng)然也要下載對應(yīng)系統(tǒng)的版本。解壓后的內(nèi)容如下:
這里的mysqld_exporter是啟動文件佛玄,.my.cnf是配置文件硼一。想要正確的導(dǎo)出mysql的狀態(tài)數(shù)據(jù),必須在配置文件中正確的配置mysql的連接信息梦抢。我的配置如下:
配置好了欠动,就可以啟動了。成功如下所示:
通過localhost:9104惑申,就可以看到exporter導(dǎo)出的數(shù)據(jù)了:
在Prometheus中配置mysqld_exporter
exporter啟動了具伍,需要在Prometheus中正確的配置。修改prometheus目錄中的prometheus.yml圈驼,增加配置如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux1
static_configs:
- targets: ['192.168.1.120:9100']
labels:
instance: sys1
- job_name: linux2
static_configs:
- targets: ['192.168.1.130:9100']
labels:
instance: sys2
重啟prometheus人芽,點擊導(dǎo)航欄中的status->targets可以看到,mysql的exporter已經(jīng)集成進來了绩脆。
至此萤厅,prometheus這邊的搭建基本完成了。
安裝Grafana
Grafana官網(wǎng)(https://grafana.com/)靴迫,上面有各個系統(tǒng)安裝的步驟惕味,我的mac是直接通過brew安裝的(如果你的brew太慢,可以換成國內(nèi)的源試一下)玉锌。安裝后用brew services start grafana啟動即可名挥。啟動后,即可通過http://127.0.0.1:3000/來訪問了(默認賬號密碼是admin/admin)主守。進來之后應(yīng)該看到這個頁面:
首先禀倔,你要添加一個數(shù)據(jù)源,將Grafana和Prometheus關(guān)聯(lián)起來参淫。點擊Add data source救湖,如下填寫數(shù)據(jù)保存即可:
看到如下的提示,說明你的prometheus工作是正常的:
接著回到首頁涎才,你需要添加一個dashboard鞋既,如下圖進入dashboard導(dǎo)入頁面:
這里你需要從https://github.com/percona/grafana-dashboards項目中的dashboards下載MySQL_Overview.json,然后通過上面頁面的Upload .json File按鈕上傳上去耍铜,導(dǎo)入即可邑闺。
導(dǎo)入成功后,你將看到監(jiān)控頁面业扒,大功告成<爝骸!程储!