Docker系列——Grafana+Prometheus+Node-exporter服務器監控平台(一)


在最近的博文中,都是介紹監控平台的搭建,其實並不難,主要是需要自己動手操作,實踐一番就會了。

有天在想,雲上的服務器,是不是也可以搭建一個監控平台,所以就搗鼓了一下,不過遺憾的是,使用阿里雲開源的插件-CMS Grafana Service沒能成功,嘗試了許久都沒能成功。

所以就改用Prometheus了,一步步實踐,配置成功,小有收獲吧,來分享下每天點滴。

Node-exporter

Node-exporter簡介

在配置環境前,可能會有疑問,為什么需要?所以就先來講下其作用。

在Prometheus的架構設計中,Prometheus Server並不直接服務監控特定的目標,其主要任務負責數據的收集,存儲並且對外提供數據查詢支持。因此為了能夠監控到某些東西,如主機的CPU使用率,我們需要使用到Exporter。Prometheus周期性的從Exporter暴露的HTTP服務地址(通常是/metrics)拉取監控樣本數據。

Node-exporter 與之前博文中的 Jmeter 是一個作用,就是用於機器系統數據收集。我們在展示數據時,數據肯定是有來源的,監控系統,監控的數據有:CPU、內存、磁盤、I/O等信息。所以就需要部署Node-exporter,我們一起來看下部署過程。

環境部署

拉取鏡像

使用命令 docker pull prom/node-exporter 拉取鏡像

啟動服務

使用命令如下命令啟動即可:

docker run -d -p 9100:9100 \
 -v "/proc:/host/proc:ro" \
 -v "/sys:/host/sys:ro" \
 -v "/:/rootfs:ro" \
 --net="host" \
 prom/node-exporter

我們可以查看端口,是否有啟動成功,命令 netstat -anpt

或者使用命令 docker ps -a 查看容器是否啟用成功
確認啟動成功之后,可以通過url訪問查看,服務器ip+9100;這里需要注意的是,服務器端口有安全策略,需要手動開啟,開啟后才能正常訪問,如下所示:

我們可以查看到具體的監聽信息,如下所示:

Prometheus

Prometheus簡介

Prometheus(普羅米修斯)是一套開源的監控&報警&時間序列數據庫的組合,起始是由SoundCloud公司開發的。隨着發展,越來越多公司和組織接受采用Prometheus,社會也十分活躍,他們便將它獨立成開源項目,並且有公司來運作。Google SRE的書內也曾提到跟他們BorgMon監控系統相似的實現是Prometheus。現在最常見的Kubernetes容器管理系統中,通常會搭配Prometheus進行監控。

Prometheus基本原理是通過HTTP協議周期性抓取被監控組件的狀態,這樣做的好處是任意組件只要提供HTTP接口就可以接入監控系統,不需要任何SDK或者其他的集成過程。這樣做非常適合虛擬化環境比如VM或者Docker 。

Prometheus應該是為數不多的適合Docker、Mesos、Kubernetes環境的監控系統之一。

輸出被監控組件信息的HTTP接口被叫做exporter 。目前互聯網公司常用的組件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系統信息 (包括磁盤、內存、CPU、網絡等等)。

與其他監控系統相比,Prometheus的主要特點是:

  • 易於管理
  • 監控服務的內部運行狀態
  • 強大的數據模型
  • 強大的查詢語言PromQL
  • 高效
  • 可擴展
  • 易於集成
  • 可視化
  • 開放性

Prometheus架構

架構圖如下所示:

從架構圖中,可以看出有幾大核心組件,一起來看下。

Prometheus Server

Prometheus Server是Prometheus組件中的核心部分,負責實現對監控數據的獲取,存儲以及查詢。 Prometheus Server可以通過靜態配置管理監控目標,也可以配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據。其次Prometheus Server需要對采集到的監控數據進行存儲,Prometheus Server本身就是一個時序數據庫,將采集到的監控數據按照時間序列的方式存儲在本地磁盤當中。最后Prometheus Server對外提供了自定義的PromQL語言,實現對數據的查詢以及分析。

