Prometheus 组件 部署(systemd 服务管理)

2024-04-21  本文已影响0人  偷油考拉

一、prometheus 部署

1. 下载二进制包

wget https://github.com/prometheus/prometheus/releases/download/v2.45.4/prometheus-2.45.4.linux-amd64.tar.gz

2. 创建运行用户 prometheus

sudo useradd -rs /bin/false prometheus

3. 创建运行目录

sudo mkdir -p /lvmdata/prometheus/data-prometheus
sudo chown -R prometheus:prometheus /lvmdata/prometheus/

4. 部署文件

tar xzf prometheus-2.45.4.linux-amd64.tar.gz && cd prometheus-2.45.4.linux-amd64
sudo install -o prometheus -g prometheus -m 0755 prometheus /usr/local/bin/prometheus
sudo install -o prometheus -g prometheus -m 0755 promtool /usr/local/bin/promtool
sudo install -o prometheus -g prometheus -m 0755 prometheus.yml /lvmdata/prometheus/prometheus.yml
sudo install -o prometheus -g prometheus -m 0755 promtool /usr/local/bin/promtool
sudo sh -c "cp -r console* /lvmdata/prometheus/ && chown -R prometheus:prometheus /lvmdata/prometheus/"

5. 创建 systemd service 文件 /etc/systemd/system/prometheus.service

执行如下命令:

sudo tee /etc/systemd/system/prometheus.service<<EOF
[Unit]
Description=Prometheus
Wants=network-online.target 
After=network-online.target

[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=always
ExecStart=/usr/local/bin/prometheus \
  --config.file=/lvmdata/prometheus/prometheus.yml \
  --web.console.libraries=/lvmdata/prometheus/console_libraries \
  --web.console.templates=/lvmdata/prometheus/conf/consoles \
  --storage.tsdb.path=/lvmdata/prometheus/data-prometheus \
  --storage.tsdb.retention.time=30d 

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

6. 重新加载配置文件

Prometheus 可以在运行时重新加载配置文件,而不用重启

curl -i -XPOST localhost:9090/-/reload
curl -X POST http://127.0.0.1:9090/-/reload

二、alertmanager 部署

1. 下载二进制包

wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz

2. 创建运行用户 alertmanager

sudo useradd -rs /bin/false alertmanager

如果与prometheus共同部署,也可以直接使用 prometheus 用户名

3. 部署文件

tar xzf alertmanager-0.27.0.linux-amd64.tar.gz && cd alertmanager-0.27.0.linux-amd64
sudo install -o prometheus -g prometheus -m 0755 prometheus /usr/local/bin/prometheus
sudo install -o prometheus -g prometheus -m 0755 amtool /usr/local/bin/amtool
sudo install -o prometheus -g prometheus -m 0755 alertmanager.yml /lvmdata/prometheus/alertmanager.yml

4. 创建 systemd service 文件 /etc/systemd/system/alertmanager.service

sudo tee /etc/systemd/system/alertmanager.service<<EOF
[Unit]
Description=Alertmanager
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
WorkingDirectory=/lvmdata/prometheus/
ExecStart=/usr/local/bin/alertmanager \
    --config.file=/lvmdata/prometheus/alertmanager.yml \
    --storage.path=/lvmdata/prometheus/data-alertmanager \
    --web.external-url http://0.0.0.0:9093

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now alertmanager

三、node_exporter 部署

Node Exporter Setup on Linux Nodes - VMware
node-exporter - Prometheus
node-exporter - Github

1. 下载二进制包

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz

2. 创建运行用户 node_exporter

sudo useradd -rs /bin/false node_exporter

3. 部署二进制文件

将解压后的 node_exporter 二进制文件部署到 /usr/local/bin/

sudo install -o node_exporter -g node_exporter -m 0755 node_exporter /usr/local/bin/node_exporter

4. 创建 systemd service 文件 /etc/systemd/system/node_exporter.service

sudo tee /etc/systemd/system/node_exporter.service<<EOF
[Unit]
Description=Node Exporter
After=network.target
 
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
 
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

四、process-exporter 部署

https://prometheus.io/docs/instrumenting/exporters/#miscellaneous
https://github.com/ncabatoff/process-exporter

注意事项
As /proc/[pid]/io are set by the kernel as read only to the process' user (see #137), to get these values you should run process-exporter either as that user or as root. Otherwise, we can't read these values and you'll get a constant 0 in the metric.
在运行环境中,可以配置运行账户固定为1002,然后指定 process-exporter 用户组为1002。

1. 二进制部署

wget https://github.com/ncabatoff/process-exporter/releases/download/v0.8.2/process-exporter-0.8.2.linux-amd64.tar.gz
sudo useradd -rs /bin/false process-exporter

将解压后的 process_exporter 二进制文件部署到 /usr/local/bin/

sudo install -o process_exporter -G 1002 -m 0755 process_exporter /usr/local/bin/process_exporter
sudo tee /etc/systemd/system/node_exporter.service<<EOF
[Unit]
Description=process-exporter
After=network.target

[Service]
User=root
Type=simple
ExecStart=/usr/local/bin/process-exporter --config.path=/lvmdata/process-exporter/process-name.yaml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

2. 使用 rpm 包部署

wget https://github.com/ncabatoff/process-exporter/releases/download/v0.8.2/process-exporter_0.8.2_linux_amd64.rpm
rpm -ivh process-exporter_0.8.2_linux_amd64.rpm

Created symlink /etc/systemd/system/multi-user.target.wants/process-exporter.service/usr/lib/systemd/system/process-exporter.service.

[Unit]
Description=Process Exporter for Prometheus

[Service]
User=root
Type=simple
EnvironmentFile=-/etc/default/process-exporter
ExecStart=/usr/bin/process-exporter $OPTS
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target
[root@VM-99-12-centos ~]# rpm -ql process-exporter
/etc/default/process-exporter
/etc/process-exporter/all.yaml
/lib/systemd/system/process-exporter.service
/usr/bin/process-exporter
[root@VM-99-12-centos ~]# cat /etc/default/process-exporter 
# process-exporter startup flags
OPTS='--config.path /etc/process-exporter/all.yaml --web.listen-address=:9256'
[root@VM-99-12-centos ~]# cat /etc/process-exporter/all.yaml 
process_names:
  - name: "{{.Comm}}"
    cmdline: 
    - '.+'
上一篇下一篇

猜你喜欢

热点阅读