監控工具之Prometheus普羅米修斯,搭建和使用

2020-12-12 挨踢程序猿

最近準備把我前段時間研究的多套常見的監控工具整理出來,分享給大家。先整理一篇Prometheus的,希望能幫助到需要的朋友。

一、簡介

1.1 prometheus監控框架工具介紹

prometheus是由谷歌研發的一款開源的監控軟體,它通過安裝在遠程機器上的exporter,通過HTTP協議從遠程的機器收集數據並存儲在本地的時序資料庫上。目前已經被雲計算本地基金會託管,是繼k8s託管的第二個項目,號稱是下一代監控。

1.2 優缺點

Prometheus架構圖

prometheus存儲的是時序數據(時序列數據由metric名和一組key/value組成),即按相同時序(相同名稱和標籤),以時間維度存儲連續的數據的集合。

metric名表示metric的功能,如http_request_total。時序的名字由 ASCII 字符,數字,下劃線,以及冒號組成,它必須滿足正則表達式 [a-zA-Z_:][a-zA-Z0-9_:]*, 其名字應該具有語義化,一般表示一個可以度量的指標,例如 http_requests_total, 可以表示 http 請求的總數。

Prometheus使用在多維度上靈活的查詢語言(PromQl)。PromQL (Prometheus Query Language) 是 Prometheus 自己開發的數據查詢 DSL 語言。

Prometheus具有易管理、易集成、可擴展、支持自動發信等優勢。

同時Prometheus後端用 golang語言開發,前端是 Grafana,二次開發需要掌握相關語言。

Prometheus和其他監控系統橫向比較

1.3 支持類型

Prometheus為了支持各種中間件以及第三方的監控提供了exporter,大家可以把它理解成監控適配器,將不同指標類型和格式的數據統一轉化為Prometheus能夠識別的指標類型。

例如Node exporter主要通過讀取Linux的/proc以及/sys目錄下的系統文件獲取作業系統運行狀態,reids exporter通過Reids命令行獲取指標,mysql exporter通過讀取資料庫監控表獲取MySQL的性能數據。他們將這些異構的數據轉化為標準的Prometheus格式,並提供HTTP查詢接口。

Prometheus各類exporter組件

Prometheus的流行和Kubernetes密不可分,支持對Kubernetes、容器、OpenStack的監控。

Prometheus和k8s的結合

二、部署過程

2.1 安裝包下載

1.安裝包github下載

https://prometheus.io/download/

Prometheus組件包

Github下載各個組件包,通過命令行方式安裝配置。

2.容器鏡像下載

https://hub.docker.com/u/prom

容器鏡像在線拉取

docker pull prom/prometheus

2.2 prometheus安裝部署

1.上傳已下載的各組件安裝包

已下載的各組件

2.部署到/usr/local/目錄

tar -zxvf prometheus-2.18.1.linux-amd64.tar.gz -C /usr/local/

解壓部署

3.修改文件夾名稱

mv prometheus-2.18.1.linux-amd64 prometheus

mv命令修改文件夾名稱

4.驗證,查看版本號

cd prometheus/

./prometheus --version

5.修改prometheus.yml配置文件vi prometheus.yml,配置相關監控項

6.設置prometheus用戶

groupadd prometheus

useradd -g prometheus -s /sbin/nologin prometheus

7.給prometheus用戶賦權

cd ~

chown -R prometheus:prometheus /usr/local/prometheus/

8.創建prometheus運行數據目錄

mkdir -p /var/lib/prometheus

chown -R prometheus:prometheus /var/lib/prometheus/

9.設置開機啟動

touch /usr/lib/systemd/system/prometheus.service

chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service

vi /usr/lib/systemd/system/prometheus.service

添加下面內容,設置prometheus.service

[Unit]

Description=Prometheus

Documentation=https://prometheus.io/

[Service]

# Type設置為notify時,服務會不斷重啟

Type=simple

User=prometheus

# --storage.tsdb.path是可選項,默認數據目錄在運行目錄的./dada目錄中

ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/Prometheus --web.listen-address=:9090

Restart=on-failure

[Install]

WantedBy=multi-user.target

10.設置iptables(有防火牆要求的設置)

vi /etc/sysconfig/iptables

配置下面這段話:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT

service iptables restart

2.3 prometheus部署完成

1.啟動prometheus,並查看狀態

systemctl enable prometheus

systemctl start prometheus

systemctl Prometheus status

netstat -tunlp | grep 9090

2.查看prometheus自帶的web界面

http://192.168.43.221:9090

在Status菜單下,Configuration,Rule,Targets等,Statu-->Configuration展示prometheus.yml的配置

在Statu-->Targets展示監控具體的監控目標,這裡監控目標「linux」暫未設置node_exporter,所以沒有數據

3.查看數據抓取情況

訪問http://192.168.43.221:9090/metrics,查看exporter具體能抓到的數據

