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

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