「Prometheus」:修訂間差異

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋
本頁面具有訪問限制。如果您看見此訊息,這代表您沒有訪問本頁面的權限。
 
(未顯示同一使用者於中間所作的 22 次修訂)
行 1: 行 1:
'''Prometheus'''是一個[[TSDB]]。
'''Prometheus'''是一個[[TSDB]]。
== 概要 ==
Prometheus本身是一個TSDB(Time series database),會主動到目標機器上蒐集資料後寫入資料庫,另外Prometheus可以設定警示條件送進Alertmanager,由Alertmanager送到外部服務通知(像是[[Slack]],或是[[PagerDuty]])。


== 安裝 ==
== 安裝 ==


[[Ubuntu]] 18.04系統內的Prometheus太舊(2.1 ),加上沒有適合的PPA可以用,這邊使用官方的binary安裝:
[[Ubuntu]] 20.04系統內的Prometheus太舊(2.15 ),加上沒有適合的PPA可以用,這邊使用官方的binary安裝
 
<syntaxhighlight lang="bash">
export PROMETHEUS_VERSION=2.45.0; cd /tmp; wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz; tar xvf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz; cd prometheus-${PROMETHEUS_VERSION}.linux-amd64; sudo cp -f prometheus promtool /usr/bin; sudo mkdir /etc/prometheus; sudo cp prometheus.yml /etc/prometheus/; sudo cp -R consoles/ console_libraries/ /etc/prometheus/; sudo useradd -r -U prometheus; sudo mkdir /var/lib/prometheus; sudo chown prometheus:prometheus /var/lib/prometheus; echo -e "[Unit]\nDescription=Prometheus Time Series Collection and Processing Server\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=prometheus\nGroup=prometheus\nType=simple\nExecStart=/usr/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries\n\n[Install]\nWantedBy=multi-user.target" | sudo tee /lib/systemd/system/prometheus.service; sudo systemctl daemon-reload; sudo systemctl enable prometheus; sudo service prometheus start
</syntaxhighlight>
 
另外一起裝Alertmanager:
 
<syntaxhighlight lang="bash">
export ALERTMANAGER_VERSION=0.25.0; cd /tmp; wget https://github.com/prometheus/alertmanager/releases/download/v${ALERTMANAGER_VERSION}/alertmanager-${ALERTMANAGER_VERSION}.linux-amd64.tar.gz; tar xvf alertmanager-${ALERTMANAGER_VERSION}.linux-amd64.tar.gz; cd alertmanager-${ALERTMANAGER_VERSION}.linux-amd64; sudo cp -f alertmanager amtool /usr/bin; sudo mkdir /etc/amtool /var/lib/alertmanager; sudo chown prometheus:prometheus /var/lib/alertmanager; sudo cp alertmanager.yml /etc/amtool; echo -e "[Unit]\nDescription=Prometheus Alertmanager\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=prometheus\nGroup=prometheus\nType=simple\nExecStart=/usr/bin/alertmanager --config.file /etc/amtool/alertmanager.yml --storage.path /var/lib/alertmanager\n\n[Install]\nWantedBy=multi-user.target" | sudo tee /lib/systemd/system/alertmanager.service; sudo systemctl daemon-reload; sudo systemctl enable alertmanager; sudo service alertmanager start
</syntaxhighlight>
 
在[[Ubuntu]]內有內建blackbox-exporter,可以拿來監控HTTP或是SSH


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cd /tmp; wget https://github.com/prometheus/prometheus/releases/download/v2.22.0/prometheus-2.22.0.linux-amd64.tar.gz; tar zxvf prometheus-2.22.0.linux-amd64.tar.gz; cd prometheus-2.22.0.linux-amd64; sudo cp prometheus promtool /usr/bin; sudo mkdir /etc/prometheus; sudo cp prometheus.yml /etc/prometheus/; sudo cp -R consoles/ console_libraries/ /etc/prometheus/; sudo useradd -r -U prometheus; sudo mkdir /var/lib/prometheus; sudo chown prometheus:prometheus /var/lib/prometheus; echo -e "[Unit]\nDescription=Prometheus Time Series Collection and Processing Server\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=prometheus\nGroup=prometheus\n\nType=simple\n
sudo apt install -y prometheus-blackbox-exporter; sudo apt clean
ExecStart=/usr/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries\n\n[Install]\nWantedBy=multi-user.target" | sudo tee /lib/systemd/system/prometheus.service; sudo systemctl daemon-reload; sudo systemctl enable prometheus; sudo service prometheus start
</syntaxhighlight>
</syntaxhighlight>


