搭建prometheus+grafana监控系统
prometheus簡介
Prometheus是最初在SoundCloud上構建的開源系統監視和警報工具包 。自2012年成立以來,許多公司和組織都采用了Prometheus,該項目擁有非常活躍的開發人員和用戶社區。現在,它是一個獨立的開源項目,并且獨立于任何公司進行維護。為了強調這一點并闡明項目的治理結構,Prometheus 于2016年加入了 Cloud Native Computing Foundation,這是繼Kubernetes之后的第二個托管項目。
官網地址
Prometheus是一個時間序列數據庫。但是,它不僅僅是一個時間序列數據庫。它涵蓋了可以綁定的整個生態系統工具集及其功能。
Prometheus主要用于對基礎設施的監控。包括服務器,數據庫,VPS,幾乎所有東西都可以通過Prometheus進行監控。Prometheus希望通過對Prometheus配置中定義的某些端點執行的HTTP調用來檢索度量標準。
普羅米修斯的主要特點是:.
-
業務持續性(及時預警,監控)
-
一個多維數據模型,其中包含通過度量標準名稱和鍵/值對標識的時間序列數據
-
PromQL,一種靈活的查詢語言,可以利用此維度完成復雜的查詢
-
不依賴分布式存儲;單服務器節點是自治的
-
時間序列收集通過HTTP上的拉模型進行
-
通過中間網關支持推送時間序列
-
通過服務發現或靜態配置發現目標
-
多種圖形和儀表板支持模式
Prometheus 基本服務與作用
| Prometheus Server | 收集指標和存儲時間序列數據,并提供查詢接口 |
| ClientLibrary | 客戶端庫 |
| Push Gateway | 短期存儲指標數據。主要用于臨時性的任務 |
| Exporters | 采集已有的第三方服務監控指標并暴露metrics |
| Alertmanager | 告警 |
| Web UI | 簡單的Web控制臺 |
Prometheus 各組件運行流程
- Prometheus Server:Prometheus Sever 是 Prometheus 組件中的核心部分,負責實現對監 控數據的獲取,存儲及查詢
- Prometheus Server 可以通過靜態配置管理監控目標,也可以配合使用 Service Discovery(服務發現)的方式動態管理監控目標,并從這些監控目標中獲取數據。
- 其次 Prometheus Sever 需要對采集到的數據進行存儲,Prometheus Server 本身就是一個實時數據庫,將 采集到的監控數據按照時間序列的方式存儲在本地磁盤當中。
- Prometheus Server 對外提供了自定義的PromQL,實現對數據的查詢以及分析。另外 Prometheus Server 的聯邦集群能力可以使其從其他的Prometheus Server 實例中獲取數據。
- Exporters:Exporter將監控數據采集的端點通過 HTTP 服務的形式暴露給Prometheus Server, Prometheus Server 通過訪問該 Exporter 提供的 Endpoint 端點,即可以獲取到需要采集的監控數據。可以將 Exporter 分為 2 類:
- 直接采集:這一類 Exporter 直接內置了對 Prometheus 監控的支持,比如 cAdvisor,Kubernetes,Etcd等,都直接內置了用于向 Prometheus 暴露監控數據的端點。
- 間接采集:原有監控目標并無直接支持 Prometheus,因此需要通過 Prometheus 提供的 Client Library 編寫該監控目標的監控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter等。
- AlertManager:在 Prometheus Server 中支持基于 Prom QL 創建告警規則,如果滿足 Prom QL 定義的規則,則會產生一條告警。常見的接收方式有:電子郵件,webhook 等。
- PushGateway:Prometheus 數據采集基于 Prometheus Server 從 Exporter pull 數據,因此 當網絡環境不允許 Prometheus Server和 Exporter 進行通信時,可以使用 PushGateway 來進行中轉。
Prometheus 的工作流程:
安裝prometheus監控服務
環境準備
| server | prometheus+grafana | 192.168.2.10 |
| client1 | mysql+client | 192.168.2.11 |
| client2 | client | 192.168.2.12 |
官網下載
1.安裝Go語言環境 [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,配置監控linux主機和mysq|數據庫,配置文件為yml語法.注意縮進對齊 [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 # 默認15秒到目標處抓取數據 job_name #這個配置是表示在這個配置內的時間序例,每一條都會自動添加上這個{job_name:"prometheus"}的標簽在最后進行配置: scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: 'prometheus' # 每一個 job_name 都是一個監控項,這里代表監控操作系統狀態static_configs:- targets: ['localhost:9090']labels:instance: server- job_name: 'linux'static_configs:- targets: ['192.168.2.11:9100','192.168.2.12:9100'] # 被監控主機 IP 地址和端口labels:instance: client # 實例名稱,在 grafana 中表示對應的主機- job_name: 'mysql' # 監控 mysql 數據庫狀態static_configs:- targets: ['192.168.2.11:9104'] # 數據庫Ip地址+端口labels:intance: client # 實例名稱,在 grafana 中表示對應的主機4.后臺啟動 [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.瀏覽器訪問 使用瀏覽器打開該機器的 http://部署機器:9090 ,或者 http://localhost:9090/ 即可以看到Prometheus的graph頁面
- 測試訪問,由于此時沒有配置被監控主機,所以不是up的狀態
啟動用于采集 Linux 系統和 mysql 服務狀態的 exporter 服務
prometheus常見的exporter及作用:
(1). node. exporter 用于監控操作系統的性能和運行狀態
(2). mysqld. exporter用于監控mysql服務
(3). snmp. exporter 用于監控網絡設備
更多exporter可在官網下載官方傳送門—
總結prometheus使用方法:
1.想監控操作系統,只需要一步:
在被監控系統上安裝node. exporter并啟動就ok了
2.想監控操mysql數據庫,只需要兩步:
(1).創建一個mysql用戶
(2).安裝mysqld. exporter 并啟動
注意:prometheus里面的時區是GMT,圖形橫軸顯示的時間與后面的grafana顯示時間不同,我們用的主機時區是CST,大家可以自己了解這個時區間的關系
Prometheus自帶的圖形并不夠強大,于是我們可以使用Grafana作為Prometheus的Dashboard。
使用 Grafana 可視化工具美化監控數據
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端口,登錄,默認賬號密碼admin/admin
登錄執行設置數據源
進入配置頁面
點擊保存并測試,如果出現如下內容則代表成功
配置完成后可以把默認的dashboards導入
這時候你再進入到datasource可以看到剛配置的數據源;
點擊Prometheus 2.0 Stats:
將監控 Linux 系統和 mysql 服務運行狀態的 web 儀表盤插件導入 grafana
點擊導入,粘貼ID
成功!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的搭建prometheus+grafana监控系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识puppet!
- 下一篇: 理解cookie和session