当前位置: 首页 > news >正文

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以获得更好的性能。

http://www.jsqmd.com/news/1364323/

相关文章:

  • MySQL大文件低优先级导入方案与资源控制实践
  • MyBatis核心配置文件详解与最佳实践
  • VGGT-Ω:突破3D视觉显存瓶颈的高效Transformer架构解析
  • 技术任务中的无痕实践:从资源清理到工程素养的系统性方法
  • Excel高效运维:10个提升数据处理速度的技巧
  • 晋江市瓷砖空鼓维修上门服务推荐_2026闽南沿海与多少钱_卫生间厨房阳台客厅墙砖地砖 - 雨婺虹修缮
  • AI智能体安全防护与蚂蚁数科龙虾卫士技术解析
  • ADAMS在自卸车举升机构动力学仿真中的应用
  • Spring Boot中@Async注解的深度解析与实战优化
  • 009、镜头设计的几何光学第一课——为什么不是所有的光都能成像以及F数背后的物理约束
  • 2026暖通设备综合实力推荐,鑫旺风管口碑与创新能力解析 - 工业推荐榜
  • 基于Python的舆情分析实战:从文本情感识别到热度预测
  • 小红书内容高效下载:XHS-Downloader的三种使用方式全解析
  • OpenClaw与飞书深度集成:自动化协作实战指南
  • VMware去虚拟化定制版部署指南:绕过环境检测,实现软件兼容性测试
  • Docker Compose部署Zabbix监控系统常见问题与解决方案
  • OpenAI Codex在开源项目中的高效应用与实践
  • 微服务架构下分布式配置中心技术解析与实践
  • VisualCppRedist AIO:一站式解决Windows运行库缺失与部署难题
  • 解决键盘卡滞失灵问题推荐哪个品牌的工业键盘 十大口碑品牌横评避坑指南 - 工业推荐榜
  • Unity游戏集成DeepSeek-OCR:实现现实文字与虚拟世界的无缝交互
  • 动态规划选数问题解析:从洛谷P15800到背包问题优化
  • AI赋能个人开源:从代码生成到项目运营的全栈实践指南
  • 解决xactengine3_7.dll丢失问题的完整指南
  • AI智能合伙人如何重塑研发全流程:从工具到伙伴的效能革命
  • 从指令执行到意图协同:与AI协作的设计思维进阶指南
  • 智能体开发入门:从LLM、提示词到RAG与多智能体协作的10个核心概念
  • LMS自适应滤波在外辐射源雷达多径干扰抑制中的应用
  • AI智能体安全防护:纵深防御体系实践与挑战
  • 2026建材安全评价检测机构口碑推荐强势出炉,价格透明零套路,避坑指南看这篇就够 - 工业推荐榜