Docker 最佳实战:Docker 部署单节点 Prometheus 实战

2024-06-11 18:17:49 浏览数 (1)

Docker 最佳实战:Docker 部署单节点 Prometheus 实战

2024 年云原生运维实战文档 99 篇原创计划 第 026 篇 |Docker 最佳实战「2024」系列 第 014 篇

你好,欢迎来到运维有术

今天分享的内容是 Docker 最佳实战「2024」 系列文档中的 Docker 部署单节点 Prometheus 实战

本文将详细介绍如何用 Docker 容器及 Docker Compose 部署单节点 Prometheus。

实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同)

主机名

IP

CPU(核)

内存(GB)

系统盘(GB)

数据盘(GB)

用途

docker-node-1

192.168.9.81

4

16

40

100

Docker 节点 1

docker-node-2

192.168.9.82

4

16

40

100

Docker 节点 2

docker-node-3

192.168.9.83

4

16

40

100

Docker 节点 3

合计

3

12

48

120

300

实战环境涉及软件版本信息

  • 操作系统:openEuler 22.03 LTS SP3
  • Docker:24.0.7
  • Prometheus:v2.45.5

1. 前置条件

使用 Docker 部署 Prometheus 服务的镜像有以下两种选择:

  • bitnami/prometheus(下载量 50M )
  • prom/prometheus(下载量 1B )

本文选择下载量最大的 Prometheus 官方提供的镜像,构建单节点 Prometheus 服务。

2. 安装部署 Prometheus

2.1 创建数据目录并设置权限

代码语言:bash复制
cd /data/containers
mkdir -p prometheus/{config,data}
chown nobody.nobody prometheus/data 

2.2 创建配置文件

创建配置文件,vi prometheus/config/prometheus.yml

代码语言:yaml复制
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
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.9.81:9090"]

说明: 本文使用了 Prometheus 镜像自带的默认配置,请根据实际情况修改 192.168.9.81:9090,修改为部署 Prometheus 服务器 IP 和开放的实际端口

2.3 创建 docker-compose.yml 文件

创建配置文件,vi prometheus/docker-compose.yml

代码语言:yaml复制
name: "prometheus"
services:
  prometheus:
    image: prom/prometheus:v2.45.5
    container_name: prometheus
    restart: always
    networks:
      - app-tier
    ports:
      - '9090:9090'
    volumes:
      - ./data:/prometheus
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
networks:
  app-tier:
    name: app-tier
    driver: bridge
    #external: true

说明: external: true, 当服务器已经创建 Docker 网络 app-tier 时,创建服务会有 WARN 信息提示,可以启用这个参数。

2.4 创建并启动服务

  • 启动服务
代码语言:bash复制
cd /data/containers/prometheus
docker compose up -d

2.5 验证容器状态

  • 查看 prometheus 容器状态
代码语言:bash复制
$ docker compose ps
NAME         IMAGE                     COMMAND                  SERVICE      CREATED          STATUS          PORTS
prometheus   prom/prometheus:v2.45.5   "/bin/prometheus --c…"   prometheus   33 seconds ago   Up 32 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp
  • 查看 prometheus 服务日志
代码语言:bash复制
# 通过日志查看容器是否有异常,结果略
$ docker compose logs -f

3. 验证测试

打开浏览器,验证 Prometheus 管理控制台。

docker-prometheus-consoledocker-prometheus-console

4. 自动化 Shell 脚本

文章中所有操作步骤,已全部编排为自动化脚本,包含以下内容(因篇幅限制,不在此文档中展示):

  • Shell 脚本部单节点 Prometheus
  • Ansible 容器化部署单节点 Prometheus

运维有术星球会员请到专属代码仓库下载(价值内容,仅星球会员专享)。

以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒

如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!

免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

Get 本文实战视频(请注意,文档视频异步发行,请先关注)

  • B 站|运维有术

欢迎加入 「知识星球|运维有术」 ,获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、AI 大模型等实战技能。未来运维生涯始终有我坐在你的副驾

版权声明

  • 所有内容均属于原创,感谢阅读、收藏,转载请联系授权,未经授权不得转载

0 人点赞