行 13: 行 28:


 要注意官方安裝檔內的<code>prometheus.yml</code>中<code>scrape_interval</code>與<code>evaluation_interval</code>預設是<code>15s</code>(但不設定時預設是<code>1m</code>),正常情況下<code>5m</code>應該是夠用,可以考慮指定<code>5m</code>降低頻率。
 要注意官方安裝檔內的<code>prometheus.yml</code>中<code>scrape_interval</code>與<code>evaluation_interval</code>預設是<code>15s</code>(但不設定時預設是<code>1m</code>),正常情況下<code>5m</code>應該是夠用,可以考慮指定<code>5m</code>降低頻率。
== Query ==
基本上一定會有的:
<syntaxhighlight lang="text">
node_cpu_seconds_total
</syntaxhighlight>
== 相關連結 ==
* [[Grafana]]


== 外部連結 ==
== 外部連結 ==

於 2023年6月29日 (四) 08:19 的最新修訂

Prometheus是一個TSDB

概要

Prometheus本身是一個TSDB(Time series database),會主動到目標機器上蒐集資料後寫入資料庫,另外Prometheus可以設定警示條件送進Alertmanager,由Alertmanager送到外部服務通知(像是Slack,或是PagerDuty)。

安裝

Ubuntu 20.04系統內的Prometheus太舊(2.15),加上沒有適合的PPA可以用,這邊使用官方的binary安裝:

export PROMETHEUS_VERSION=2.45.0; cd /tmp; wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz; tar xvf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz; cd prometheus-${PROMETHEUS_VERSION}.linux-amd64; sudo cp -f prometheus promtool /usr/bin; sudo mkdir /etc/prometheus; sudo cp prometheus.yml /etc/prometheus/; sudo cp -R consoles/ console_libraries/ /etc/prometheus/; sudo useradd -r -U prometheus; sudo mkdir /var/lib/prometheus; sudo chown prometheus:prometheus /var/lib/prometheus; echo -e "[Unit]\nDescription=Prometheus Time Series Collection and Processing Server\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=prometheus\nGroup=prometheus\nType=simple\nExecStart=/usr/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries\n\n[Install]\nWantedBy=multi-user.target" | sudo tee /lib/systemd/system/prometheus.service; sudo systemctl daemon-reload; sudo systemctl enable prometheus; sudo service prometheus start

另外一起裝Alertmanager:

export ALERTMANAGER_VERSION=0.25.0; cd /tmp; wget https://github.com/prometheus/alertmanager/releases/download/v${ALERTMANAGER_VERSION}/alertmanager-${ALERTMANAGER_VERSION}.linux-amd64.tar.gz; tar xvf alertmanager-${ALERTMANAGER_VERSION}.linux-amd64.tar.gz; cd alertmanager-${ALERTMANAGER_VERSION}.linux-amd64; sudo cp -f alertmanager amtool /usr/bin; sudo mkdir /etc/amtool /var/lib/alertmanager; sudo chown prometheus:prometheus /var/lib/alertmanager; sudo cp alertmanager.yml /etc/amtool; echo -e "[Unit]\nDescription=Prometheus Alertmanager\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nUser=prometheus\nGroup=prometheus\nType=simple\nExecStart=/usr/bin/alertmanager --config.file /etc/amtool/alertmanager.yml --storage.path /var/lib/alertmanager\n\n[Install]\nWantedBy=multi-user.target" | sudo tee /lib/systemd/system/alertmanager.service; sudo systemctl daemon-reload; sudo systemctl enable alertmanager; sudo service alertmanager start

Ubuntu內有內建blackbox-exporter,可以拿來監控HTTP或是SSH:

sudo apt install -y prometheus-blackbox-exporter; sudo apt clean

設定

要注意官方安裝檔內的prometheus.ymlscrape_intervalevaluation_interval預設是15s(但不設定時預設是1m),正常情況下5m應該是夠用,可以考慮指定5m降低頻率。

Query

基本上一定會有的:

node_cpu_seconds_total

相關連結

外部連結