Docker安装Prometheus监控平台

news/2025/3/5 7:55:51/

介绍

Prometheus是一个开源的系统监控和警报工具包,最初由 SoundCloud 开发并开源,现已成为云原生计算基金会(CNCF)的毕业项目。它广泛应用于监控基础设施、应用程序和服务的性能,并提供强大的数据查询和警报功能。许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,社区版免费使用,独立于任何公司进行维护。
Prometheus 通过定期从目标(如服务器、应用程序、服务)中拉取(pull)指标数据,并将其存储在本地时间序列数据库中。
多种数据收集方式
  • HTTP 端点:目标暴露一个 HTTP 端点,Prometheus 定期访问该端点以获取指标。
  • Pushgateway:对于短生命周期的任务,可以通过 Pushgateway 将指标推送到 Prometheus。
  • 服务发现:支持多种服务发现机制(如 Kubernetes、Consul、DNS),自动发现监控目标。
核心功能
  • Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳一起存储,同时存储可选的键值对(称为标签)。
  • Prometheus 提供了强大的查询语言 PromQL(Prometheus Query Language),用于查询和分析时间序列数据
  • Prometheus 自带一个简单的 Web UI,可以用于查询和可视化数据。此外,Prometheus 通常与 Grafana 集成,提供更强大的数据可视化功能。
  • Prometheus 提供了灵活的警报机制,用户可以通过 PromQL 定义警报规则。当某个指标满足特定条件时,Prometheus 会触发警报并通过 Alertmanager 发送通知。
应用场景
  • 基础设施监控监控服务器、网络设备、存储设备的性能。
  • 应用程序监控监控应用程序的运行状态和性能指标。
  • 微服务监控监控微服务架构中的各个服务的性能和健康状况。
  • Kubernetes 监控:作为 Kubernetes 的监控工具,监控集群和容器的状态。

Docker安装

mkdir -p ~/prometheus_datadocker run --name prometheus \-c 2 -m 1g --memory-swap=1536m \-p 9090:9090 \-v ~/prometheus_data/prometheus.yml:/etc/prometheus/prometheus.yml \-v ~/prometheus_data:/prometheus \prom/prometheus:latest

Portainer安装

通过Portainer安装包含prometheus服务docker镜像容器极其简单方便,在Pull image》Image中输入: prom/prometheus:latest,点击"Pull the image"拉取仓库镜像文件;
稍等片刻拉取完毕后(镜像文件下载时长受网络环境影响,有时官方hub.docker.com平台会偶尔断连),Images列表中将会显示镜像信息;
镜像已拉取完毕,在左侧Containers菜单中进入到容器管理面页,点击"Add container"进入添加容器配置界面;
在Image中输入: prom/prometheus:latest
设置容器映射端口Prot mapping: 9090>9090
在Volumes中设置容器卷映射目录,采用Bind模式,提前在docker服务主机任意路径下创建docker容器内的卷映射目录/prometheus_data,将prometheus运行过程中和收集到的数据存储在docker服务主机物理目录中,以防docker容器故障数据丢失不可用;
默认通过docker安装prometheus服务,会使用打包镜像中内置的prometheus.yml配置文件,但为了对prometheus进行自定义配置与维护管理,将prometheus默认加载的/etc/prometheus/prometheus.yml配置文件通过卷映射到docker服务主机物理文件/data2/docker/sysdata/prometheus_data/prometheus.yml上,从而避免在docker容器停机或故障的情况下,保证prometheus.yml配置不会留失或重置;
prometheus_data目录下创建prometheus.yml自定义配置文件
# 创建自定义配置文件
touch prometheus.yml# 编辑自定义配置文件
vim prometheus.yml
将以下内容写入到prometheus.yml 中
# my global config
global:scrape_interval: 30s # Set the scrape interval to every 30 seconds. Default is every 1 minute.evaluation_interval: 60s # Evaluate rules every 15 seconds. The default is every 1 minute.body_size_limit: 5MB # An uncompressed response body larger than this many bytes will cause the scrape to fail. 0 means no limit.sample_limit: 1000 # If more than this number of samples are present after metric relabeling. the entire scrape will be treated as failed. 0 means no limit.# 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: ["localhost:9090"]
完整配置教程,参考官方文档: Configuration | Prometheus
以下为例,创建/data2/docker/sysdata/prometheus_data目录,还需要在docker服务主机上对此目录通过: chmod 777 prometheus_data 授权;
注意:需要对prometheus_data物理目录进行授权,否则prometheus服务没有对该目录的读写权限,会导致运行出错,比如:err="open /prometheus/queries.active: permission denied",prometheus启动过程中要向该绑定卷物理目录内写入数据;
在Runtime&resources中分配docker容器运行所需要的cpu、内存、内存交接空间等,此处根据实际硬件条件分配即可;
待上述配置完成后,点击Deploy the container按钮发布docker容器并会同时启动Prometheus服务,稍等片刻没有错误消息提示,即容器运行正常服务启动成功,同时通过docker服务主机下的prometheus_data也可查看到已有文件写入,如有错误提示,可在Containers列表中点击容器日志进行排查;

