prometheus监控(prometheus监控业务接口)

来源网友投稿 1959 2022-12-26

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。
本篇文章给大家谈谈prometheus监控,以及prometheus监控业务接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享prometheus监控的知识,其中也会对prometheus监控业务接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Prometheus简介

Prometheus是一套开源prometheus监控的系统监控报警框架。如今越来越多的公司开始广泛使用Prometheus来提供近实时的、基于动态云环境和容器微服务、服务以及应用程序的内省监控。同时也用于监控传统架构的资源。

Prometheus作为新一代的云原生监控系统prometheus监控,拥有易于管理、查询功能强大、便于可视化、存储高效以及操作简单等特点。

在Prometheus之前市面已经出现prometheus监控了很多的监控系统prometheus监控,如Zabbix、Open-Falcon等。下表通过多维度展现prometheus监控了各自监控系统的优缺点

Prometheus是一个开源系统监控和警报工具包,最初是在SoundCloud构建的。自2012年成立以来,许多公司和组织都广泛运用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,Prometheus在2016年加入了云计算基金会,成为继Kubernetes之后的第二个托管项目。

Prometheus有以下几个主要特点:

Prometheus生态系统包含多个组件,其中许多是可选的:

大多数Prometheus组件都是用Go编写的,因此易于构建和部署为静态二进制文件。

下图说明了Prometheus的架构及其生态系统组件:

Prometheus 直接或通过pushgateway抓取metrics。将数据存储在本地,并对这些数据运行规则,以便从现有数据聚合和记录新时间序列,或者生成警报。Grafana或其他API consumers可以用来将抓取的数据可视化。

Prometheus非常适合记录任何纯数字时间序列。它既适用于machine-centric监控,也适用于高度动态的service-oriented的架构监控。在微服务的领域,其对多维数据抓取和查询的支持是一种特别的优势。

Prometheus是您在中断期间也能正常使用并快速诊断问题的系统,是十分值得信赖的伙伴。每个Prometheus服务器都是独立的,而不依赖于网络存储或其他远程服务。当基础结构的其他部分损坏时,您仍可以依靠它来进行监控,并且无需设置广泛的基础结构也可使用它,在故障的情况下,仍可以查看系统可用的统计信息。如果您需要100%精确的统计数据的话,Prometheus可能不能完全满足您的需求,如果是这种情况,您可以运用其他系统来抓取和分析这部分需要精确的数据,然后将Prometheus用于余下的监控环节。

【实践】2.Prometheus命令和配置详解

Prometheus配置方式有两种prometheus监控
(1)命令行,用来配置不可变命令参数,主要是Prometheus运行参数,比如数据存储位置
(2)配置文件,用来配置Prometheus应用参数,比如数据采集,报警对接

不重启进程配置生效方式也有两种:
(1)对进程发送信号SIGHUP
(2)HTTP POST请求,需要开启--web.enable-lifecycle选项curl -X POST reload

配置文件格式是yaml格式,说明:
.yml或者.yaml 都是 yaml格式的文件,
yaml格式的好处: 和json交互比较容易
python/go/java/php 有yaml格式库,方便语言之间解析,并且这种格式存储的信息量很大。

命令行可用配置可通过prometheus -h来查看。

配置文件使用yml格式,配置文件中一级配置项如下,说明参考#备注内容。

配置文件中通用字段值格式
<boolean: 布尔类型值为true和false
<scheme: 协议方式包含http和https

原始配置文件内容:

全局默认的数据拉取间隔

全局默认的单次数据拉取超时,当报context deadline exceeded错误时需要在特定的job下配置该字段。

全局默认的规则(主要是报警规则)拉取间隔

该服务端在与其prometheus监控他系统对接所携带的标签

该字段配置与Alertmanager进行对接的配置
样例:

上面的配置中的 alert_relabel_configs 是指警报重新标记在发送到Alertmanager之前应用于警报。 它具有与目标重新标记相同的配置格式和操作,外部标签标记后应用警报重新标记,主要是针对集群配置。

这个设置的用途是确保具有不同外部label的HA对Prometheus服务端发送相同的警报信息。

Alertmanager 可以通过 static_configs 参数静态配置,也可以使用其中一种支持的服务发现机制动态发现,我们上面的配置是静态的单实例。

