prometheus命令_Prometheus 入门

fffff7a767b1cfb818809f2fe45f30a0.png

学习安装 Prometheus 监控和警报系统并编写它的查询。

-- Michael Zamot(作者)

Prometheus 是一个开源的监控和警报系统,它直接从目标主机上运行的代理程序中抓取指标,并将收集的样本集中存储在其服务器上。也可以使用像 collectd_exporter 这样的插件推送指标,尽管这不是 Promethius 的默认行为,但在主机位于防火墙后面或位于安全策略禁止打开端口的某些环境中它可能很有用。

Prometheus 是 云原生计算基金会(CNCF) 的一个项目。它使用 联合模型(federation model)进行扩展,该模型使得一个 Prometheus 服务器能够抓取另一个 Prometheus 服务器的数据。这允许创建分层拓扑,其中中央系统或更高级别的 Prometheus 服务器可以抓取已从下级实例收集的聚合数据。

除 Prometheus 服务器外,其最常见的组件是 警报管理器 及其输出器。

警报规则可以在 Prometheus 中创建,并配置为向警报管理器发送自定义警报。然后,警报管理器处理和管理这些警报,包括通过电子邮件或第三方服务(如 PagerDuty )等不同机制发送通知。

Prometheus 的输出器可以是库、进程、设备或任何其他能将 Prometheus 抓取的指标公开出去的东西。 这些指标可在端点 /metrics 中获得,它允许 Prometheus 无需代理直接抓取它们。本文中的教程使用 node_exporter 来公开目标主机的硬件和操作系统指标。输出器的输出是明文的、高度可读的,这是 Prometheus 的优势之一。

此外,你可以将 Prometheus 作为后端,配置 Grafana 来提供数据可视化和仪表板功能。

理解 Prometheus 的配置文件

抓取 /metrics 的间隔秒数控制了时间序列数据库的粒度。这在配置文件中定义为 scrape_interval 参数,默认情况下设置为 60 秒。

在 scrape_configs 部分中为每个抓取作业设置了目标。每个作业都有自己的名称和一组标签,可以帮助你过滤、分类并更轻松地识别目标。一项作业可以有很多目标。

安装 Prometheus

在本教程中,为简单起见,我们将使用 Docker 安装 Prometheus 服务器和 node_exporter。Docker 应该已经在你的系统上正确安装和配置。对于更深入、自动化的方法,我推荐 Steve Ovens 的文章《 如何使用 Ansible 与 Prometheus 建立系统监控 》。

在开始之前,在工作目录中创建 Prometheus 配置文件 prometheus.yml,如下所示:

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

通过运行以下命令用 Docker 启动 Prometheus:

$ sudo docker run -d -p 9090:9090 -v/path/to/prometheus.yml:/etc/prometheus/prometheus.ymlprom/prometheus

默认情况下,Prometheus 服务器将使用端口 9090。如果此端口已在使用,你可以通过在上一个命令的后面添加参数 --web.listen-address=":" 来更改它。

在要监视的计算机中,使用以下命令下载并运行 node_exporter 容器:

$ sudo docker run -d -v "/proc:/host/proc" -v "/sys:/host/sys" -v"/:/rootfs" --net="host" prom/node-exporter --path.procfs/host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

出于本文练习的目的,你可以在同一台机器上安装 node_exporter 和 Prometheus。请注意,生产环境中在 Docker 下运行 node_exporter 是不明智的 —— 这仅用于测试目的。

要验证 node_exporter 是否正在运行,请打开浏览器并导航到 http://:9100/metrics,这将显示收集到的所有指标;也即是 Prometheus 将要抓取的相同指标。

c6a7fb41201f8dc86ad7d67732687d73.png

要确认 Prometheus 服务器安装成功,打开浏览器并导航至: http://localhost:9090 。

你应该看到了 Prometheus 的界面。单击“Status”,然后单击“Targets”。在 “Status” 下,你应该看到你的机器被列为 “UP”。

3e51b9bd8ec81ca227f5fbfbbd2f069f.png

使用 Prometheus 查询

现在是时候熟悉一下 PromQL (Prometheus 的查询语法)及其图形化 Web 界面了。转到 Prometheus 服务器上的 http://localhost:9090/graph。你将看到一个查询编辑器和两个选项卡:“Graph” 和 “Console”。

Prometheus 将所有数据存储为时间序列,使用指标名称标识每个数据。例如,指标 node_filesystem_avail_bytes 显示可用的文件系统空间。指标的名称可以在表达式框中使用,以选择具有此名称的所有时间序列并生成即时向量。如果需要,可以使用选择器和标签(一组键值对)过滤这些时间序列,例如:

node_filesystem_avail_bytes{fstype="ext4"}

过滤时,你可以匹配“完全相等”(=)、“不等于”(!=),“正则匹配”(=~)和“正则排除匹配”(!~)。以下示例说明了这一点:

