news 2026/8/10 6:29:25

AlmaLinux容器化部署Prometheus+Grafana监控系统实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AlmaLinux容器化部署Prometheus+Grafana监控系统实战

1. 项目概述

在AlmaLinux系统上通过容器化方式部署Prometheus+Grafana监控套件,是当前企业级监控系统搭建的主流方案之一。作为CentOS的替代品,AlmaLinux凭借其稳定性和长期支持特性,成为众多运维团队的首选操作系统。而将Prometheus(指标采集)与Grafana(数据可视化)这两个黄金组合以Docker容器方式部署,既能保证环境隔离,又能简化依赖管理。

我最近在客户生产环境中实际部署了这套监控系统,发现相比传统二进制安装方式,容器化部署可以节省约60%的配置时间,且更容易实现版本管理和快速迁移。下面将详细介绍从零开始完成整套部署的关键步骤和实战技巧。

2. 环境准备

2.1 系统基础配置

首先确保使用AlmaLinux 8或9版本(推荐9.3+),执行系统更新:

sudo dnf update -y && sudo dnf install -y yum-utils device-mapper-persistent-data lvm2

注意:如果是从CentOS迁移过来的系统,建议检查/etc/os-release确认系统类型,避免残留的CentOS源导致依赖冲突。

2.2 Docker环境安装

  1. 添加Docker官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker引擎:
sudo dnf install -y docker-ce docker-ce-cli containerd.io
  1. 启动并设置开机自启:
sudo systemctl enable --now docker
  1. 验证安装:
sudo docker run hello-world

2.3 防火墙与SELinux配置

AlmaLinux默认启用了firewalld和SELinux,需要适当调整:

# 放行Docker使用的端口范围 sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp # Grafana sudo firewall-cmd --permanent --zone=public --add-port=9090/tcp # Prometheus sudo firewall-cmd --reload # SELinux设置为permissive模式(生产环境建议保持enforcing并配置正确策略) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

3. Prometheus容器化部署

3.1 配置文件准备

创建配置目录结构:

mkdir -p ~/monitoring/prometheus/{data,conf} chmod 777 ~/monitoring/prometheus/data # 确保容器有写入权限

编写Prometheus主配置文件~/monitoring/prometheus/conf/prometheus.yml

global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']

3.2 启动Prometheus容器

使用官方镜像运行容器:

docker run -d \ --name=prometheus \ --restart=always \ -p 9090:9090 \ -v ~/monitoring/prometheus/conf:/etc/prometheus \ -v ~/monitoring/prometheus/data:/prometheus \ prom/prometheus:latest \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries

关键参数说明:

  • --restart=always:确保容器异常退出后自动重启
  • -v挂载卷:持久化配置和时序数据
  • --storage.tsdb.path:指定TSDB存储路径

3.3 验证部署

访问http://<服务器IP>:9090应该能看到Prometheus Web界面。通过Status > Targets可以查看当前监控目标状态。

4. Grafana容器化部署

4.1 启动Grafana容器

docker run -d \ --name=grafana \ --restart=always \ -p 3000:3000 \ -v ~/monitoring/grafana/data:/var/lib/grafana \ grafana/grafana-oss:latest

4.2 初始配置

  1. 访问http://<服务器IP>:3000,默认账号admin/admin
  2. 首次登录会要求修改密码
  3. 添加Prometheus数据源:
    • Configuration > Data Sources > Add data source
    • 选择Prometheus
    • URL填写http://<prometheus容器IP>:9090
    • 点击Save & Test

技巧:如果不知道Prometheus容器IP,可以用docker inspect prometheus | grep IPAddress查询

4.3 导入仪表盘

Grafana官方提供丰富的仪表盘模板:

  1. 导航到Dashboards > New > Import
  2. 输入模板ID(如1860用于Node Exporter仪表盘)
  3. 选择刚添加的Prometheus数据源
  4. 点击Import完成导入

5. 进阶配置与优化

5.1 使用Docker Compose编排

创建docker-compose.yml统一管理服务:

version: '3' services: prometheus: image: prom/prometheus:latest container_name: prometheus restart: always ports: - "9090:9090" volumes: - ./prometheus/conf:/etc/prometheus - ./prometheus/data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.templates=/etc/prometheus/consoles' - '--web.console.libraries=/etc/prometheus/console_libraries' grafana: image: grafana/grafana-oss:latest container_name: grafana restart: always ports: - "3000:3000" volumes: - ./grafana/data:/var/lib/grafana depends_on: - prometheus

启动服务:

docker-compose up -d

5.2 添加Node Exporter监控主机

在需要监控的机器上运行:

docker run -d \ --name=node_exporter \ --restart=always \ --net="host" \ --pid="host" \ -v "/:/host:ro,rslave" \ prom/node-exporter:latest \ --path.rootfs=/host

然后在Prometheus配置中添加job:

