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

 

posted @ 2024-06-08 09:49  gcl1234  阅读(107)  评论(0)    收藏  举报