2.4 grafana安裝部署

1. grafana下載

登陸https://grafana.com/grafana/download官網,下載安裝包

wget https://dl.grafana.com/oss/release/grafana-7.0.1-1.x86_64.rpm --no-check-certificate

2. grafana 安裝

yum install grafana-7.0.1-1.x86_64.rpm

3. 修改配置文件

配置文件位於/etc/grafana/grafana.ini,這裡暫時保持默認

4.設置開機啟動

systemctl enable grafana-server

systemctl start grafana-server

5.檢查服務啟動狀態

service grafana-server status

6.設置iptables(需要防火牆的設置)

vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT

service iptables restart

7.登陸grafana界面

瀏覽器訪問http://192.168.43.221:3000,默認登陸帳號密碼admin/admin

8.添加數據源

點擊設置按鈕,通過「Add data source」添加數據源

根據配置項添加prometheus數據源相關配置

三 使用方法

3.1 node_exporter方式監控伺服器

1. 部署到/usr/local/目錄

tar -zxvf node_exporter-1.0.0.linux-amd64.tar.gz -C /usr/local/

cd /usr/local/

mv node_exporter-1.0.0.linux-amd64 node_exporter

2. 設置用戶

groupadd prometheus

useradd -g prometheus -s /sbin/nologin prometheus

chown -R prometheus:prometheus /usr/local/node_exporter/

3. 設置開機啟動

vi /usr/lib/systemd/system/node_exporter.service

輸入下面內容,配置node_exporter.service

[Unit]

Description=node_exporter

Documentation=https://prometheus.io/

[Service]

Type=simple

User=prometheus

ExecStart=/usr/local/node_exporter/node_exporter

Restart=on-failure

[Install]

WantedBy=multi-user.target

4. 啟動和檢查服務

systemctl enable node_exporter

systemctl start node_exporter

service node_exporter status

5. 設置iptables(需要用到防火牆的配置)

vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 9100 -j ACCEPT

service iptables restart

6.檢查監控界面

可見node1主機已經可被監控

7.下載node_exporter監控的dashboard

從官網https://grafana.com/dashboards/下載需要的dashboard到本地

8.導入dashboard

通過import入口,上傳導入已下載的dashboard

9.查看grafana監控展示情況

OK,搞定