Prometheus Server內置的Express Browser UI,通過這個UI可以直接通過PromQL實現數據的查詢以及可視化。

Prometheus Server的聯邦集群能力可以使其從其他的Prometheus Server實例中獲取數據,因此在大規模監控的情況下,可以通過聯邦集群以及功能分區的方式對Prometheus Server進行擴展。

Exporters

Exporter將監控數據采集的端點通過HTTP服務的形式暴露給Prometheus Server,Prometheus Server通過訪問該Exporter提供的Endpoint端點,即可獲取到需要采集的監控數據。

一般來說可以將Exporter分為2類:

  • 直接采集:這一類Exporter直接內置了對Prometheus監控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接內置了用於向Prometheus暴露監控數據的端點。
  • 間接采集:間接采集,原有監控目標並不直接支持Prometheus,因此我們需要通過Prometheus提供的Client Library編寫該監控目標的監控采集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。

AlertManager

在Prometheus Server中支持基於PromQL創建告警規則,如果滿足PromQL定義的規則,則會產生一條告警,而告警的后續處理流程則由AlertManager進行管理。在AlertManager中我們可以與郵件,Slack等等內置的通知方式進行集成,也可以通過Webhook自定義告警處理方式。AlertManager即Prometheus體系中的告警處理中心。

PushGateway

由於Prometheus數據采集基於Pull模型進行設計,因此在網絡環境的配置上必須要讓Prometheus Server能夠直接與Exporter進行通信。 當這種網絡需求無法直接滿足時,就可以利用PushGateway來進行中轉。可以通過PushGateway將內部網絡的監控數據主動Push到Gateway當中。而Prometheus Server則可以采用同樣Pull的方式從PushGateway中獲取到監控數據。

環境部署

拉取鏡像

使用命令 docker pull prom/prometheus 即可。

• 添加配置文件
使用命令 mkdir -p /opt/prometheus && cd /opt/prometheus 新建文件夾,並進入到該目錄下。新建配置文件的操作命令 vim prometheus.yml ,添加如下內容:

global:
  scrape_interval:     60s
  evaluation_interval: 60s
             
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['自己ip:9090']
        labels:
          instance: prometheus
                                                                       
  - job_name: linux
    static_configs:
      - targets: ['自己ip:9100']
        labels:
          instance: ip

• 啟動服務
使用如下命令,將配置文件掛載到容器中:

docker run  -d \
  -p 9090:9090 \
  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
  prom/prometheus

啟動后,可以檢查是否啟動成功,查看端口或者查看容器運行情況。

我們可以通過web頁面查看,服務運行狀態,訪問地址:服務器ip+端口/targets,如下所示:

Grafana配置

在之前的博文中,已經詳細介紹過Grafana了,所以這里就不細說了,詳細可以看之前的博文,Docker系列——InfluxDB+Grafana+Jmeter性能監控平台搭建(三)

添加數據源

在使用過程中,稍有區別就是需要添加新的數據源,因為我們現在使用的是 Prometheus ,操作如下:

訪問grafana:http://ip:3000/login ,添加即可,操作如下:

在這里可以配置數據源名稱,配置數據源的地址,地址填啟動的prometheus地址即可。

引用模板

接下來就是添加模板,模板直接按id導入: 8919 ,可以配置監控面板的名稱和引用源,添加即可。引用模板就是讓數據展示的更美觀。其他面板,也可以在Grafana官網去搜索,里面還有其他的模板數據。

數據展示

配置完成后,查看面板數據如下:

我們從圖中看出,監控面板的數據很齊全,各種指標都有展示,還是挺不錯的。監控服務器就完成了,操作簡單吧,有資源的,可以手動操作一下,很容易上手的哦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM