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

Docker部署Prometheus

文章目录

    • Prometheus相关介绍
    • Docker部署Prometheus说明
    • 安装Prometheus
      • 搜索镜像
      • 拉取镜像
      • 配置
      • 启动容器
      • 进入容器
      • 遇到的问题
        • Are you trying to mount a directory onto a file (or vice-versa)?
        • 其他可能的错误

Prometheus相关介绍

官方介绍,非常的清楚:

https://prometheus.io/docs/introduction/overview/

Prometheus(普罗米修斯)是一个开源的系统监控和报警系统,具有活跃的生态系统。
2016年加入到CNCF基金会(Cloud Native Computing Foundation),成为继k8s之后第二个在CNCF托管的项目。

目前,行业常见的收集监测数据方式主要分为推送(Push)和抓取(Pull)两个模式。以越来越广泛应用的Prometheus监测体系举例,Prometheus监控就是以抓取(Pull)模式运行的典型系统。应用及基础设施的监测数据以OpenMetrics标准接口的形式暴露给Prometheus监控,然后由Prometheus监控进行定期抓取并长期存储。

OpenMetrics,是云原生、高度可扩展的指标协议。 OpenMetrics定义了大规模上报云原生指标的事实标准,并支持文本表示协议和Protocol Buffers协议,文本表示协议在其中更为常见,也是在Prometheus监控进行数据抓取时默认采用的协议。

指标的数据模型由指标(Metric)名,以及一组Key/Value标签(Label)定义的,具有相同的度量名称以及标签属于相同时序集合。
随着时间推移,这些收集起来的采样点数据将在图表上实时绘制动态变化的线条

目前,对于云原生体系下的绝大多数基础组件能够支持OpenMetrics的文本协议格式暴露指标,对于暂不能支持自身暴露指标的组件, Prometheus社区也存在极其丰富的Prometheus Exporter供开发及运维人员使用。这些组件(或Exporter)通过响应来自Prometheus监控的定期抓取请求来及时地将自身的运行状况记录到Prometheus监控以便后续的处理及分析。对于应用开发者,您还可以通过Prometheus监控的多语言SDK,进行代码埋点,将自身的业务指标也接入到上述的Prometheus生态当中。

Docker部署Prometheus说明

  • 监控端安装:
    Prometheus Server(普罗米修斯监控主服务器 )
    Node Exporter (收集Host硬件和操作系统信息)
    cAdvisor (负责收集Host上运行的容器信息)
    Grafana (展示普罗米修斯监控界面)

  • 被监控安装:
    Node Exporter (收集Host硬件和操作系统信息)
    cAdvisor (负责收集Host上运行的容器信息)

安装Prometheus

可以参考:
https://hub.docker.com/r/prom/prometheus

搜索镜像

docker search prom/prometheus

拉取镜像

版本号可以去官网查看:

https://hub.docker.com/r/prom/prometheus

docker pull prom/prometheus

配置

准备相关挂载目录及配置文件。本文使用/Users/xxx/路径作为案例,自行按需替换。

# 新建prometheus目录,并
mkdir -p /Users/xxx/prometheus/{data,config,rules}# 如果需要授权相关文件夹权限,可以参考下面的命令
chmod -R 777 /Users/xxx/prometheus/data
chmod -R 777 /Users/xxx/prometheus/rules
chmod -R 777 /Users/xxx/prometheus/config# 编辑prometheus.yml文件
cd /Users/xxx/prometheus/config
sudo vim prometheus.yml

内容如下:

global:scrape_interval: 60sevaluation_interval: 60s# 告警规则
rule_files:# 这里匹配指定目录下所有的.rules文件- /prometheus/rules/*.rulesscrape_configs:- job_name: prometheusstatic_configs:# prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项- targets: ["111.111.0.88:9090"]labels:instance: prometheus- job_name: nodestatic_configs:# 注意,这里的ip需要配宿主机器的ip地址,因为prometheus是通过docker的方式部署的- targets: ["111.111.0.88:9100"]labels:instance: node

prometheus配置项说明

global:全局配置 (如果有内部单独设定,会覆盖这个参数)
alerting:告警插件定义。这里会设定alertmanager这个报警插件
rule_files:告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现
scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
remote_write:用于远程存储写配置
remote_read:用于远程读配置

