目录

 

 

环境信息
操作系统 IP 部署组件
CentOS 7.9 192.168.1.183 Prometheus Server 9090、Grafana 300、Node Exporter 9100、Alertmanager 9093
部署 Prometheus Server
  • 下载地址:https://prometheus.io/download/

  • 安装

mkdir /opt/prometheus/
cd /opt/prometheus/
wget https://github.com/prometheus/prometheus/releases/download/v2.20.1/prometheus-2.20.1.linux-amd64.tar.gz
tar -zxf prometheus-2.20.1.linux-amd64.tar.gz
mv prometheus-2.20.1.linux-amd64 /usr/local/prometheus
  • 添加 Prometheus 用户
useradd -M -s /sbin/nologin prometheus
  • 创建本地存储目录
mkdir -p /data/prometheus
chown -R prometheus:prometheus /usr/local/prometheus /data/prometheus
  • 配置开机启动脚本
$ cat /usr/lib/systemd/system/prometheus.service

[Unit]
Description=Prometheus
After=network.target

[Service]
Type=simple
Environment="GOMAXPROCS=4"
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/prometheus/prometheus \
  --config.file=/usr/local/prometheus/prometheus.yml \
  --storage.tsdb.path=/data/prometheus \
  --storage.tsdb.retention=30d \
  --web.console.libraries=/usr/local/prometheus/console_libraries \
  --web.console.templates=/usr/local/prometheus/consoles \
  --web.listen-address=0.0.0.0:9090 \
  --web.read-timeout=5m \
  --web.max-connections=10 \
  --query.max-concurrency=20 \
  --query.timeout=2m \
  --web.enable-lifecycle
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
NoNewPrivileges=true
LimitNOFILE=infinity
ReadWriteDirectories=/data/prometheus
ProtectSystem=full

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target
  • Prometheus 配置
$ cat /usr/local/prometheus/prometheus.yml | grep -v '^$' | grep -v '^#'

global:
  scrape_interval:     15s  # 设置抓取间隔,默认为 1 分钟。
  evaluation_interval: 15s  # 估算规则的默认周期,每 15 秒计算一次规则,默认 1 分钟。
  # scrape_timeout          # 抓取超时,默认为 10s。

alerting:                   # Alertmanager 相关配置。
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

rule_files:                 # 规则文件列表,使用 'evaluation_interval' 参数去抓取。
  # - "first_rules.yml"
  # - "second_rules.yml"

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.1.183:9090']
  • 启动 Prometheus 服务进程
$ systemctl daemon-reload && systemctl enable prometheus && systemctl start prometheus && systemctl status prometheus
$ netstat -ntlp | grep 9090
  • 浏览器访问:http://localhost:9090
    Prometheus — 安装部署(主机安装)_Prometheus
部署 Node Exporter
  • 安装
mkdir /opt/node_exporter
cd /opt/node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
tar -zxf node_exporter-1.0.1.linux-amd64.tar.gz
mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter
chown -R prometheus:prometheus /usr/local/node_exporter
  • 配置开机启动脚本
$ cat /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
After=network.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/usr/local/node_exporter/node_exporter \
  --web.listen-address=0.0.0.0:9100 \
  --web.telemetry-path=/metrics \
  --log.level=info \
  --log.format=logfmt
Restart=always

[Install]
WantedBy=multi-user.target
  • Prometheus 监控 Node Exporter 配置
$ vi /usr/local/prometheus/prometheus.yml

# 修改前
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['192.168.1.183:9090']