此外, relabel_configs 允许从发现的实体中选择 Alertmanager,并对使用的API路径提供高级修改,该路径通过 __alerts_path__ 标签公开。

完成以上配置后,重启Prometheus服务,用以加载生效,也可以使用热加载功能,使其配置生效。然后通过浏览器,访问 alerts 就可以看 inactive pending firing 三个状态,没有警报信息是因为我们还没有配置警报规则 rules 。

这里定义和prometheus集成的alertmanager插件,用于监控报警。后续会单独进行alertmanger插件的配置、配置说明、报警媒介以及route路由规则记录。

此项配置和 scrape_configs 字段中 relabel_configs 配置一样,用于对需要报警的数据进行过滤后发向 Alertmanager

说明
relabel-configs的配置允许你选择你想抓取的目标和这些目标的标签是什么。所以说如果你想要抓取这种类型的服务器而不是那种,可以使用relabel_configs

相比之下,metric_relabel_configs是发生在抓取之后,但在数据被插入存储系统之前使用。因此如果有些你想过滤的指标,或者来自抓取本身的指标(比如来自/metrics页面)你就可以使用metric_relabel_configs来处理。

该项目主要用来配置不同的 alertmanagers 服务,以及Prometheus服务和他们的链接参数。 alertmanagers 服务可以静态配置也可以使用服务发现配置。Prometheus以pushing 的方式向alertmanager传递数据。

alertmanager 服务配置和target配置一样,可用字段如下

这个主要是用来设置告警规则,基于设定什么指标进行报警(类似触发器trigger)。这里设定好规则以后,prometheus会根据全局global设定的evaluation_interval参数进行扫描加载,规则改动后会自动加载。其报警媒介和route路由由alertmanager插件实现。
样例:

"first_rules.yml"样例:

Prometheus 支持两种类型的 Rules ,可以对其进行配置,然后定期进行运算:recording rules 记录规则 与 alerting rules 警报规则,规则文件的计算频率与警报规则计算频率一致,都是通过全局配置中的 evaluation_interval 定义。

不论是recording rules还是alerting rules都要在组里面。

要在Prometheus中使用Rules规则,就必须创建一个包含必要规则语句的文件,并让Prometheus通过Prometheus配置中的rule_files字段加载该文件,前面我们已经讲过prometheus监控了。 其实语法都一样,除prometheus监控了 recording rules 中的收集的指标名称 record: <string 字段配置方式略有不同,其他都是一样的。

配置范例:

recording rules 是提前设置好一个比较花费大量时间运算或经常运算的表达式,其结果保存成一组新的时间序列数据。当需要查询的时候直接会返回已经计算好的结果,这样会比直接查询快,同时也减轻了PromQl的计算压力,同时对可视化查询的时候也很有用,可视化展示每次只需要刷新重复查询相同的表达式即可。

在配置的时候,除却 record: <string 需要注意,其他的基本上是一样的,一个 groups 下可以包含多条规则 rules ,Recording 和 Rules 保存在 group 内,Group 中的规则以规则的配置时间间隔顺序运算,也就是全局中的 evaluation_interval 设置。

配置范例:

上面的规则其实就是根据 record 规则中的定义,Prometheus 会在后台完成 expr 中定义的 PromQL 表达式周期性运算,以 job 为维度使用 sum 聚合运算符 计算 函数rate 对http_requests_total 指标区间 10m 内的增长率,并且将计算结果保存到新的时间序列 job:http_requests_total:rate10m 中, 同时还可以通过 labels 为样本数据添加额外的自定义标签,但是要注意的是这个 lables 一定存在当前表达式 Metrics 中。

模板是在警报中使用时间序列标签和值展示的一种方法,可以用于警报规则中的注释(annotation)与标签(lable)。模板其实使用的go语言的标准模板语法,并公开一些包含时间序列标签和值的变量。这样查询的时候,更具有可读性,也可以执行其他PromQL查询 来向警报添加额外内容,ALertmanager Web UI中会根据标签值显示器警报信息。

{{ $lable.<lablename}} 可以获取当前警报实例中的指定标签值

{{ $value }} 变量可以获取当前PromQL表达式的计算样本值。

