Docker安装Prometheus+Grafana

Docker安装Prometheus+Grafana
安装Prometheus
准备目录:1
2
3
4
5/opt/ops/prometheus/data目录,准备用来挂载放置prometheus的数据
/opt/ops/prometheus/config目录,准备用来放置prometheus的配置文件
/opt/ops/prometheus/rules目录,准备用来挂载放置prometheus的规则文件
mkdir -p /opt/ops/prometheus/{data,config,rules}
准备文件:1
2编辑配置文件
vim /opt/ops/prometheus/config/prometheus.yml
内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18global:
# 数据采集间隔
scrape_interval: 45s
# 告警检测间隔
evaluation_interval: 45s
# 告警规则
rule_files:
# 这里匹配指定目录下所有的.rules文件
- /prometheus/rules/*.rules
# 采集配置
scrape_configs:
# 采集项(prometheus)
- job_name: 'prometheus'
static_configs:
# prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
- targets: ['localhost:9090']
查看一下配置文件:1
cat /opt/ops/prometheus/config/prometheus.yml
启动prometheus:1
2
3
4
5
6
7
8
9
10
11
12config.file:指定容器中,配置文件的位置
web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://192.168.8.189:9090/-/reload
-v /etc/localtime:/etc/localtime:ro表示让容器使用宿主机的时间, :ro表示只读(注:此方式只针对宿主机和容器的时区文件均为/etc/localtime)
docker run -d --restart=always -u root \
--name prometheus \
-p 9090:9090 \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/ops/prometheus/data:/prometheus/data \
-v /opt/ops/prometheus/config:/prometheus/config \
-v /opt/ops/prometheus/rules:/prometheus/rules \
prom/prometheus:v2.45.0 --config.file=/prometheus/config/prometheus.yml --web.listen-address=:9090 --web.enable-lifecycle --web.enable-admin-api --storage.tsdb.path=/prometheus --storage.tsdb.max-block-duration=2h --storage.tsdb.min-block-duration=2h
安装Grafana
准备目录:1
2
3
4
5/opt/ops/grafana/data目录,准备用来挂载放置grafana的数据
/opt/ops/grafana/plugins目录,准备用来放置grafana的插件
/opt/ops/grafana/config目录,准备用来挂载放置grafana的配置文件
mkdir -p /opt/ops/grafana/{data,plugins,config}
准备配置文件:1
2
3
4
5
6
7
8
9
10
11
12先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana:10.0.0
将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/ops/grafana/config/grafana.ini
移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp
启动Grafana:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15环境变量GF_SECURITY_ADMIN_PASSWORD:指定admin的密码
环境变量GF_INSTALL_PLUGINS:指定启动时需要安装得插件
grafana-clock-panel代表时间插件
grafana-simple-json-datasource代表json数据源插件
grafana-piechart-panel代表饼图插件
docker run -d --restart=always -u root \
--name=grafana \
-p 3000:3000 \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/ops/grafana/data:/var/lib/grafana \
-v /opt/ops/grafana/plugins/:/var/lib/grafana/plugins \
-v /opt/ops/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
-e "GF_SECURITY_ADMIN_PASSWORD=LiHongyan03" \-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \
grafana/grafana:10.0.0
二进制安装node-exporter
1 | 下载 |
封装service:1
vim /etc/systemd/system/node_exporter.service
内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/opt/ops/node_exporter/node_exporter161/node_exporter --web.listen-address=:9100
User=root
Restart=on-failure
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
RestartSec=42s
[Install]
WantedBy=multi-user.target
设置开机自启:1
2
3systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
Docker安装node_exporter
1 | docker run -d --restart=always -u root \ |
在prometheus中配置当前采集项
编辑配置文件:1
vim /opt/ops/prometheus/config/prometheus.yml
添加如下内容:1
2
3
4
5
6- job_name: node_exporter
static_configs:
- targets: ['192.168.8.189:9100']
lables:
instance: localhost
使得最新的prometheus配置生效
你可以重启prometheus或者使用热加载使新配置生效,这里我们使用热加载的方式:
1 | 前提条件:启动prometheus时,启用了web.enable-lifecycle |
安装alertmanager
准备目录:1
2
3
4/opt/ops/alertmanager/config目录,准备用来放置alertmanager的配置文件
/opt/ops/alertmanager/template目录,准备用来挂载放置alertmanager的模板文件
mkdir -p /opt/ops/alertmanager/{config,template}
启动alertmanager:1
2
3
4
5
6
7docker run -d --restart=always -u root \
--name alertmanager \
-p 9093:9093 \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/ops/alertmanager/config/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
-v /opt/ops/alertmanager/template:/etc/alertmanager/template \
prom/alertmanager:v0.25.0