Promethus普羅米修斯介紹及Linux系統(tǒng)下的安裝與配置

1. 普羅米修斯概述
- Prometheus(是由go語言(golang)開發(fā))是一套開源的監(jiān)控&報警&時間序列數(shù) 據(jù)庫的組合。適合監(jiān)控docker容器。
- Prometheus是最初在SoundCloud上構建的開源系統(tǒng)監(jiān)視和警報工具包 。自2012年成立以來,許多公司和組織都采用了Prometheus,該項目擁有非常活躍的開發(fā)人員和用戶社區(qū)?,F(xiàn)在,它是一個獨立的開源項目,并且獨立于任何公司進行維護。為了強調(diào)這一點并闡明項目的治理結(jié)構,Prometheus 于2016年加入了 Cloud Native Computing Foundation,這是繼Kubernetes之后的第二個托管項目。
- Prometheus是一個時間序列數(shù)據(jù)庫。但是,它不僅僅是一個時間序列數(shù)據(jù)庫。
- 它涵蓋了可以綁定的整個生態(tài)系統(tǒng)工具集及其功能。
- Prometheus主要用于對基礎設施的監(jiān)控。包括服務器,數(shù)據(jù)庫,VPS,幾乎所有東西都可以通過Prometheus進行監(jiān)控。Prometheus希望通過對Prometheus配置中定義的某些端點執(zhí)行的HTTP調(diào)用來檢索度量標準。
Prometheus 的優(yōu)點
- 非常少的外部依賴,安裝使用超簡單
- 已經(jīng)有非常多的系統(tǒng)集成 例如:docker HAProxy Nginx JMX等等
- 服務自動化發(fā)現(xiàn)
- 直接集成到代碼
- 設計思想是按照分布式、微服務架構來實現(xiàn)的
- 可以采用 push gateway 的方式把時間序列數(shù)據(jù)推送至 Prometheus server 端
- 可以通過服務發(fā)現(xiàn)或者靜態(tài)配置去獲取監(jiān)控的 targets。
- 有多種可視化圖形界面。
- 易于伸縮。
Prometheus 的特性
- 一個多維數(shù)據(jù)模型,其中包含通過度量標準名稱和鍵/值對標識的時間序列數(shù)據(jù)
- PromQL,一種靈活的查詢語言 ,可利用此維度
- 不依賴分布式存儲;單服務器節(jié)點是自治的
- 時間序列收集通過HTTP上的拉模型進行
- 通過中間網(wǎng)關支持推送時間序列通過服務發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)目標
- 多種圖形和儀表板支持模式
2. 時間序列數(shù)據(jù)
1、什么是序列數(shù)據(jù)
時間序列數(shù)據(jù)(TimeSeries Data) : 按照時間順序記錄系統(tǒng)、設備狀態(tài)變化 的數(shù)據(jù)被稱為時序數(shù)據(jù)。
應用的場景很多, 如:
- 無人駕駛車輛運行中要記錄的經(jīng)度,緯度,速度,方向,旁邊物體的距 離等等。每時每刻都要將數(shù)據(jù)記錄下來做分析。
- 某一個地區(qū)的各車輛的行駛軌跡數(shù)據(jù)
- 傳統(tǒng)證券行業(yè)實時交易數(shù)據(jù)
- 實時運維監(jiān)控數(shù)據(jù)等
2 時間序列數(shù)據(jù)特點
性能好
關系型數(shù)據(jù)庫對于大規(guī)模數(shù)據(jù)的處理性能糟糕。NOSQL可以比較好的處理 大規(guī)模數(shù)據(jù),讓依然比不上時間序列數(shù)據(jù)庫。
存儲成本低
高效的壓縮算法,節(jié)省存儲空間,有效降低IO
Prometheus有著非常高效的時間序列數(shù)據(jù)存儲方法,每個采樣數(shù)據(jù)僅僅占 用3.5byte左右空間,上百萬條時間序列,30秒間隔,保留60天,大概花了 200多G(來自官方數(shù)據(jù))
3. Prometheus原理架構圖
下圖說明了Prometheus的體系結(jié)構及其某些生態(tài)系統(tǒng)組件:
- prometheus直接或通過中介推送網(wǎng)關從已檢測作業(yè)中刪除指標,以處理短暫的作業(yè)。它在本地存儲所有報廢的樣本,并對這些數(shù)據(jù)運行規(guī)則,以匯總和記錄現(xiàn)有數(shù)據(jù)中的新時間序列,或生成警報。Grafana或其他API使用者可以用來可視化收集的數(shù)據(jù)。
- Prometheus可以很好地記錄任何純數(shù)字時間序列。它既適用于以機器為中心的監(jiān)視,也適用于高度動態(tài)的面向服務的體系結(jié)構的監(jiān)視。在微服務世界中,它對多維數(shù)據(jù)收集和查詢的支持是一種特別的優(yōu)勢。
- Prometheus的設計旨在提高可靠性,使其成為中斷期間要使用的系統(tǒng),以使您能夠快速診斷問題。每個Prometheus服務器都是獨立的,而不依賴于網(wǎng)絡存儲或其他遠程服務。當基礎結(jié)構的其他部分損壞時,您可以依靠它,并且無需設置廣泛的基礎結(jié)構即可使用它。
- 普羅米修斯重視可靠性。即使在故障情況下,您始終可以查看有關系統(tǒng)的可用統(tǒng)計信息。如果您需要100%的準確性(例如按請求計費),則Prometheus并不是一個好的選擇,因為所收集的數(shù)據(jù)可能不夠詳細和完整。在這種情況下,最好使用其他系統(tǒng)來收集和分析數(shù)據(jù)以進行計費,并使用Prometheus進行其余的監(jiān)視。
4. 部署Prometheus
實驗環(huán)境:
主機名 | IP | 服務 |
---|---|---|
node2 | 192.168.200.154 | prometheus |
node1 | 192.168.200.144 | node_exporter |
1 準備工作
下載最新版的服務端prometheus和客戶端node_exporter
服務端:https://prometheus.io/download/#prometheus
客戶端:https://prometheus.io/download/#node_exporter
2 下載軟件包
[root@node2 ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz
3 解壓縮包
[root@node2 ~]# tar xf prometheus-2.31.1.linux-amd64.tar.gz -C /usr/local/ [root@node2 src]# cd /usr/local/ [root@node2 local]# ls bin games lib libexec redis share etc include lib64 prometheus-2.31.1.linux-amd64 sbin src [root@node2 local]# mv prometheus-2.31.1.linux-amd64/ prometheus
4 運行Prometheus server
[root@node2 local]# cd prometheus/ [root@node2 prometheus]# ./prometheus --config.file=prometheus.yml
5 配置Prometheus
在Prometheus.yml中有配置文件,我們可以對其進行配置,當然第一次安裝也可以不用配置;
root@node2 prometheus]# vim /usr/local/prometheus/prometheus.yml #全局配置 global: scrape_interval: 15s #每隔15秒向目標抓取一次數(shù),默認為一分鐘 evaluation_interval: 15s #每隔15秒執(zhí)行一次告警規(guī)則,默認為一分鐘 # scrape_timeout: 600s #抓取數(shù)據(jù)的超時時間,默認為10s #告警配置 alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 #alertmanager所部署機器的ip和端口 #定義告警規(guī)則和閾值的yml文件 rule_files: # - "first_rules.yml" # - "second_rules.yml" #收集數(shù)據(jù)配置 #以下是Prometheus自身的一個配置. scrape_configs: #這個配置是表示在這個配置內(nèi)的時間序例,每一條都會自動添加上這個{job_name:"prometheus"}的標簽. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: #靜態(tài)配置 - targets: ["localhost:9090"]
其配置大致可分為四部分:
global
:全局配置,其中scrape_interval表示抓取一次數(shù)據(jù)的間隔時間,evaluation_interval表示進行告警規(guī)則檢測的間隔時間;
alerting
:告警管理器(Alertmanager)的配置,目前還沒有安裝Alertmanager;
rule_files:告警規(guī)則有哪些;
scrape_configs
:抓取監(jiān)控信息的目標。一個job_name就是一個目標,其targets就是采集信息的IP和端口。這里默認監(jiān)控了Prometheus自己,可以通過修改這里來修改Prometheus的監(jiān)控端口。Prometheus的每個exporter都會是一個目標,它們可以上報不同的監(jiān)控信息,比如機器狀態(tài),或者mysql性能等等,不同語言sdk也會是一個目標,它們會上報你自定義的業(yè)務監(jiān)控信息。
6 校驗配置文件
[root@node2 prometheus]# ./promtool check config ./prometheus.yml Checking ./prometheus.yml SUCCESS: 0 rule files found
7 配置service啟動文件
[root@node2 prometheus]# cat > /usr/lib/systemd/system/prometheus.service <<EOF [Unit] Description=The Prometheus Server After=network.target [Service] Restart=on-failure ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml RestartSec=15s [Install] WantedBy=multi-user.target EOF [root@node2 prometheus]# systemctl daemon-reload [root@node2 prometheus]# systemctl restart prometheus [root@node2 local]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:6379 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:* LISTEN 0 128 *:9090 *:*
8啟動參數(shù)介紹
##啟動 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml & ##啟動參數(shù)介紹 --config.file #加載prometheus的配置文件 --web.listen-address #監(jiān)聽prometheus的web地址和端口 --web.enable-lifecycle #熱啟動參數(shù),可以在不中斷服務的情況下重啟加載配置文件 --storage.tsdb.retention #數(shù)據(jù)持久化的時間 --storage.tsdb.path #數(shù)據(jù)持久化的保存路徑
9訪問測試
輸入: “ip地址”+":9090" 在瀏覽器中進行訪問,如果出現(xiàn)可視化界面說明成功;
5. node_exporter部署
1 下載軟件包
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.0/node_exporter-1.3.0.linux-amd64.tar.gz
2 解壓軟件包
[root@node1 ~]# ls anaconda-ks.cfg node_exporter-1.3.0.linux-amd64.tar.gz [root@node1 ~]# tar xf node_exporter-1.3.0.linux-amd64.tar.gz -C /usr/local/ [root@node1 ~]# [root@node1 ~]# cd /usr/local/ [root@node1 local]# ls bin games lib libexec sbin src etc include lib64 node_exporter-1.3.0.linux-amd64 share [root@node1 local]# mv node_exporter-1.3.0.linux-amd64/ node_exporter [root@node1 local]#
3 啟動參數(shù)介紹
注意:相關啟動的參數(shù) --web.listen-address #node_expoetrt暴露的端口 --collector.systemd #從systemd中收集 --collector.systemd.unit-whitelist ##白名單,收集目標 ".+" #從systemd中循環(huán)正則匹配單元 "(docker|sshd|nginx).service" #白名單,收集目標,收集參數(shù)node_systemd_unit_state
4 配置service文件
[root@node1 local]# vi /usr/lib/systemd/system/node_exporter.service [unit] Description=The node_exporter Server After=network.target [Service] ExecStart=/usr/local/node_exporter/node_exporter Restart=on-failure RestartSec=15s SyslogIdentifier=node_exporter [Install] WantedBy=multi-user.target [root@node1 local]# systemctl daemon-reload [root@node1 local]# systemctl enable node_exporter [root@node1 local]# systemctl restart node_exporter Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /usr/lib/systemd/system/node_exporter.service. [root@node1 local]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:* LISTEN 0 128 *:9100 *:* [root@node1 local]#
5.在Prometheus主機上修改prometheus.yml配置文件
[root@node2 prometheus]# vim /usr/local/prometheus/prometheus.yml ...... 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: ["192.168.200.144:9100"] //此處指定客戶端ip和端口
6.訪問測試是否連接成功
使用Prometheus主機IP地址和端口號 http://192.168.200.154:9100/targets訪問
以上就是Promethus普羅米修斯介紹及Linux系統(tǒng)下的安裝與配置的詳細內(nèi)容,更多關于Promethus普羅米修斯的資料請關注腳本之家其它相關文章!
相關文章
- 今天小編為大家?guī)砹颂焯炜崤芾塾嫵缘?8個大熊頭任務完成攻略,感興趣的朋友們可以跟著小編去下文了解一下哦2014-08-14
華為mate7電信版什么時候出?華為新旗艦mate7電信版上市時間曝光
華為mate7電信版什么時候出?接下來小編就為大家介紹華為新旗艦mate7電信版上市時間及其相關內(nèi)容,感興趣的朋友可以看一下2014-08-20- Python20.Dll2014-09-18
- 魔獸世界6.0阿斯蘭戰(zhàn)場新增物品2014-07-20
- nubia z7 mini怎么買?在哪里購買?想知道的朋友就看看本篇文章吧2014-07-17
- 盛大下載器是一個為1.2億盛大用戶量身打造,專注于提供游戲下載和自動更新游戲服務,是您游戲生活安全可靠,貼心放心的好幫手2014-06-29