CentOs Steam 9 环境下,使用docker部署 Prometheus + Grafana 监控平台
1.安装docker
首先,确保系统已经安装了Docker。如果没有安装,可以按照以下步骤进行安装:
sudo dnf update
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
2.拉取Prometheus和Grafana镜像
sudo docker pull prom/prometheus
sudo docker pull grafana/grafana
3.配置Prometheus
创建一个Prometheus配置文件prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
然后,在工作目录中创建一个名为prometheus的目录,并将配置文件放入其中:
mkdir -p /your/path/prometheus
cp prometheus.yml /your/path/prometheus/prometheus.yml
4.使用Docker运行Prometheus容器:
sudo docker run -d --name=prometheus -p 9090:9090 -v /your/path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
5.使用Docker运行Grafana容器:
sudo docker run -d --name=grafana -p 3000:3000 grafana/grafana
6.访问Prometheus和Grafana
Prometheus: http://your_server_ip:9090
Grafana: http://your_server_ip:3000
7.配置Grafana数据源
打开Grafana,通过默认的用户名和密码登录(默认用户名/密码是admin/admin),然后添加Prometheus作为数据源:
- 打开Grafana主页
- 进入“Configuration” -> “Data Sources”
- 点击“Add data source”
- 选择“Prometheus”
- 在URL字段输入
http://prometheus:9090 - 点击“Save & Test”
这样,Prometheus和Grafana监控平台就成功部署并运行了。
问题总结:
1.拉取镜像失败
一般会有这样的报错提示:error pulling image configuration: download failed after attempts=6: dial tcp 199.59.149.239:443: connect: connection refused
使用镜像加速器
创建或编辑Docker的daemon配置文件(如果文件不存在,可以新建):
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}
EOF
然后,重启Docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
2.docker容器名称重复,导致冲突
一般会有这样的报错提示:docker: Error response from daemon: Conflict. The container name "/prometheus" is already in use by container "6e08ece8ee18fd75d06559517b70e0e7403fb1c2ae1d1bc86d545391959c8fa6". You have to remove (or rename) that container to be able to reuse that name.
有两种方法可以解决这个问题:
1. 删除现有容器
如果你不再需要现有的 /prometheus 容器,可以使用以下命令将其删除:
sudo docker rm 6e08ece8ee18fd75d06559517b70e0e7403fb1c2ae1d1bc86d545391959c8fa6
2. 重命名现有容器
如果你仍然需要现有的容器,但想要使用相同的名称创建一个新容器,你可以将现有容器重命名为不同的名称,然后再创建新容器:
sudo docker rename /prometheus /old_prometheus
然后,就可以创建一个新的 /prometheus 容器了:
sudo docker run -d --name=prometheus -p 9090:9090 -v /your/path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
在这个命令中,prometheus 是新容器的名称。
通过执行这两种方法之一,能够解决容器名称冲突问题,成功创建新的 /prometheus 容器。
也可以写一个shell脚本每次运行Prometheus容器前,检查容器ID是否为空。如果不为空,说明容器存在,则停止并删除它。
#!/bin/bash
# 检查并停止和删除现有的 Prometheus 容器
CONTAINER_ID=$(sudo docker ps -a -q -f name=prometheus)
if [ ! -z "$CONTAINER_ID" ]; then
sudo docker stop prometheus
sudo docker rm prometheus
fi
# 启动新的 Prometheus 容器
sudo docker run -d --name=prometheus -p 9090:9090 -v /your/path/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
保存这个脚本(例如 restart_prometheus.sh),然后给它执行权限:
chmod +x restart_prometheus.sh
执行脚本:
./restart_prometheus.sh

浙公网安备 33010602011771号