要过滤 node_filesystem_avail_bytes 以显示 ext4 和 XFS 文件系统:

node_filesystem_avail_bytes{fstype=~"ext4|xfs"}

要排除匹配:

node_filesystem_avail_bytes{fstype!="xfs"}

你还可以使用方括号得到从当前时间往回的一系列样本。你可以使用 s 表示秒,m 表示分钟,h 表示小时,d 表示天,w 表示周,而 y 表示年。使用时间范围时,返回的向量将是范围向量。

例如,以下命令生成从五分钟前到现在的样本:

node_memory_MemAvailable_bytes[5m]

Prometheus 还包括了高级查询的功能,例如:

100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{job='webservers',mode='idle'}[5m])))

请注意标签如何用于过滤作业和模式。指标 node_cpu_seconds_total 返回一个计数器,irate()函数根据范围间隔的最后两个数据点计算每秒的变化率(意味着该范围可以小于五分钟)。要计算 CPU 总体使用率,可以使用 node_cpu_seconds_total 指标的空闲(idle)模式。处理器的空闲比例与繁忙比例相反,因此从 1 中减去 irate 值。要使其为百分比,请将其乘以 100。

aa28b9bef7eae7738fe8d0cc85ac0f39.png

了解更多

Prometheus 是一个功能强大、可扩展、轻量级、易于使用和部署的监视工具,对于每个系统管理员和开发人员来说都是必不可少的。出于这些原因和其他原因,许多公司正在将 Prometheus 作为其基础设施的一部分。

要了解有关 Prometheus 及其功能的更多信息,我建议使用以下资源:

  • 关于 PromQL
  • 什么是 node_exporters 集合
  • Prometheus 函数
  • 4 个开源监控工具
  • 现已推出:DevOps 监控工具的开源指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式的命名分组

语法格式&#xff1a;(?<name>…) 命名分组也是捕获性分组&#xff0c;它将匹配的字符串捕获到一个组名称或编号名称中&#xff0c;在获得匹配结果后&#xff0c;可通过分组名进行获取。 如下是一个python的命名分组的例子&#xff1a; import re data "#80808…

python--字符/文本编码解码笔记

字符/文本编码解码笔记1.字符问题编码和解码2.字节概要3.基本的编解码器编码类型史字符编码ASCII码GB2312以及其他编码UNICODE标准编码UTF-8编码4.了解编解码问题处理UnicodeEncoderError解决方法:处理UnicodeDecodeError解决方法5.修改源代码编码6.查看文件编码方式终端查看文…

neo4j cypher_Neo4j:Cypher – Neo.ClientError.Statement.TypeError:不知道如何添加Double和String...

neo4j cypher最近&#xff0c;我将支持Neo4j的应用程序从Neo4j 3.2升级到Neo4j 3.3&#xff0c;发现围绕类型强制的行为发生了有趣的变化&#xff0c;导致我的应用程序抛出了很多错误。 在Neo4j 3.2和更早版本中&#xff0c;如果将String添加到Double&#xff0c;它将把Double…

easyui数据表格显示复选框_【Excel技巧】使用控件一键切换实现单位元和万元随意显示...

工欲善其事&#xff0c;必先利其器。职场上亦是如此。Excel报表想要做得完美&#xff0c;首先肯定Excel要精通。做一份Excel报表&#xff0c;如果涉及到金额&#xff0c;当金额比较大&#xff0c;单位到底是用元还是万元&#xff0c;经常是大家纠结的一个问题。我们今天就来介绍…

正则表达式的固化分组

固化分组&#xff0c;又叫原子组。 语法格式&#xff1a;(?>…) 我们在使用非贪婪模式时&#xff0c;匹配过程中可能会进行多次的回溯&#xff0c;回溯越多&#xff0c;正则表达式的运行效率就越低。而固化分组就是用来减少回溯次数的。 实际上&#xff0c;固化分组 (?…

Requests库基本使用

requests库基本使用基本流程python中一个基于网络请求的模块&#xff0c;功能强大&#xff0c;简单便捷&#xff0c;效率极高&#xff0c;可以取代古老的urllib模块。作用&#xff1a;模拟浏览器向服务器发起请求。基本流程 1.指定URL2.对指定的URL发起请求(get或post)3.获取响…

tls 使用java生成_同时使用传入和传出连接时,相互TLS身份验证存在Java问题

tls 使用java生成在大多数企业环境中&#xff0c;应用程序之间的连接中使用某种形式的安全通信&#xff08;例如TLS或SSL&#xff09;。 在某些环境中&#xff0c; 相互&#xff08;双向&#xff09;身份验证也是一项非功能性要求。 有时将其称为双向SSL或双向TLS身份验证。 因…

正则表达式的环视实际应用案例

一、千位分隔符案例&#xff08;一&#xff09; 逆序环视和顺序环视结合应用。 **需求&#xff1a;**数字格式化成用 , 分隔的货币格式。 正则表达式&#xff1a;(?n)(?<\d)(?<!\.\d*)(?(\d{3})(\.|$)) 测试代码&#xff1a; double[] data new double[] { 0,…

软件工程专插本_2021年专插本部分招生专业(拟),广科/广东理工/华商/培正/松田/工商大!...

小师姐从各专插本交流群中收集到了6所院校的2021年本科插班生拟招生专业&#xff1a;广东理工学院、广东科技学院、广东财经大学华商学院、广州大学松田学院、广东培正学院、广东工商职业技术大学。ps&#xff1a;以下只是拟招生专业&#xff0c;具体还是以考试院公布的为准。另…

Requests库实战(一)---网页采集器

网页采集器User-Agent伪装完整代码功能&#xff1a;通过动态url来实现用户输入搜索关键字&#xff0c;返回搜索到的页面。User-Agent伪装 一种反爬机制。 原理&#xff1a;网站的服务器会检测对于请求的载体身份标识&#xff0c;如果检测到请求的载体身份标识为某一款浏览器&a…

ES6 对正则表达式的扩展

文章目录修饰符 y修饰符 uECMAScript 6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准&#xff0c;已经在 2015 年 6 月正式发布了。它的目标&#xff0c;是使得 JavaScript 语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语言。修饰符…

transformer机制讲解_【核心代码解读】Transformer-XL

[论文] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context​arxiv.orgMotivationTransformer在预训练阶段&#xff0c;设置了固定序列长度max_len的上下文&#xff0c;finetuning阶段&#xff0c;模型不能获取大于max_len的上下文依赖&#xff1b;Tran…

Neo4j导入:java.lang.IllegalStateException:不支持在单个导入中混合指定和未指定的组所有物...

休息片刻之后&#xff0c;我最近一直在使用Neo4j导入工具 &#xff0c;并遇到了我最初不理解的有趣的错误消息。 我有一些CSV文件&#xff0c;其中包含要导入Neo4j的节点。 它们的内容如下所示&#xff1a; $ cat people_header.csv name:ID(Person)$ cat people.csv "…

Requests库实战(二)---破解百度翻译

功能&#xff1a;爬取到页面中翻译后的文本数据 获取请求地址和请求方式 先输入dog翻译一下&#xff0c;发现是Ajax请求(动态实时刷新页面)&#xff0c;Ajax请求的数据包可以在网络的XHR中看到。找到输入dog的数据包&#xff0c;通过标头的表单数据kw:dog以及响应的结果就可以…

局部变量的赋值问题

int i 5; i 10;变量 i 在栈帧里面的局部变量表里面&#xff0c;这个局部变量表类似一个数组&#xff0c;里面包含了一些“槽位”来存放局部变量&#xff0c;i 这个变量&#xff0c;就是在局部变量表中的某一个槽位里面&#xff0c;并且 i 只会占用一个槽位&#xff0c;对变量…

php生成 sku_高并发下,php与redis实现的抢购、秒杀功能

抢购、秒杀是如今很常见的一个应用场景&#xff0c;主要需要解决的问题有两个&#xff1a;1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少&#xff08;"超卖"问题&#xff09;对于第一个问题&#xff0c;已经很容易想到用缓存来处理抢购&#xff0c;…

lambda :: -_无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!

lambda :: ->如果你还没有注意到了&#xff0c;我最近被唠叨试图开始使用时&#xff0c;我遭遇了陷阱AWSλ-S3正式例子 。 虽然大多数这些愚蠢的错误的指责是对我自己的懒惰&#xff0c;过度自尊和缺乏对细节的关注&#xff0c;我个人觉得&#xff0c;在开始与一家领先的无服…

Requests库实战(三)---爬取豆瓣电影详细信息

完整代码 爬取豆瓣电影的详细信息 地址&#xff1a;豆瓣电影动画 向下滑动时新增的数据也是Ajax请求&#xff0c;原理和上一个项目是一样的。唯一的不同是此处请求url携带了多个参数 import requests import json header{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x6…

lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

lineseparatorJDK 7在java.lang.System类上引入了一个名为lineSeparator&#xff08;&#xff09;的新方法。 该方法不期待任何参数&#xff0c;并返回一个String &#xff0c;它表示“取决于系统的行分隔符字符串。” 此方法的Javadoc文档还指出System.lineSeparator() “始终…

JavaScript(JS)中与正则表达式有关的方法介绍

文章目录RegExpRegExp 对象的属性compiletestexecString一共有 7 个与正则表达式式相关的方法&#xff0c;这些方法分别来自于 RegExp 与 String 对象。RegExp RegExp 对象表示正则表达式, 主要用于对字符串执行模式匹配. 语法: new RegExp(pattern[, flags]) 参数 pattern …