scrape_configs: - job_name: 'node' static_configs: - targets: ['<主机IP>:9100']

5.3 配置告警规则

prometheus.yml同目录创建alerts.yml

groups: - name: host_stats rules: - alert: HighMemoryUsage expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90 for: 5m labels: severity: warning annotations: summary: "High memory usage on {{ $labels.instance }}" description: "Memory usage is {{ $value }}%"

prometheus.yml中启用告警规则:

rule_files: - 'alerts.yml'

6. 常见问题排查

6.1 容器无法访问外部网络

现象:Prometheus无法抓取其他主机的exporter数据

解决方案:

# 检查Docker网络模式 docker network inspect bridge # 临时解决方案:使用host网络模式 docker run --net=host ...

6.2 数据卷权限问题

现象:容器启动失败,日志显示"permission denied"

解决方案:

# 递归修改数据目录权限 sudo chown -R 472:472 ~/monitoring/grafana/data sudo chown -R nobody:nobody ~/monitoring/prometheus/data

6.3 Prometheus存储优化

对于长期运行的监控系统,需要调整TSDB配置:

# 在prometheus.yml中添加 storage: tsdb: retention: 15d # 数据保留周期 wal_compression: true # 启用WAL压缩

7. 生产环境建议

  1. 资源限制:为容器设置合理的CPU和内存限制

    docker run --memory="2g" --cpus="1" ...
  2. 日志管理:配置日志轮转

    docker run --log-driver=json-file --log-opt max-size=50m --log-opt max-file=3 ...
  3. 备份策略:定期备份重要数据

    # 备份Prometheus数据 tar czvf prometheus_backup.tar.gz ~/monitoring/prometheus/data # 备份Grafana配置 docker exec grafana grafana-cli admin backup <backup-file>
  4. HTTPS配置:通过Nginx反向代理添加SSL证书

  5. 高可用方案:考虑部署Prometheus HA集群和Grafana多实例

这套容器化监控方案已经在多个生产环境稳定运行,相比传统部署方式,最大的优势在于:

  • 环境隔离:避免与系统其他服务产生依赖冲突
  • 快速部署:全新环境10分钟内可完成全套部署
  • 易于维护:通过容器编排工具实现一键更新和回滚
  • 资源可控:精确限制每个组件的资源使用量

实际使用中建议配合cAdvisor实现容器监控,再结合Alertmanager构建完整的告警体系。对于大规模环境,可以考虑使用VictoriaMetrics替代Prometheus以获得更好的性能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/10 6:28:26

MySQL数据库基础操作指南:从安装到CRUD实战

1. MySQL入门&#xff1a;从零开始掌握数据库基础操作作为一名长期与数据库打交道的开发者&#xff0c;我深知MySQL作为最流行的开源关系型数据库&#xff0c;其基础操作的掌握程度直接影响着后续开发效率。今天我们就来系统梳理MySQL的核心概念和基础操作&#xff0c;重点聚焦…

作者头像 李华
网站建设 2026/8/10 6:26:37

大学生程序设计竞赛:天梯赛2025备战指南

1. 赛事背景与基本规则解析贵州工程应用技术学院团体天梯赛作为省级重要的大学生程序设计竞赛&#xff0c;已经连续举办多届。这项赛事采用与国际大学生程序设计竞赛&#xff08;ICPC&#xff09;相似的团队作战模式&#xff0c;但增加了更具挑战性的"天梯"晋级机制。…

作者头像 李华
网站建设 2026/8/10 6:19:42

双指针算法解决LeetCode盛水容器问题

1. 问题背景与核心需求这道来自LeetCode的经典题目"盛最多水的容器"&#xff08;Container With Most Water&#xff09;编号为11&#xff0c;是算法面试中的高频考题。题目描述很简单&#xff1a;给定一个非负整数数组height&#xff0c;每个元素代表垂直线上的一点…

作者头像 李华
网站建设 2026/8/10 6:19:11

005、多摄系统的交响乐指挥——主摄/超广角/长焦/微距的时空同步机制与切换状态机设计

005、多摄系统的交响乐指挥——主摄/超广角/长焦/微距的时空同步机制与切换状态机设计 凌晨两点十七分&#xff0c;实验室的示波器上跳动着一条诡异的波形。我盯着屏幕上的MIPI信号&#xff0c;第无数次确认了那个事实——超广角镜头捕捉到的画面&#xff0c;比主摄晚了整整两帧…

作者头像 李华
网站建设 2026/8/10 6:14:01

RAG查询优化:从语义对齐到工程实践,提升检索增强生成系统精准度

1. 从“答非所问”到“精准命中”&#xff1a;为什么RAG的查询优化是成败关键如果你用过RAG系统&#xff0c;大概率遇到过这种情况&#xff1a;你问“苹果公司最新的财报什么时候发布&#xff1f;”&#xff0c;系统却给你返回了一大堆关于“苹果”这种水果的营养价值或者种植技…

作者头像 李华