相關焦點

  • Prometheus(普羅米修斯)——適合k8s和docker的監控系統
    介紹Prometheus(普羅米修斯)是一套開源的監控&報警&時間序列資料庫的組合.由SoundCloud公司開發。Prometheus基本原理是通過HTTP協議周期性抓取被監控組件的狀態,這樣做的好處是任意組件只要提供HTTP接口就可以接入監控系統,不需要任何SDK或者其他的集成過程。這樣做非常適合虛擬化環境比如VM或者Docker 。Prometheus應該是為數不多的適合Docker、Mesos、Kubernetes環境的監控系統之一。
  • CentOS7下簡單搭建Prometheus+Grafana監控系統
    下面介紹CentOS7下簡單搭建Prometheus+Grafana監控系統1、先官網下載安裝包https://prometheus.io/download/1)prometheus這是再登錄prometheus 的Web界面可以看到新增的這個Targethttp://192.168.31.80:9090/targets4、安裝Grafana圖形化工具包缺少組件包的情況
  • Prometheus Operator 監控ETCD集群
    Prometheus Opeartor 監控ETCD集群Kubernetes除了prometheus operator自帶的資源對象,節點以及組件監控,有的時候實際的業務場景需要我們自定義監控項確保有metric數據
  • 使用 Thanos 實現 Prometheus 的高可用
    AlertManager 來進行報警,這些工具結合起來已經可以幫助我們搭建一套比較完整的監控報警系統了,但是也僅僅局限於測試環境,對於生產環境來說則還有許多需要改進的地方,其中一個非常重要的就是 Prometheus 的高可用。
  • 聊聊下一代監控:Prometheus
    那麼 Prometheus 和這些監控系統有啥異同呢?我們在這就介紹下 Zabbix 這個監控系統。Zabbix 由於使用了關係型數據存儲時序數據,所以在監控大規模集群時常常在數據存儲方面捉襟見肘。為此 Zabbix 4.2 版本後也開始支持時序數據存儲,不過目前還不成熟。Open-Falcon 是小米開源的企業級監控工具,用 Go 語言開發而成,包括小米、滴滴、美團等在內的網際網路公司都在使用它,是一款靈活、可擴展並且高性能的監控方案,在這裡就不多做介紹了。
  • Prometheus+Grafana+Alertmanager實現告警推送教程圖文詳解
    作為新一代的監控框架,Prometheus 具有以下特點:強大的多維度數據模型:時間序列數據通過 metric 名和鍵值對來區分。所有的 metrics 都可以設置任意的多維標籤。數據模型更隨意,不需要刻意設置為以點分隔的字符串。可以對數據模型進行聚合,切割和切片操作。支持雙精度浮點類型,標籤可以設為全unicode。
  • Prometheus+Grafana+Alertmanager實現告警推送教程——圖文詳解
    Prometheus Server可以通過靜態配置管理監控目標,也可以配合使用Service Discovery的方式動態管理監控目標,並從這些監控目標中獲取數據。其次Prometheus Server需要對採集到的監控數據進行存儲,Prometheus Server本身就是一個時序資料庫,將採集到的監控數據按照時間序列的方式存儲在本地磁碟當中。
  • 小白也能輕鬆上手的Prometheus教程
    稍後你將了解我們如何知道使用那些特定的埠和組件tag。我們來詳細看看prometheus-server和prometheus-alertmanager。我們從第一個開始並理解其配置,我們如何編輯它並了解服務在哪個埠上運行。點擊垂直省略號菜單按鈕並點擊View/Edit YAML。
  • 完美的分布式監控系統——普羅米修斯
    DevOps工程師或SRE工程師,可能都知道Prometheus普羅米修斯。Prometheus於2012年由SoundCloud創建,目前已經已發展為最熱門的分布式監控系統。Prometheus完全開源的,被很多雲廠商(架構)內置,在這些廠商(架構)中,可以簡單部署Prometheus,用來監控整個雲基礎架構設施。
  • 使用ssl_exporter監控K8S集群證書
    使用kubeadm搭建的集群默認證書有效期是1年,續費證書其實是一件很快的事情。但是就怕出事了才發現,畢竟作為專業搬磚工程師,每天都很忙的。鑑於此,監控集群證書有效期是一件不得不做的事情。Prometheus作為雲原生領域的王者,如果能用它來監控證書有效期並能及時告警,那就再好不過了。ssl_exporter就是來做這個事情的。ssh_exporter是一個Prometheus Exporter能提供多種針對 SSL 的檢測手段,包括:https 證書生效/失效時間、文件證書生效/失效時間,OCSP 等相關指標。
  • 選型必看:監控K8S和Docker的熱門開源工具
    本文將詳細講解六個最熱門的開源工具,專門用於容器化服務的監控和分析。Prometheus當討論開源監控解決方案時,首先想到的就是Prometheus。它在開發社區中非常流行,是CNCF的畢業項目。Prometheus最初由SoundCloud創建並開放原始碼。
  • Docker 監控實戰
    了解了一下現有的 Docker 相關監測 App 和服務,包括簡單的開源工具和複雜的企業整體解決方案,下面列舉其中的幾種作為參考:1. cAdvisor谷歌的 container introspection 解決方案是 cAdvisor,這是一個 Docker 容器內封裝的工具,能夠採集、處理和導出運行中的容器的數據。
  • 報警神器 AlertManager 的使用
    上節課我們和大家一起學習了 Grafana 的使用,也測試了 Grafana 的報警功能,但是 Grafana 的報警功能目前還比較弱
  • open-monitor 1.7.0 版本發布,基於 Prometheus 的分布式監控平臺
    open-monitor是一套基於Prometheus的分布式監控平臺,適用於wecube,WeCube通過監控插件來對資源以及應用的監控及告警
  • 7款優秀的Docker容器監控工具
    1、cAdvisorcAdvisor是監控Docker容器的開源工具。但與下文提到的基於CLI的Docker Stats相比,cAdvisor還提供用於查看API信息的GUI。在cAdvisor中,多個容器應用程式使用的共享資源的隔離基於lmctfy的API。
  • 人間的普羅米修斯
    據神話傳說,泰坦十二神的伊阿佩託斯與海洋女仙克呂墨涅生下了普羅米修斯。這位號稱「深謀遠慮」的古希臘神仙,估計是一位雕塑藝術家,因為他的傑作就是用黏土製做「山寨神仙」——人類。後來智慧女神雅典娜賦予了人類智慧和靈魂,希望他們能和神靈一起共享這個美麗世界。眾神之王宙斯顯然不喜歡這個創意,他試圖壓制人類的發展,其中最狠的一招是不給人類火種。
  • 國外十大流行的伺服器監控工具(圖)
    【IT168 應用技巧】今天,smashinghub的站長又為我們介紹了他認為最好的十款伺服器監控工具,接下來讓我們一一看來:  博主通常比較偏愛前端工具,而開發者和設計師則比較關注對站點的處理他們必須從後端確保那個站點的腳本可以正常運行。有時,出現問題之後很難發現。
  • 微信在線——【四年級語文微課堂】《普羅米修斯》
    2、關注細節,想像畫面體會神話神奇之處。3、體會普羅米修斯的勇敢和不屈不撓的鬥爭精神和獻身精神。教學過程:環節一:夯實基礎,回顧課文內容。1、課前談話,激發興趣2、導入新課,鞏固舊知(1)檢測上節課學習情況,夯實基礎。(2)出示所學文章,回憶講故事的方法。