调整好rules以后,我们可以使用 curl -XPOST http://localhost:9090/-/reload 或者 对Prometheus服务重启,让警报规则生效。

这个时候,我们可以把阈值调整为 50 来进行故障模拟操作,这时在去访问UI的时候,当持续1分钟满足警报条件,实际警报状态已转换为 Firing,可以在 Annotations中看到模板信息 summary 与 description 已经成功显示。

规则检查

拉取数据配置,在配置字段内可以配置拉取数据的对象(Targets),job以及实例

定义job名称,是一个拉取单元。每个job_name都会自动引入默认配置如

这些也可以在单独的job中自定义

服务端拉取过来的数据也会存在标签,配置文件中也会有标签,这样就可能发生冲突。

true就是以抓取数据中的标签为准
false就会重新命名抓取数据中的标签为“exported”形式,然后添加配置文件中的标签

切换抓取数据所用的协议

定义可选的url参数

每次抓取数据请求的认证信息

password和password_file互斥只可以选择其一

bearer_token和bearer_token_file互斥只可以选择其一

抓取ssl请求时证书配置

通过代理去主去数据

Prometheus支持多种服务现工具,详细配置这里不再展开

更多参考官网: https://prometheus.io/docs/prometheus/latest/configuratio n/configuration/

服务发现来获取抓取目标为动态配置,这个配置项目为静态配置,静态配置为典型的targets配置,在改配置字段可以直接添加标签

采集器所采集的数据都会带有label,当使用服务发现时,比如consul所携带的label如下:

这些lable是数据筛选与聚合计算的基础。

抓取数据很繁杂,尤其是通过服务发现添加的target。所以过滤就显得尤为重要,我们知道抓取数据就是抓取target的一些列metrics,Prometheus过滤是通过对标签操作操现的,在字段relabel_configs和metric_relabel_configs里面配置,两者的配置都需要relabel_config字段。该字段需要配置项如下

target配置示例

target中metric示例

target中metric示例

使用示例
由以上可知当使用服务发现consul会带入标签__meta_consul_dc,现在为了表示方便需要将该标签变为dc

需要做如下配置,这里面action使用的replacement

过滤采集target

为了防止Prometheus服务过载,使用该字段限制经过relabel之后的数据采集数量,超过该数字拉取的数据就会被忽略

Prometheus可以进行远程读/写数据。字段remote_read和remote_write

(1)Prometheus 配置详解
https://www.dazhuanlan.com/2019/12/12/5df11ada207ce/
(2)Prometheus配置文件prometheus.yml 四个模块详解
http://yunwei.com/archives/7321
(3)官方文档说明
https://prometheus.io/docs/prometheus/latest/configuration/configuration/
(4)Prometheus监控神器-Rules篇
https://zhuanlan.zhihu.com/p/179295676
(5)Prometheus监控神器-Alertmanager篇(1)
https://zhuanlan.zhihu.com/p/179292686
(6)Prometheus监控神器-Alertmanager篇(2)
https://zhuanlan.zhihu.com/p/179294441

普罗米修斯怎么监控主机oom detect

一、监控主机(其他主机一样)
1、被监控服务器需要安装node_exporter
(1)下载node_exporter-1.1.2.linux-amd64.tar.gz,解压到/usr/local目录下并重命名node_exporter
(2)启动 node_exporter
2、添加grafana服务器监控节点信息并重启,重启prometheus
3、查看是否添加成功打开浏览器输入:
4、访问grafana,添加图像界面浏览器访问IP:3000端口
1、添加数据源5、导入模板,模板可以到官网下载,docker 主机监控模板:193Liunx主机监控模板:9276
二、监控docker容器1、添加监控节点同理
2、在被监控服务器部署cadvisor容器
3、验证浏览器访问
4、添加数据源同理
5、导入模板同理。

普罗米修斯监控主机数量不超过

Cacti(英文含义为仙人掌〉是一套基于 PHP、MySQL、SNMP和 RRDtool开发的网络流量监测图形分析工具。
它通过snmpget来获取数据prometheus监控,使用RRDTool绘图,但使用者无须了解RRDTool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP 结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。
Cacti通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)
1.2Nagios
Nagios是一款开源的免费网络监视工具,能有效监控windows、Linux和Unix的主机状态,交换机、打印机、路由器等网络设备。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
nagios主要的特征是监控告警,最强大的就是告警功能,可支持多种告警方式,但缺点是没有强大的数据收集机制,并且数据出图也很简陋,当监控的主机越来越多时,添加主机也非常麻烦,配置文件都是基于文本配置的,不支持web方式管理和配置,这样很容易出错,不宜维护。
1.3Zabbix
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供强大的通知机制以让系统运维人员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix,agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,os x等平台上。
zabbix解决了cacti没有告警的不足,也解决了nagios不能通过web配置的缺点,同时还支持分布式部署,这使得它迅速流行起来,zabbix也成为目前中小企业监控最流行的运维监控平台。当然,zabbix也有不足之处,它消耗的资源比较多,如果监控的主机非常多时(服务器数量超过500台),可能会出现监控超时、告警超时、告警系统单点故障等现象,不过也有很多解决办法,比如提高硬件性能、改变zabbix监控模式等。
① agent代理prometheus监控:专门的代理服务方式进行监控,专属的协议,装有zabbix-agent的主机就可以被zabbix-server监控,主
动或被动的方式,把数据给到server进行处理。
② ssh/telent:linux主机支持ssh/telent协议
③ snmp:网络设备路由器、交换机不能安装第三方程序(agent),使用简单网络协议。大多数的路由器设备支持SNMP协议
④ ipmi:通过ipmi接口进行监控,prometheus监控我们可以通过标准的ipmi硬件接口,监控被监控对象的物理特征,比如电压,温度,
风扇状态电源情况,被广泛使用服务监控中,包括采集cpu温度,风扇转速,主板温度,及远程开关机等等,而且ipmi独立于硬件和操作系统,无论是cpu,bios还是os出现故障,都不会影响ipmi的工作,因为ipmi的硬件设备BMC(bashboard management controller)是独立的板卡,独立供电
⑤ zabbix核心组件介绍
Zabbix Server:
Zabbix软件实现监控的核心程序,主要功能是与Zabbixproxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存。与prometheus的类似可以保存收集到的数据,但是prometheus告警需要使用altermanager组件
Database storage:
存储配置信息以及收集到的数据
web Interface:
Zabbix的GUI接口,通常与server运行在同一台机器上
Proxy:
可选组件,常用于分布式监控环境中,一个帮助zabbix Server收集数据,分担zabbix Server的负载的程序
Agent:
部署在被监控主机上,负责收集数据发送给server
1.5Prometheus
borg.kubernetes
borgmon(监控系统) 对应克隆的版本:prometheus(go语言)
所以prometheus 特别适合K8S 的架构上
而作为一个数据监控解决方案,它由一个大型社区支持,有来自700多家公司的6300个贡献者,13500个代码提交和7200个拉取请求
Prometheus具有以下特性:
① 多维的数据模型(基于时间序列的Key、value键值对)
② 灵活的查询和聚合语言PromQL(难)
③ 提供本地存储和分布式存储
④ 通过基于HTTP和HTTPS的Pull模型采集时间序列数据(pull数据的拉取,时间序列:每段
时间点的数据值指标,持续性的产生。横轴标识时间,纵轴为数据值,一段时间内数值的动态变化,所有的点连线形成大盘式的折线图)
⑤ 可利用Pushgateway (Prometheus的可选中间件)实现Push模式
⑥ 可通过动态服务发现或静态配置发现目标机器(通过consul自动发现和收缩)
⑦ 支持多种图表和数据大盘
open-Falcaon是小米开源的企业级监控工具,用GO语言开发,包括小米、滴滴、美团等在内的互联网公司都在使用它,是一款灵活、可拓展并且高性能的监控方案。

DevOps之prometheus实现优雅的告警

目前prometheus的告警,常用的有grafana自带的告警和prometheus插件alertmanger的告警两种,这里测试下alertmanger的告警功能。

综合考虑,配合上prometheus operator,使用alertmanger,能够使监控告警这块的工作更加devops。

prometheus operator 在k8s中引入了自定义资源定义(CRSs)Prometheus、ServiceMonitor、PrometheusRule和Alertmanager。

所以在k8s中搭建好prometheus operator后,当我们需要监控一个项目时,我们的配置顺序是配置ServiceMonitor获取监控数据,配置PrometheusRule获取告警阈值,配置Alertmanager制定告警发送方式

如果我们已经完成了ServerMonitor的对象的编写,下面就要将监控好的重要数据,设置阈值,触发告警。

这里用spark 服务cpu使用率为例,介绍下PrometheusRule的写法

这样我们就完成一个PrometheusRule 资源对象的编写了,那么prometheus是怎么识别这个告警规则的呢。

我们先查看下prometheus的资源对象

kubectl get prometheus/k8s -n monitoring -o yaml

可以看到,prometheus会自动匹配标签为prometheus=k8s 和 role=alert-rules的prometheusRule的资源对象,这里我们可以体会到prometheus operator自动发现的魅力,我们只需要编写相应的告警规则yaml文件,然后apply一下,便可以制定告警。

在prometheus界面上面查看刚刚制定的告警规则

对于告警通知,需要考虑以下几点

及时性:邮件通知有时候不会注意,尤其是不在电脑面前,所以这里我们选择工作中使用的企业微信作为告警消息推送方式
简洁性:如果服务器性能等到达了一个warning值,会有很多相关的告警全部触发,所以这里我们需要配置分组、静默、抑制方案
容灾性:如果alermanger或者prometheus本身挂掉了,发不出告警怎么办,一般会采用另一个监控来监控prometheus,或者自定义一个持续不断的告警通知,哪一天这个告警通知不发了,说明监控出现问题了。很棒的一点是,prometheus operator已经考虑了这一点,本身携带一个watchdog,作为对自身的监控

创建一个alertmanger配置文件

删除之前的secret对象,并且创建新的

查看企业微信,这个时候会发现已经收到告警信息

这个watchdog便是对prometheus自身的监控。如果有需要,可以制定一条路由,匹配severity为none的告警,然后每24h重复一次,这样可以达到每天监控prometheus本身的效果,哪一天没收到watchdog,便可以知道prometheus挂了。

正常收到的告警信息

alertmanger也支持webhook告警,但是比如钉钉和企业微信机器人这类对消息头有特殊要求的,如果直接用webhook的话,需要安装一个插件封装下,才可以调用

Alertmanager还支持临时静默告警。有时候我们在处理告警,想要临时静默告警消息,或者测试环境中,进行压测,需要临时静默一段时间的告警,我们就可以直接通过Alertmanager的UI临时屏蔽特定的告警通知。通过定义标签的匹配规则(字符串或者正则表达式),如果新的告警通知满足静默规则的设置,则停止向receiver发送通知
目前Alertmanager只支持在UI上面进行临时静默告警

当静默规则生效以后,从Alertmanager的Alerts页面下用户将不会看到该规则匹配到的告警信息,微信机器人也不会发送响应的告警消息

普罗米修斯是个什么样的监控工具,如何使用监控openGauss?

Prometheus是一个开源系统监控和警报工具包,最初在 SoundCloud构建。自 2012 年成立以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司维护。

普罗米修斯的主要特点是:

具有由度量名称和键/值对标识的时间序列数据的多维数据模型

PromQL,一种 利用这种维度的灵活查询语言

不依赖分布式存储;单个服务器节点是自治的

时间序列收集通过 HTTP 上的拉模型进行

通过中间网关支持推送时间序列

通过服务发现或静态配置发现目标

多种图形模式和仪表板支持

Prometheus 可以很好地记录任何纯数字时间序列。它既适合以机器为中心的监控,也适合监控高度动态的面向服务的架构。在微服务的世界中,它对多维数据收集和查询的支持是一个特殊的优势。

Prometheus 专为可靠性而设计,是您在中断期间可以使用的系统,可让您快速诊断问题。每个 Prometheus 服务器都是独立的,不依赖于网络存储或其他远程服务。当您的基础设施的其他部分损坏时,您可以依赖它,并且您无需设置大量基础设施即可使用它。

具体使用可参考社区官网操作文档~

关于prometheus监控和prometheus监控业务接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 prometheus监控的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于prometheus监控业务接口、prometheus监控的信息别忘了在本站进行查找喔。
上一篇:OPPO Find X,是世界上第一款拥有10GB运存的手机
下一篇:告警推送 app(告警推送app)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~