Node exporter 安装参考:

Mac上安装Node Exporter

启动容器

docker run -d  -p 9090:9090 --name prometheus \-v /etc/localtime:/etc/localtime:ro \-v /Users/xxx/prometheus/data:/prometheus/data \-v /Users/xxx/prometheus/config:/etc/prometheus \-v /Users/xxx/prometheus/rules:/prometheus/rules \prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-lifecycle

运行起来后,可以访问:http://localhost:9090/

配置说明:

  • config.file:指定配置文件,路径是容器中的路径,不是宿主机中的路径
  • web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://localhost:9090/-/reload
  • -v /etc/localtime:/etc/localtime:ro 表示让容器使用宿主机的时间, :ro表示只读 (注:此方式只针对宿主机和容器的时区文件均为/etc/localtime);

进入容器

注意:prometheus用的是sh,不是bash。
docker exec -it prometheus sh

遇到的问题

Are you trying to mount a directory onto a file (or vice-versa)?

可以参考下面的文章解决:

[已解决] Mac上docker安装prometheus报错:Are you trying to mount a directory onto a file (or vice-versa)?

其他可能的错误

  1. 在指定了保存天数–storage.tsdb.retention.time参数后,必须指定–config.file配置文件路径。否则会报以下异常。
    level=error msg=“Error loading config (–config.file=prometheus.yml)” err=“open prometheus.yml: no such file or directory”

  2. Docker容器中的prometheus服务默认是以nobody用户启动的,如果出现权限问题,可以在创建容器时指定root用户,或更改文件权限。
    err=“open /prometheus/queries.active: permission denied”

  3. 出现iptables错误,需要重启docker服务:service docker restart
    docker0: iptables: No chain/target/match by that name

相关文章:

Docker部署Prometheus

文章目录Prometheus相关介绍Docker部署Prometheus说明安装Prometheus搜索镜像拉取镜像配置启动容器进入容器遇到的问题Are you trying to mount a directory onto a file (or vice-versa)?其他可能的错误Prometheus相关介绍 官方介绍,非常的清楚: http…...

JavaScript的执行顺序

前言 在说 JavaScript 的执行顺序之前,我们先回答一下以下几组程序的输出结果 第 1 组 const output (v) > {console.log(v); };setTimeout(() > {console.log(1); }, 0); output(2); console.log(3);// 2 3 1第 2 组 new Promise((resolve) > {conso…...

C++11智能指针std::shared_ptr介绍及使用

介绍 shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting),比如我们把只能指针赋值给另外一个对象,那么对象多了一个智能指针指向它,所以这个时候引用计数…...

华为OD机试 - 数字的排列(Python) | 机试题+算法思路+考点+代码解析 【2023】

数字的排列 题目 小华是个很有对数字很敏感的小朋友, 他觉得数字的不同排列方式有特殊的美感。 某天,小华突发奇想,如果数字多行排列, 第一行1个数, 第二行2个, 第三行3个, 即第n行n个数字,并且奇数行正序排列, 偶数行逆序排列,数字依次累加。 这样排列的数字一定很…...

Android 事件分发机制(4)-常见面试题

目录 1.你了解过Android的事件分发机制吗?请大致介绍一下 2、如果父view中不拦截down事件,拦截move,up事件,在子view中设置了requestDisallowInterceptTouchEvent(true);(请求父view不拦截事件)这个标志后&#xff0c…...

计算机四级 [操作系统] | 选择题 2 重点标注版

1.某一个单道批处理系统几乎同时依次到达4个作业,这4个作业的预计运行时间分别为8、4、4和4分钟,按照短作业优先的调度算法运行,请问该批作业的平均周转时间为多少 B A. 14分钟 B. 11分钟 C. 20分钟 D. 10分钟 2.下列与进程具有一一对应的关…...

想玩好ChatGPT?不妨看看这篇文章

相信点进来的铁汁,此时已经对 ChatGPT 有所了解,并想上手体验一番 首先大伙儿要注意,不要被骗了。 现在很多商家提供的 ChatGPT 服务,不仅价格奇高,而且据我所知,有些压根不是 ChatGPT 。 想玩最好去官网注册,具体方法大伙自个儿查一查嗷。 怎么用好 ChatGPT 虽然 …...

day31 IO流

