如何在Debian 10(Buster)上安装Prometheus和Node_exporter

时间:2020-02-23 14:32:49  来源:igfitidea点击:

如何在Debian 10(Buster)Linux上安装Prometheus?
Prometheus是一个免费和开源监控系统,使我们可以从任何目标系统中收集时间序列数据指标。
其Web界面使我们可以执行强大的查询,可视化收集的数据,并配置警报。

在本教程中,我们将介绍Debian 10(Buster)上的Prometheus和Node_exporter的安装。
由于这是一个二进制安装方法,因此没有必需的依赖关系继续设置。

第1步:创建Prometheus系统用户/组

我们将创建一个专用的Prometheus系统用户和组。
-r或者-system选项用于此目的。

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

这会创建一个不需要/bash shell的系统用户,这就是我们使用-s/sbin/nologin的原因。

第2步:创建配置和数据目录

Prometheus需要存储数据和配置文件的目录。
使用以下命令创建所有必需的目录。

sudo mkdir /var/lib/prometheus
for i in rules rules.d files_sd; do sudo mkdir -p /etc/prometheus/${i}; done

第3步:在Debian 10上下载并安装Prometheus(Buster)

让我们下载最新版本的Prometheus归档,然后提取它以获取二进制文件。
我们可以从Prometheus发布GitHub页面中查看版本。

sudo apt-get -y install wget
mkdir -p /tmp/prometheus && cd /tmp/prometheus
curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \
  | grep browser_download_url \
  | grep linux-amd64 \
  | cut -d '"' -f 4 \
  | wget -qi 

提取文件。

tar xvf prometheus*.tar.gz
cd prometheus*/

将ProMetheus二进制文件移动到/usr/local/bin /

自/usr/local/bin /位于路径中,让我们将二进制文件复制到它。

sudo mv prometheus promtool /usr/local/bin/

将Prometheus配置模板移动到/etc目录。

sudo mv prometheus.yml  /etc/prometheus/prometheus.yml

还将控制台和Console_Libraries移动到/etc/propetheus目录:

sudo mv consoles/console_libraries//etc/prometheus/
cd ~/
rm -rf /tmp/prometheus

步骤4:创建/编辑Prometheus配置文件。

Prometheus配置文件将位于/etc/prometheus/prometheus.yml下。

sudo vim /etc/prometheus/prometheus.yml

默认配置文件看起来类似于下面。

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
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: ['localhost:9090']

第5步:创建一个prometheus systemd服务单元文件

为了能够使用SystemD管理Prometheus服务,我们需要明确定义此单元文件。

sudo tee /etc/systemd/system/prometheus.service<<EOF
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/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 \
  --web.listen-address=0.0.0.0:9090 \
  --web.external-url=
SyslogIdentifier=prometheus
Restart=always
[Install]
WantedBy=multi-user.target
EOF

更改目录权限。

将这些目录的所有权更改为Prometheus用户和组。

for i in rules rules.d files_sd; do sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done
for i in rules rules.d files_sd; do sudo chmod -R 775 /etc/prometheus/${i}; done
sudo chown -R prometheus:prometheus /var/lib/prometheus/

重新加载Systemd守护程序并启动服务。

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

确认服务正在运行。

$ systemctl status prometheus
● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-08-21 23:29:11 CEST; 11s ago
     Docs: https://prometheus.io/docs/introduction/overview/
 Main PID: 22671 (prometheus)
    Tasks: 9 (limit: 4585)
   Memory: 17.6M
   CGroup: /system.slice/prometheus.service
           └─22671 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.console.tem
Aug 21 23:29:11 prom.theitroad.com prometheus[22671]: level=info ts=2019-08-21T21:29:11.467Z caller=main.go:333 vm_limits="(soft=unlimited,

访问URL http://[ip_hostname]上访问Prometheus Web界面:9090。

第6步:在Debian 10 Buster上安装Node_exporter

下载node_exporter存档。

curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest \
| grep browser_download_url \
| grep linux-amd64 \
| cut -d '"' -f 4 \
| wget -qi 

提取下载的文件并将二进制文件移动到/usr/local/bin。

tar -xvf node_exporter*.tar.gz
cd  node_exporter*/
sudo cp node_exporter /usr/local/bin

确认安装。

$node_exporter --version
node_exporter, version 0.18.1 (branch: HEAD, revision: 3db77732e925c08f675d7404a8c46466b2ece83e)
  build user:       Hyman@theitroad
  build date:       20190604-16:41:18
  go version:       go1.12.5

创建node_exporter服务。

sudo tee /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=default.target
EOF

重新加载系统并启动服务。

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

确认状态:

$ systemctl status node_exporter.service 
● node_exporter.service - Node Exporter
   Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-08-21 23:41:11 CEST; 8s ago
 Main PID: 22879 (node_exporter)
    Tasks: 6 (limit: 4585)
   Memory: 6.6M
   CGroup: /system.slice/node_exporter.service
           └─22879 /usr/local/bin/node_exporter
.................................................

一旦我们确认要运行的服务,让我们将Node_exporter添加到Prometheus服务器。

sudo vim /etc/prometheus.yml

添加新工作 scrape_config部分。

- job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

重新启动Prometheus:

sudo systemctl restart prometheus

我们现在在Debian 10(Buster)Linux系统上安装了ProMetheus。