访问Prometheus

包含prometheus服务的docker容器启动后,通过浏览器访问:http://docker_ip:9090,进入到prometheus控制台默认页面,通过Query菜单即可查询已收集到prometheus服务存储数据库中的指标,比如,查询从prometheus自身端点采集指标:process_cpu_seconds_total,点击Graph选择卡,设置1小时数据区间,并选择30s样本频率,展示图表如下:
参考:
Installation | Prometheus

http://www.ppmy.cn/news/1576772.html

相关文章

浅谈开发基于DeepSeek的编程辅助插件需要系统性的技术规划和实施方案

开发基于DeepSeek的编程辅助插件需要系统性的技术规划&#xff0c;以下是分阶段实施方案&#xff0c;包含具体代码示例和技术细节&#xff1a; 一、技术准备阶段 1. 环境配置 # 开发环境建议 Node.js >18.x (VSCode插件) / JDK17 (IntelliJ插件) Python 3.10 (模型交互层…

AMD RDNA3 GPU架构解析

如果你对AMD的RDNA3还不了解&#xff0c;在profile过程中的指标无法完全理解一些指标&#xff0c;比如说你听过着色器性能方面指标"occupancy"&#xff0c;听说它有助于隐藏内存 latency&#xff0c;但不理解其中的具体用法&#xff0c;那这篇文章将对你有一些帮助。…

【Java项目】基于Spring Boot的体质测试数据分析及可视化设计

【Java项目】基于Spring Boot的体质测试数据分析及可视化设计 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;体质测试数据分析及可视化设计是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模…

【JMeter】JMeter之MQTT压测

文章目录 MQTT概念Jmeter压测MQTTMQTT服务器下载Jmeter MQTT插件测试MQTT测试思路和解决方法 MQTT概念 MQTT是什么 MQTT是用于物联网&#xff08;IoT&#xff09;的OASIS标准消息传递协议。它被设计为一种非常轻量级的发布/订阅消息传输&#xff0c;非常适合使用较少的代码占用…

浅谈开发环境

前言 工欲善其事&#xff0c;必先利其器。工作中经常用到的各种’东西’&#xff0c;如CMake、QMake、Make、MSBuildCLang、GCC、MinGW、MSVC等&#xff0c;有些在命名上有些类似&#xff0c;实际作用却不尽相同。 因此这里换个角度来了解下这些‘东西’的作用&#xff0c;以…

Jasypt 与 Spring Boot 集成文档

Jasypt 与 Spring Boot 集成文档 目录 简介版本说明快速开始 添加依赖配置加密密钥加密配置文件 高级配置 自定义加密算法多环境配置 最佳实践常见问题参考资料 简介 Jasypt 是一个简单易用的 Java 加密库&#xff0c;支持与 Spring Boot 无缝集成。通过 Jasypt&#xff0c;…

【PyQt5项目实战分享】基于YOLOv5的交通道路目标检测和数据分析软件

这是我之前用PyQt5做的一个基于YOLOv5的交通目标检测软件&#xff0c;包括物体检测和相关数据的分析功能&#xff0c;最近将其完善了下并打包&#xff0c;希望对大家有所帮助~ Tips&#xff1a;文末有我放到 github 和 gitee 的项目开源地址哦 文章目录 ⭐项目功能交通物体检测…

利用Python爬取中国气象局天气预报数据

利用Python爬取中国气象局天气预报数据 在这篇博客中,我们将介绍一段使用Python编写的代码,它能够从中国气象局的网站上爬取天气预报数据,并将这些数据存储到数据库中。这段代码不仅展示了如何利用Python进行网页数据抓取,还涉及到数据处理和数据库操作等多方面的知识。 …