文章目录回顾collectionArrayTestListHashSetTsetHashMapTestPropertiesTreeSetTestIO流FileInputStreamTest01 文件流初步FileInputStreamTest02 循环读FileStreamTest03FileInputStreamTes04 需要掌握FiLeInputStreamTest5FileOutputStreamTest01Copy1 文件拷贝FileReaderTes…...

Linux 防火墙配置(iptables和firewalld)

目录 防火墙基本概念 Iptables讲解 Iptables表 Iptables规则链 Iptables控制类型 Iptables命令配置 firewalld讲解 Firewalld区域概念 Firewalld两种配置方法 firewall-cmd命令行基础配置 firewall-config图形化配置 防火墙基本概念 防火墙就是根据系统管理员设定的…...

深度学习基础(一)

记得17年第一次阅读深度学习相关文献及代码觉得不是很顺畅,做客户端开发时间久了,思维惯性往往觉得比较迷茫。 而且文章中涉及的数学公式及各种符号又觉得很迷惑,虽然文章读下来了,代码也调试过了,意识里并没有轻松的…...

Maven 常用命令

mvn archetype: create :创建Maven 项目mvn compile :编译源代码。mvn deploy:发布项目。mvn test-compile :编译测试源代码mvn test:运行应用程序中的单元测试mvn site:生成项目相关信息的网站mvn clean:清除项目目录中的生成结果mvn package:根据项目生成的iar/war等mvn inst…...

2023年100道最新Android面试题,常见面试题及答案汇总

除了需要掌握牢固的专业技术之外,还需要刷更多的面试去在众多的面试者中杀出重围。小编特意整理了100道Android面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧拿去吧~~文末有答案Q1.组件化和arouter原理Q2.自定义view&…...

[JavaEE系列] 详解面试中HTTP协议HTTPS协议

文章目录HTTP不安全HTTPS中的加密算法对称加密非对称加密混合加密HTTPS中的摘要算法HTTPS中的数字证书SSL /TLS握手TCP建立连接(三次握手)三次握手中常见的面试题:TCP断开连接(四次挥手)四次挥手中常见的面试题&#x…...

mac 好用的类似Xshell工具

下载royal TSX 5.1.1 http://share.uleshi.com/f/9490615-685692355-33bf1e修改mac的etc/hosts文件权限访达(鼠标右键) -> 前往文件夹 ->输入/private --> 打开etc/hosts --> 显示简洁(鼠标右键) --> 权限改成读和写hosts文件写入如下内容:# Royal T…...

浅谈SQL中的union和union all

文章目录概念基础语法使用技巧区别总结概念 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 UNION 操作符选取不同的值,如果允许得到重复的值,可以使用 UNION ALL 基础语法 -- u…...

P6软件应用的核心收益

卷首语 提供了多用户、多项目的功能模块,支持多层次项目等级划分,资源分配计划,记录实际数据,自定义视图,并具有用户定义字段的扩展功能。 利用最佳实践,建立企业模板库 P6软件支持用户使用模板编制项目…...

性能测试中,我遇到的8个常见问题总结

性能压测中我们需要明白以下几点: 1、好的开始是成功的一半,前期的准备非常重要; 2、过程中,关注每个细节,多个维度监控; 3、在调优中多积累经验; 4、对结果负责,测试报告要清晰…...

kafka架构体系

Kafka简介 Kafka是一个由Scala和Java编写的企业级的消息发布和订阅系统,最早是由Linkedin公司开发,最终开源到Apache软件基金会的项目。Kafka是一个分布式的,支持分区的,多副本的和多订阅者的高吞吐量的消息系统,被广…...

【Kafka】三.Kafka怎么保证高可用 学习总结

Kafka 的副本机制 Kafka 的高可用实现主要依赖副本机制。 Broker 和 Partition 的关系 在分析副本机制之前,先来看一下 Broker 和 Partition 之间的关系。Broker 在英文中是代理、经纪人的意思,对应到 Kafka 集群中,是一个 Kafka 服务器节…...

Python学习笔记7:再谈抽象

再谈抽象 对象 多态 即便你不知道变量指向的是哪种对象,也能够对其执行操作封装 向外部隐藏不必要的细节。继承 类 class Person: def set_name(self, name): self.name name def get_name(self): return self.name def greet(self): print("Hello, world…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...