搭建prometheus+grafana监控系统
prometheus簡(jiǎn)介
Prometheus是最初在SoundCloud上構(gòu)建的開源系統(tǒng)監(jiān)視和警報(bào)工具包 。自2012年成立以來(lái),許多公司和組織都采用了Prometheus,該項(xiàng)目擁有非?;钴S的開發(fā)人員和用戶社區(qū)?,F(xiàn)在,它是一個(gè)獨(dú)立的開源項(xiàng)目,并且獨(dú)立于任何公司進(jìn)行維護(hù)。為了強(qiáng)調(diào)這一點(diǎn)并闡明項(xiàng)目的治理結(jié)構(gòu),Prometheus 于2016年加入了 Cloud Native Computing Foundation,這是繼Kubernetes之后的第二個(gè)托管項(xiàng)目。
官網(wǎng)地址
Prometheus是一個(gè)時(shí)間序列數(shù)據(jù)庫(kù)。但是,它不僅僅是一個(gè)時(shí)間序列數(shù)據(jù)庫(kù)。它涵蓋了可以綁定的整個(gè)生態(tài)系統(tǒng)工具集及其功能。
Prometheus主要用于對(duì)基礎(chǔ)設(shè)施的監(jiān)控。包括服務(wù)器,數(shù)據(jù)庫(kù),VPS,幾乎所有東西都可以通過Prometheus進(jìn)行監(jiān)控。Prometheus希望通過對(duì)Prometheus配置中定義的某些端點(diǎn)執(zhí)行的HTTP調(diào)用來(lái)檢索度量標(biāo)準(zhǔn)。
普羅米修斯的主要特點(diǎn)是:.
-
業(yè)務(wù)持續(xù)性(及時(shí)預(yù)警,監(jiān)控)
-
一個(gè)多維數(shù)據(jù)模型,其中包含通過度量標(biāo)準(zhǔn)名稱和鍵/值對(duì)標(biāo)識(shí)的時(shí)間序列數(shù)據(jù)
-
PromQL,一種靈活的查詢語(yǔ)言,可以利用此維度完成復(fù)雜的查詢
-
不依賴分布式存儲(chǔ);單服務(wù)器節(jié)點(diǎn)是自治的
-
時(shí)間序列收集通過HTTP上的拉模型進(jìn)行
-
通過中間網(wǎng)關(guān)支持推送時(shí)間序列
-
通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)目標(biāo)
-
多種圖形和儀表板支持模式
Prometheus 基本服務(wù)與作用
| Prometheus Server | 收集指標(biāo)和存儲(chǔ)時(shí)間序列數(shù)據(jù),并提供查詢接口 |
| ClientLibrary | 客戶端庫(kù) |
| Push Gateway | 短期存儲(chǔ)指標(biāo)數(shù)據(jù)。主要用于臨時(shí)性的任務(wù) |
| Exporters | 采集已有的第三方服務(wù)監(jiān)控指標(biāo)并暴露metrics |
| Alertmanager | 告警 |
| Web UI | 簡(jiǎn)單的Web控制臺(tái) |
Prometheus 各組件運(yùn)行流程
- Prometheus Server:Prometheus Sever 是 Prometheus 組件中的核心部分,負(fù)責(zé)實(shí)現(xiàn)對(duì)監(jiān) 控?cái)?shù)據(jù)的獲取,存儲(chǔ)及查詢
- Prometheus Server 可以通過靜態(tài)配置管理監(jiān)控目標(biāo),也可以配合使用 Service Discovery(服務(wù)發(fā)現(xiàn))的方式動(dòng)態(tài)管理監(jiān)控目標(biāo),并從這些監(jiān)控目標(biāo)中獲取數(shù)據(jù)。
- 其次 Prometheus Sever 需要對(duì)采集到的數(shù)據(jù)進(jìn)行存儲(chǔ),Prometheus Server 本身就是一個(gè)實(shí)時(shí)數(shù)據(jù)庫(kù),將 采集到的監(jiān)控?cái)?shù)據(jù)按照時(shí)間序列的方式存儲(chǔ)在本地磁盤當(dāng)中。
- Prometheus Server 對(duì)外提供了自定義的PromQL,實(shí)現(xiàn)對(duì)數(shù)據(jù)的查詢以及分析。另外 Prometheus Server 的聯(lián)邦集群能力可以使其從其他的Prometheus Server 實(shí)例中獲取數(shù)據(jù)。
- Exporters:Exporter將監(jiān)控?cái)?shù)據(jù)采集的端點(diǎn)通過 HTTP 服務(wù)的形式暴露給Prometheus Server, Prometheus Server 通過訪問該 Exporter 提供的 Endpoint 端點(diǎn),即可以獲取到需要采集的監(jiān)控?cái)?shù)據(jù)。可以將 Exporter 分為 2 類:
- 直接采集:這一類 Exporter 直接內(nèi)置了對(duì) Prometheus 監(jiān)控的支持,比如 cAdvisor,Kubernetes,Etcd等,都直接內(nèi)置了用于向 Prometheus 暴露監(jiān)控?cái)?shù)據(jù)的端點(diǎn)。
- 間接采集:原有監(jiān)控目標(biāo)并無(wú)直接支持 Prometheus,因此需要通過 Prometheus 提供的 Client Library 編寫該監(jiān)控目標(biāo)的監(jiān)控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter等。
- AlertManager:在 Prometheus Server 中支持基于 Prom QL 創(chuàng)建告警規(guī)則,如果滿足 Prom QL 定義的規(guī)則,則會(huì)產(chǎn)生一條告警。常見的接收方式有:電子郵件,webhook 等。
- PushGateway:Prometheus 數(shù)據(jù)采集基于 Prometheus Server 從 Exporter pull 數(shù)據(jù),因此 當(dāng)網(wǎng)絡(luò)環(huán)境不允許 Prometheus Server和 Exporter 進(jìn)行通信時(shí),可以使用 PushGateway 來(lái)進(jìn)行中轉(zhuǎn)。
Prometheus 的工作流程:
安裝prometheus監(jiān)控服務(wù)
環(huán)境準(zhǔn)備
| server | prometheus+grafana | 192.168.2.10 |
| client1 | mysql+client | 192.168.2.11 |
| client2 | client | 192.168.2.12 |
官網(wǎng)下載
1.安裝Go語(yǔ)言環(huán)境 [root@server ~]# curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo [go-repo] name=go-repo - CentOS baseurl=https://mirror.go-repo.io/centos/$releasever/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO [root@server ~]# yum install go -y [root@server ~]# go version go version go1.15.6 linux/amd642.下載prometheus軟件 [root@server ~]# cd /opt [root@server opt]# wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz [root@server opt]# ll 總用量 62792 -rw-r--r-- 1 root root 64298432 12月 17 16:12 prometheus-2.23.0.linux-amd64.tar.gz3.編輯解壓目錄下的prometheus.yml,配置監(jiān)控linux主機(jī)和mysq|數(shù)據(jù)庫(kù),配置文件為yml語(yǔ)法.注意縮進(jìn)對(duì)齊 [root@server opt]# cd prometheus-2.23.0.linux-amd64/ [root@server prometheus-2.23.0.linux-amd64]# ls console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool [root@server prometheus-2.23.0.linux-amd64]# vim prometheus.yml scrape_interval: 15s # 默認(rèn)15秒到目標(biāo)處抓取數(shù)據(jù) job_name #這個(gè)配置是表示在這個(gè)配置內(nèi)的時(shí)間序例,每一條都會(huì)自動(dòng)添加上這個(gè){job_name:"prometheus"}的標(biāo)簽在最后進(jìn)行配置: scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus' # 每一個(gè) job_name 都是一個(gè)監(jiān)控項(xiàng),這里代表監(jiān)控操作系統(tǒng)狀態(tài)static_configs:- targets: ['localhost:9090']labels:instance: server- job_name: 'linux'static_configs:- targets: ['192.168.2.11:9100','192.168.2.12:9100'] # 被監(jiān)控主機(jī) IP 地址和端口labels:instance: client # 實(shí)例名稱,在 grafana 中表示對(duì)應(yīng)的主機(jī)- job_name: 'mysql' # 監(jiān)控 mysql 數(shù)據(jù)庫(kù)狀態(tài)static_configs:- targets: ['192.168.2.11:9104'] # 數(shù)據(jù)庫(kù)Ip地址+端口labels:intance: client # 實(shí)例名稱,在 grafana 中表示對(duì)應(yīng)的主機(jī)4.后臺(tái)啟動(dòng) [root@server prometheus-2.23.0.linux-amd64]# nohup ./prometheus --config.file=prometheus.yml & [1] 2358 [root@server prometheus-2.23.0.linux-amd64]# nohup: 忽略輸入并把輸出追加到"nohup.out"5.瀏覽器訪問 使用瀏覽器打開該機(jī)器的 http://部署機(jī)器:9090 ,或者 http://localhost:9090/ 即可以看到Prometheus的graph頁(yè)面
- 測(cè)試訪問,由于此時(shí)沒有配置被監(jiān)控主機(jī),所以不是up的狀態(tài)
啟動(dòng)用于采集 Linux 系統(tǒng)和 mysql 服務(wù)狀態(tài)的 exporter 服務(wù)
prometheus常見的exporter及作用:
(1). node. exporter 用于監(jiān)控操作系統(tǒng)的性能和運(yùn)行狀態(tài)
(2). mysqld. exporter用于監(jiān)控mysql服務(wù)
(3). snmp. exporter 用于監(jiān)控網(wǎng)絡(luò)設(shè)備
更多exporter可在官網(wǎng)下載官方傳送門—
總結(jié)prometheus使用方法:
1.想監(jiān)控操作系統(tǒng),只需要一步:
在被監(jiān)控系統(tǒng)上安裝node. exporter并啟動(dòng)就ok了
2.想監(jiān)控操mysql數(shù)據(jù)庫(kù),只需要兩步:
(1).創(chuàng)建一個(gè)mysql用戶
(2).安裝mysqld. exporter 并啟動(dòng)
注意:prometheus里面的時(shí)區(qū)是GMT,圖形橫軸顯示的時(shí)間與后面的grafana顯示時(shí)間不同,我們用的主機(jī)時(shí)區(qū)是CST,大家可以自己了解這個(gè)時(shí)區(qū)間的關(guān)系
Prometheus自帶的圖形并不夠強(qiáng)大,于是我們可以使用Grafana作為Prometheus的Dashboard。
使用 Grafana 可視化工具美化監(jiān)控?cái)?shù)據(jù)
grafana的下載地址
grafana配置文件介紹
[root@server opt]# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.0.1-1.x86_64.rpm [root@server opt]# yum -y install grafana-5.0.1-1.x86_64.rpm 安裝插件 [root@server opt]# grafana-cli plugins install grafana-piechart-panel installing grafana-piechart-panel @ 1.6.1 from url: https://grafana.com/api/plugins/grafana-piechart-panel/versions/1.6.1/download into: /var/lib/grafana/plugins? Installed grafana-piechart-panel successfully Restart grafana after installing plugins . <service grafana-server restart>[root@server opt]# service grafana-server restart Restarting grafana-server (via systemctl): [ 確定 ]瀏覽器訪問3000端口,登錄,默認(rèn)賬號(hào)密碼admin/admin
登錄執(zhí)行設(shè)置數(shù)據(jù)源
進(jìn)入配置頁(yè)面
點(diǎn)擊保存并測(cè)試,如果出現(xiàn)如下內(nèi)容則代表成功
配置完成后可以把默認(rèn)的dashboards導(dǎo)入
這時(shí)候你再進(jìn)入到datasource可以看到剛配置的數(shù)據(jù)源;
點(diǎn)擊Prometheus 2.0 Stats:
將監(jiān)控 Linux 系統(tǒng)和 mysql 服務(wù)運(yùn)行狀態(tài)的 web 儀表盤插件導(dǎo)入 grafana
點(diǎn)擊導(dǎo)入,粘貼ID
成功!
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的搭建prometheus+grafana监控系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识puppet!
- 下一篇: 理解cookie和session