CentOS8.2安装配置Prometheus和node_exporter详解

步骤1:创建一个Prometheus用户和组

首先,我们将为Prometheus创建一个系统用户。执行以下命令以实现此目的。

# useradd -m -s /bin/false prometheus
# id prometheus
uid=1005(prometheus) gid=1005(prometheus) groups=1005(prometheus)

/bin/false 与 /sbin/nologin

  • /bin/false是最严格的禁止login选项,一切服务都不能用。
  • /sbin/nologin只是不允许login系统

步骤2:下载Prometheus tar文件

https://prometheus.io/download/

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

tar zxvf prometheus-2.23.0.linux-amd64.tar.gz 
mv prometheus-2.23.0.linux-amd64/ /usr/local/prometheus

步骤3:Prometheus创建配置目录

# mkdir /etc/prometheus
# mkdir /usr/local/prometheus/data
# chown prometheus /usr/local/prometheus/data

步骤4:Prometheus创建配置文件

vim /etc/prometheus/prometheus.yml

# Global config
global:
  scrape_interval:15s        #设置间隔为每15秒。默认值为每1分钟。 
  Evaluation_interval:15s    #每15秒评估一次规则。默认值为每1分钟。 
  scrape_timeout:15s         #scrape_timeout设置为全局默认值(10s)。
#包含仅一个要刮擦的端点的刮擦配置: #这里是Prometheus本身。
scrape_configs:
#作业名称作为标签“ job = <job_name>”添加到从此配置中刮取的任何时间序列。
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['localhost:9090']

步骤5:Prometheus Server创建Systemd服务文件

vi /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /usr/local/prometheus/data \
    --web.console.templates=/usr/local/prometheus/consoles \
    --web.console.libraries=/usr/local/prometheus/console_libraries \
    --storage.tsdb.retention.size=2GB

[Install]
WantedBy=multi-user.target

加载并启动服务

# systemctl daemon-reload
# systemctl start prometheus
# systemctl enable prometheus
# systemctl status  prometheus

确认服务已经运行

netstat -tunlp | grep 9090
ss -antpl | grep 9090

Prometheus按预期在端口9090上运行。现在转到浏览器,浏览服务器的IP,如下所示:

image.png

步骤6:本地安装并配置 node_exporter

【1】为node_exporter创建一个系统用户。

useradd -m -s /bin/false node_exporter

【2】下载node_exporter

https://prometheus.io/download/

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

【3】解压

tar zxvf node_exporter-1.1.2.linux-amd64.tar.gz
mv node_exporter-1.1.2.linux-amd64 /usr/local/node_exporter

【4】设置 node_exporter 执行文件的文件许可权,如下所示

chown node_exporter:node_exporter /usr/local/node_exporter/node_exporter

【5】配置 systemd 服务

vi /etc/systemd/system/node_exporter.service

[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

【6】启动服务

systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter

【7】确保该服务正在运行

检查它是否正在按默认预期在端口9100上侦听。

[root@localhost]# netstat -pnltu | grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      6419/node_exporter  
[root@localhost]# ss -antpl | grep 9100
LISTEN    0         16384                    *:9100   

【8】在 prometheus 中添加 job

cat /etc/prometheus/prometheus.yml

# Global config
global:
  scrape_interval:     15s
  evaluation_interval: 15s
  scrape_timeout: 15s

scrape_configs:
 
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9090']

【9】重新启动Prometheus服务

systemctl restart prometheus.service


## 步骤6:远程主机上安装并配置 node_exporter
与本地安装的区别在于 prometheus 的配置文件
```yaml
  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9090']
    - targets: ['192.168.6.160:9100']

安全

可以配置基本认证和 TLS 认证
node_exporter 开启 TLS 认证

/sbin/nologin和/bin/false的区别

  • /bin/false是最严格的禁止login选项,一切服务都不能用,
  • /sbin/nologin只是不允许系统login,可以使用其他ftp等服务