# 修改后
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['192.168.1.183:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['192.168.1.183:9100']
  • 启动 Node Exporter 服务
$ systemctl daemon-reload && systemctl enable node_exporter && systemctl start node_exporter && systemctl status node_exporter
$ netstat -ntlp | grep 9100

$ systemctl restart prometheus
  • 检查
    Prometheus — 安装部署(主机安装)_Prometheus_02
部署 AlertManager
  • 安装
mkdir /opt/alertmanager/
cd /opt/alertmanager/
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar -zxf alertmanager-0.21.0.linux-amd64.tar.gz 
mv alertmanager-0.21.0.linux-amd64 /usr/local/alertmanager
  • 创建数据目录
mkdir /usr/local/alertmanager/data
chown -R prometheus:prometheus /usr/local/alertmanager
  • 配置开机启动脚本
$ cat /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=Alertmanager
After=network.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/usr/local/alertmanager/alertmanager \
  --config.file=/usr/local/alertmanager/alertmanager.yml \
  --storage.path=/usr/local/alertmanager/data \
  --web.listen-address=0.0.0.0:9093 \
  --cluster.listen-address=0.0.0.0:9094 \
  --log.level=info \
  --log.format=logfmt
Restart=always

[Install]
WantedBy=multi-user.target
  • Prometheus 监控 AlertManager 配置
$ vi /usr/local/prometheus/prometheus.yml

# 修改前
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['192.168.1.183:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['192.168.1.183:9100']

# 修改后
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['192.168.1.183:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['192.168.1.183:9100']

  - job_name: 'alertmanager'
    static_configs:
      - targets: ['192.168.1.183:9093']
  • 启动 AlertManager 服务
$ systemctl daemon-reload && systemctl enable alertmanager && systemctl start alertmanager && systemctl status alertmanager
$ netstat -ntlp | grep alertmanager

$ systemctl restart prometheus
  • 浏览器访问:http://localhost:9093
    Prometheus — 安装部署(主机安装)_Prometheus_03

  • 检查
    Prometheus — 安装部署(主机安装)_Prometheus_04

部署 Grafana
  • 安装
mkdir /opt/grafana
cd /opt/grafana
wget https://dl.grafana.com/oss/release/grafana-7.1.3.linux-amd64.tar.gz
tar -zxf grafana-7.1.3.linux-amd64.tar.gz 
mv grafana-7.1.3 /usr/local/grafana
  • 创建 Grafana 目录
mkdir -p /usr/local/grafana/data/log
chown -R prometheus:prometheus /usr/local/grafana
  • 生成 Grafana 配置
cd /usr/local/grafana/conf/
cp defaults.ini grafana.ini
  • 配置开机启动脚本
$ cat /usr/lib/systemd/system/grafana-server.service 

[Unit]
Description=Grafana instance
Documentation=http://docs.grafana.org
Wants=network-online.target
After=network-online.target
After=postgresql.service mariadb.service mysqld.service

[Service]
Type=simple
User=prometheus
Group=prometheus
WorkingDirectory=/usr/local/grafana
ExecStart=/usr/local/grafana/bin/grafana-server \
    --config=/usr/local/grafana/conf/grafana.ini \
    --pidfile=/usr/local/grafana/grafana-server.pid

Restart=on-failure
LimitNOFILE=10000
TimeoutStopSec=20

[Install]
WantedBy=multi-user.target
  • 启动 Grafana 服务
$ systemctl daemon-reload && systemctl enable grafana-server && systemctl start grafana-server && systemctl status grafana-server
$ netstat -ntlp | grep grafana-serve
  • 浏览器访问:http://localhost:3000,初始密码:admin/admin,第一次登陆需要修改米密码。

  • Grafana 导入 Prometheus 数据
    Prometheus — 安装部署(主机安装)_Prometheus_05
    Prometheus — 安装部署(主机安装)_Prometheus_06
    Prometheus — 安装部署(主机安装)_Prometheus_07

添加 Node Exporter 界面

Grafana Dashboards Import(官网:https://grafana.com/grafana/dashboards):按照上面的指导添加数据源之后,我们就可以针对这些数据来绘制图表了。Grafana 最人性化的一点就是拥有大量的图表模板,我们只需要导入模板即可,从而省去了大量的制作图表的时间。

Prometheus — 安装部署(主机安装)_Prometheus_08

Prometheus — 安装部署(主机安装)_Prometheus_09
Prometheus — 安装部署(主机安装)_Prometheus_10
Prometheus — 安装部署(主机安装)_Prometheus_11

Prometheus — 安装部署(主机安装)_Prometheus_12

Prometheus — 安装部署(主机安装)_Prometheus_13

添加 Prometheus 界面

Prometheus — 安装部署(主机安装)_Prometheus_14
Prometheus — 安装部署(主机安装)_Prometheus_15

Prometheus — 安装部署(主机安装)_Prometheus_16