文章目录
环境信息
操作系统 | IP | 部署组件 |
---|---|---|
CentOS 7.9 | 192.168.1.183 | Prometheus Server 9090、Grafana 300、Node Exporter 9100、Alertmanager 9093 |
-
下载地址:https://prometheus.io/download/
-
安装:
mkdir /opt/prometheus/
cd /opt/prometheus/
wget https:///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
- 安装:
mkdir /opt/node_exporter
cd /opt/node_exporter
wget https:///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
- 检查:
- 安装:
mkdir /opt/alertmanager/
cd /opt/alertmanager/
wget https:///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
-
检查:
- 安装:
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 数据:
添加 Node Exporter 界面
Grafana Dashboards Import(官网:https://grafana.com/grafana/dashboards):按照上面的指导添加数据源之后,我们就可以针对这些数据来绘制图表了。Grafana 最人性化的一点就是拥有大量的图表模板,我们只需要导入模板即可,从而省去了大量的制作图表的时间。
添加 Prometheus 界面