一 Prometheus完全筆記
Prometheus 是一個開源監控系統它前身是 SoundCloud的告警工具包。從 2012 年開始許多公司和組織開始使用 Prometheus。該項目的開發人員和用戶社區非常活躍越來越多的開發人員和用戶參與到該項目中。目前它是一個獨立的開源項目且不依賴於任何公司。為了強調這點和明確該項目治理結構Prometheus 在 2016 年繼Kurberntes 之后加入了 Cloud Native Computing Foundation。
1.1 Prometheus核心概念
Prometheus 是一個開源的服務監控系統和時間序列數據庫,Promietheus從根本上存儲的所有數據都是時間序列數據Time Serie Data簡稱時序數據.
1.2 Prometheus運行流程
Prometheus架構圖
Prometheus根據配置定時去拉取各個節點的數據,默認使用的方式是pull,也可以使用pushgateway提供的push方式獲取各個監控節點的數據。Prometheus將獲取到的數據存入TSDB,一款時序型數據庫。此時prometheus已經獲取到了監控數據,可以使用內置的PromQL進行查詢。它的報警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和發送報警的一個組件。prometheus原生的圖標功能過於簡單,可將prometheus數據接入grafana,由grafana進行統一管理。
二 Grafana概念
Grafana是一個跨平台的開源的度量分析和可視化工具,可以通過將采集的數據查詢然后可視化的展示,並及時通知。它主要有以下六大特點:
1、展示方式:快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標和日志,官方庫中具有豐富的儀表盤插件,比如熱圖、折線圖、圖表等多種展示方式;
2、數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算並發送通知,在數據達到閾值時通過Slack、PagerDuty等獲得通知;
4、混合展示:在同一圖表中混合使用不同的數據源,可以基於每個查詢指定數據源,甚至自定義數據源;
5、注釋:使用來自不同數據源的豐富事件注釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記;
6、過濾器:Ad-hoc過濾器允許動態創建新的鍵/值過濾器,這些過濾器會自動應用於使用該數據源的所有查詢
官網地址:Grafana
官方文檔:Grafana文檔
理論性的東西不說太多了,下面開始安裝部署,這里我們使用windows docker來安裝Prometheus和Grafana。
1.拉取鏡像
docker pull prom/prometheus
docker pull grafana/grafana
2.配置Prometheus運行所需要的的配置文件,如下
# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] - job_name: 'processmetrice' metrics_path: '/metrics' static_configs: - targets: ['127.0.0.1:8081']
配置文件最后的- job_name下面的metrics_path路徑代表獲取時序話數據的路徑,static_configs代表將要監控的服務ip和端口號,如上所標識的接口為http://127.0.0.1:8081/metrics,默認的scheme為http。
3.使用容器啟動Prometheus
docker run -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus (注意這里 -v掛載的內容,如果是windows系統,則冒號左邊的路徑為實際的prometheus.yml的存放路徑,這里代表將配置文件掛載到本地的H:\prometheus路徑下,只需要修改本地的配置文件重啟容器即可生效,如 docker run -d -p 9090:9090 -v H:\prometheus\prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus)
4.使用容器啟用Grafana
docker run -d -p 3000:3000 --name=grafana -v /opt/grafana-storage:/var/lib/grafana grafana/grafana
(這里同理,如果是windows docker安裝,則以實際的物理路徑為准)
5.本地打開9090端口,http://127.0.0.1:9090,在菜單欄中打開status/Targets,如下圖所示
可以看到有相關記錄,注意我這里在prometheus.yml中配置的地址是IPV4地址,也可以是127.0.0.1,
6.接着,訪問 3000 端口,打開 Grafana,初始賬號密碼都是 admin
7.配置Grafana
7.1 首先我們要為 Grafana 獲取 Prometheus 中的監控數據,我們要添加一個數據源,選擇工具圖標 Configuration/Data Sources
在Plugins里面選擇Prometheus
填寫好HTTP/URL,點擊下面的Save按鈕
導入時序模化數據模板
接着下載筆者百度的時序化數據JSON模板,然后導入,既可看到監控界面。
最終效果圖: