本文目录
- prometheus配置详解
- prometheus是什么意思
- 普罗米修斯什么意思
- Prometheus简介
- Prometheus的工作原理是什么
- Prometheus是什么意思啊
- Prometheus
- 普罗米修斯是什么神
- 【实践】2.Prometheus命令和配置详解
prometheus配置详解
本文按照官方文档的相关内容整理整理的配置语法以及实现功能
一个scrape_config 片段指定一组目标和参数, 目标就是实例,指定采集的端点, 参数描述如何采集这些实例, 配置文件格式如下
因为部署在kubernetes环境中所以我只在意基于kubernetes_sd_configs的服务发现和static_configs静态文件的发现
relable_configss是功能强大的工具,就是Relabel可以在Prometheus采集数据之前,通过Target实例的Metadata信息,动态重新写入Label的值。除此之外,我们还能根据Target实例的Metadata信息选择是否采集或者忽略该Target实例。
relabel_configs
配置格式如下:
其中action主要包括:
replace:默认,通过regex匹配source_label的值,使用replacement来引用表达式匹配的分组
keep:删除regex与连接不匹配的目标 source_labels
drop:删除regex与连接匹配的目标 source_labels
labeldrop:删除regex匹配的标签
labelkeep:删除regex不匹配的标签
hashmod:设置target_label为modulus连接的哈希值source_labels
labelmap:匹配regex所有标签名称。然后复制匹配标签的值进行分组,replacement分组引用( {2},…)替代
prometheus中的数值都是key:value格式, 其中replace、keep、drop都是对value的操作, labelmap、labeldrop、labelkeep都是对key的操作
replace是action的默认值, 通过regex匹配source_label的值,使用replacement来引用表达式匹配的分组
上面的列子中 address 的值为 $1:$2 , 其中 $1 是正则表达式 (+)(?::\d+)? 从 address 中获取, $2 是正则表达式 (\d+)从(\d+) 中获取, 最后的 address 的数值为192.168.1.1:9100
上面的例子只要匹配__meta_kubernetes_service_annotation_prometheus_io_probe=true数据就保留, 反正source_labels中的值没有匹配regex中的值就丢弃
drop 的使用和keep刚好相反, 还是使用keep的例子:
上面的例子只要__meta_kubernetes_service_annotation_prometheus_io_probe这个标签的值为true就丢弃, 反之如果__meta_kubernetes_service_annotation_prometheus_io_probe!=true的数据就保留
labelmap的用法和上面说到replace、keep、drop不同, labelmap匹配的是标签名称, 而replace、keep、drop匹配的是value
上面例子中只要匹配到正则表达式 __meta_kubernetes_service_label_(.+) 的标签, 就将标签重写为 (.+) 中的内容, 效果如下:
待续
使用labeldrop则可以对Target标签进行过滤,删除符合过滤条件的标签,例如:
该配置会使用regex匹配当前target中的所有标签, 删除符合规则的标签, 反之保留不符合规则的
使用labelkeep则可以对Target标签进行过滤,仅保留符合过滤条件的标签,例如:
该配置会使用regex匹配当前target中的所有标签, 保留符合规则的标签, 反之不符合的移除
上面我们说到relabel_config是获取metrics之前对标签的重写, 对应的metric_relabel_configs是对获取metrics之后对标签的操作, metric_relabel_configs能够确定我们保存哪些指标,删除哪些指标,以及这些指标将是什么样子。
metric_relabel_configs的配置和relabel_config的配置基本相同, 如果需要配置相关参数请参考 2.scrape_configs
主要用途为指定exporter获取metrics数据的目标, 可以指定prometheus、 mysql、 nginx等目标
此规则主要是用于抓取prometheus自己数据的配置, targets列表中的为prometheus 获取metrics的地址和端口, 因为没有指定metrics_pa如下所示,
该配置是使用kubernetes的发现机制发现kube-apiservers
上面的刮取配置定义了如下信息:
该配置是自动发现kubernetes中的endpoints
可以看到relable_configs中的规则很多, 具体的内容如下
获取的metrics的信息如下:
prometheus是什么意思
prometheus
普罗米修斯
双语对照
词典结果:
Prometheus
n.《希神》普罗米修斯(造福于人类的神);
以上结果来自金山词霸
例句:
1.
Prometheus’s supporters include bio and several tech firms.
普罗米修斯的支持者包括生物技术工业组织和一些技术公司。
普罗米修斯什么意思
普罗米修斯(古希腊语:Προμηθεύς、英语:Prometheus,名字的含义是“先见之明“),是古希腊神话中泰坦一族的神明之一,他是地母盖亚与乌拉诺斯的儿子伊阿珀托斯与克吕墨涅所生。和厄庇墨透斯是兄弟。
欧洲传统的普罗米修斯画像
普罗米修斯曾与智慧女神雅典娜共同创造了人类,普罗米修斯负责用泥土雕塑出人的形状,雅典娜则为泥人灌注灵魂,并教会了人类很多知识。
当时宙斯禁止人类用火,普罗米修斯看到人类生活的困苦,帮人类从奥林匹斯山盗取了火,因此触怒宙斯。宙斯为了惩罚人类,将潘多拉的盒子放到人间。再将普罗米修斯锁在高加索山的悬崖上,每天派一只鹰去吃他的肝,又让他的肝每天重新长上,使他日日承受被恶鹰啄食肝脏的痛苦。
然而普罗米修斯始终坚毅不屈。几千年后,赫拉克勒斯为寻找金苹果来到悬崖边,把恶鹰射死,并让半人马的肯陶洛斯族的喀戎来代替,解救了普罗米修斯。但他必须永远戴一只铁环,环上镶上一块高加索山上的石子,以便宙斯可以自豪地宣称他的仇敌仍被锁在高加索山的悬崖上。
Prometheus简介
Prometheus是一套开源的系统监控报警框架。如今越来越多的公司开始广泛使用Prometheus来提供近实时的、基于动态云环境和容器微服务、服务以及应用程序的内省监控。同时也用于监控传统架构的资源。
Prometheus作为新一代的云原生监控系统,拥有易于管理、查询功能强大、便于可视化、存储高效以及操作简单等特点。
在Prometheus之前市面已经出现了很多的监控系统,如Zabbix、Open-Falcon等。下表通过多维度展现了各自监控系统的优缺点
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用于余下的监控环节。
Prometheus的工作原理是什么
Prometheus 最开始是由 SoundCloud 开发的开源监控告警系统,是 Google BorgMon 监控系统的开源版本。在 2016 年,Prometheus 加入 CNCF,成为继 Kubernetes 之后第二个被 CNCF 托管的项目。随着 Kubernetes 在容器编排领头羊地位的确立,Prometheus 也成为 Kubernetes 容器监控的标配。
监控系统的总体架构大多是类似的,都有数据采集、数据处理存储、告警动作触发和告警,以及对监控数据的展示。下面是 Prometheus 的架构:
Prometheus Server 负责定时从 Prometheus 采集端 Pull(拉) 监控数据。Prometheus 采集端可以是实现了 /metrics 接口的服务,可以是从第三方服务导出监控数据的 exporter,也可以是存放短生命周期服务监控数据的 Pushgateway。相比大多数采用 Push(推) 监控数据的方式,Pull 使得 Promethues Server 与被采集端的耦合度更低,Prometheus Server 更容易实现水平拓展。对于采集的监控数据,Prometheus Server 使用内置时序数据库 TSDB 进行存储。同时也会使用这些监控数据进行告警规则的计算,产生的告警将会通过 Prometheus 另一个独立的组件 Alertmanager 进行发送。Alertmanager 提供了十分灵活的告警方式,并且支持高可用部署。对于采集到的监控数据,可以通过 Prometheus 自身提供的 Web UI 进行查询,也可以使用 Grafana 进行展示。
Prometheus是什么意思啊
普罗米修斯(Prometheus):泰坦爱泼特斯之子。最有智慧的神之一,被称为“先知者”。人类的创造者和保护者。因触怒宙斯被锁在高加索山上,每日有秃鹰啄食其肝脏,然后又长好,周而复始。后被赫拉克剌斯救出。
Prometheus
Prometheus是一个开源系统监控和报警工具包,具有活跃的生态系统。是一个多维数据模型,其中的时间序列数据由指标名称和键/值对识别。它不依赖分布式存储,单个服务器节点是自治的。通过一个中间网关支持推送时间序列,可以通过服务发现或静态配置来发现目标,支持多种模式的图表和仪表盘制作。
Prometheus具体架构图如下:
Prometheus 直接或通过中介推送网关从检测的作业中抓取指标,用于短期作业。 它将所有抓取的样本存储在本地,并对这些数据运行规则,以从现有数据聚合和记录新的时间序列或生成警报。 Grafana 或其他 API 使用者可用于可视化收集的数据。
--config.file=“prometheus.yml“ Prometheus配置文件路径。
--web.listen-address=“0.0.0.0:9090“ 用于监听UI、API和遥测的地址。
--web.config.file=““ 可以启用TLS或认证的配置文件的路径。
--web.read-timeout=5m 超时读取请求和关闭空闲连接之前的最大持续时间。
--web.max-connections=512 最大同时连接数。
--web.external-url=《URL》 外部可访问Prometheus所在的URL(例如,如果Prometheus通过反向代理提供服务)。用于生成返回到Prometheus本身的相对和绝对链接。如果URL有路径部分,它将用于为Prometheus服务的所有HTTP端点添加前缀。如果省略,将自动派生相关的URL组件。
--web.route-prefix=《path》 Web端点的内部路线的前缀。默认为-web.external-url的路径。
--web.user-assets=《path》 静态资源目录的路径,位于 /user。
--web.enable-lifecycle 通过HTTP请求启用关闭和重新加载。
--web.enable-admin-api 启用管理控制行动的API端点。
--web.console.templates=“consoles“ 控制台模板目录的路径,位于/consoles。
--web.console.libraries=“console_libraries“ 控制台库目录的路径。
--storage.tsdb.path=“data/“ 指标存储的基本路径。仅用于server模式。
--storage.tsdb.retention.time = 样本在储存中保留多长时间。设置此标志后,它会覆盖“storage.tsdb.retention”。如果此标志、“storage.tsdb.retention”或“storage.tsdb.retention.size”均未设置,则保留时间默认为15d。支持的单位:y、w、d、h、m、s、ms。仅用于server模式。
--storage.tsdb.retention.size = 块存储的最大字节数。需要一个单位,支持的单位:B、KB、MB、GB、TB、PB、EB。例如:“512MB”。仅用于server模式。
--storage.tsdb.no-lockfile 不在数据目录中创建锁文件。仅用于server模式。
--storage.tsdb.allow-overlapping-blocks 允许重叠块,从而启用垂直压缩和垂直查询合并。仅用于服务器模式。
--storage.agent.path=“data-agent/“ 指标存储的基本路径。仅用于agent模式。
--storage.agent.wal-compression 压缩代理WAL。仅用于agent模式。
--storage.agent.retention.min-time= 当WAL被截断时,样本在被强行删除之前的最小年龄,仅用于agent模式。
--storage.agent.retention.max-time= 当WAL被截断时,样本在被强行删除之前的最大年龄,仅用于agent模式。
--storage.agent.no-lockfile 不在数据目录中创建锁文件。仅用于agent模式。
--storage.remote.flush-deadline=《duration》 在关闭或重新加载配置时等待刷新样本的时间。
--storage.remote.read-sample-limit=5e7 在单个查询中通过远程读取接口返回的最大样本总数。 0 表示没有限制。对于流式响应类型,将忽略此限制。仅用于server模式。
--storage.remote.read-concurrent-limit=10 并发远程读取调用的最大数量。 0 表示没有限制。仅用于server模式。
--rules.alert.for-outage-tolerance=1h 为恢复“for”警报状态而容忍Prometheus中断的最长时间。仅用于server模式。
--rules.alert.for-grace-period=10m 警报和恢复“for”状态之间的最短持续时间。这仅适用于配置的“for”时间大于宽限期的警报。仅用于server模式。
--rules.alert.resend-delay=1m 在向 Alertmanager 重新发送警报之前等待的最短时间。仅用于server模式。
--alertmanager.notification-queue-capacity=10000 等待Alertmanager通知的队列容量。仅用于server模式。
--query.lookback-delta=5m 在表达式评估和联合期间,检索指标的最长回溯持续时间。仅用于server模式。
--query.timeout=2m 查询在中止之前可能需要的最长时间。仅用于server模式。
--query.max-concurrency=20 并发执行的最大查询数。仅用于server模式。
--query.max-samples=50000000 单个查询可以加载到内存中的最大样本数。请注意,如果查询尝试将比这更多的样本加载到内存中,查询将失败,因此这也限制了查询可以返回的样本数量。仅用于server模式。
--enable-feature= 逗号分隔的要启用的功能名称。有效选项:agent、exemplar-storage、expand-external-labels、memory-snapshot-on-shutdown、promql-at-modifier、promql-negative-offset、remote-write-receiver。extra-scrape-metrics、new-service-discovery-manager。
--log.level=info 只记录给定严重程度或以上的信息。其中之一:。
--log.format=logfmt 日志信息的输出格式。其中之一:。
通用占位符定义如下:
全局配置区域:
scrape_config部分指定了一组描述如何抓取它们的目标和参数,目标可以通过static_configs参数静态配置或使用支持的服务发现机制之一动态发现。
Prometheus自身支持basic验证和TLS(将来可能会改变),也可以通过nginx开启basic验证。
Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。
一般来说可以将Exporter分为2类:
Prometheus UI提供了快速验证PromQL以及临时可视化支持的能力,而在大多数场景下引入监控系统通常还需要构建可以长期使用的监控数据可视化面板(Dashboard)。这时用户可以考虑使用第三方的可视化工具如Grafana,Grafana是一个开源的可视化平台,并且提供了对Prometheus的完整支持。
在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。
Alertmanager 处理客户端应用程序(例如 Prometheus 服务器)发送的警报。 它负责对它们进行重复数据删除、分组和路由到正确的接收器集成,例如Email、PagerDuty 或 OpsGenie。 它还负责警报的静音和抑制。
报警全家桶 https://github.com/feiyu563/PrometheusAlert
普罗米修斯是什么神
提起普罗米修斯这个名字,相信大家应该都不会感到陌生,因为我们在上初中的时候,在课本上学习过关于他的故事,这个名字来源于古希腊的神话,那么具体是怎么样的一回事呢?接下来就随小编来了解一下吧。
在古希腊神话当中,很久很久以前,人世间并没有火的存在,人们只能度过无边无际的黑暗,吃的食物也只能吃生的,可以说生活非常地凄凉。而普罗米修斯是一个天神,看到人类如此悲惨的一幕,他动起了恻隐之心,决定去太阳神阿波罗那里偷取火种。
当阿波罗驾驶着太阳车从他身边经过的时候,普罗米修斯用一根茴香干,从车轮上面抽取到了火焰,并将火带到了人间。自此,人们终于过上了有火的日子,再也不用吃生的食物,可以用火来驱寒取暖,并且来照亮长夜。看到这一幕后,宙斯非常的愤怒,决定严厉地惩罚普罗米修斯。
但是普罗米修斯并没有选择屈服,并且对于所做的事没有丝毫的悔恨,宙斯下令将普罗米修斯押到高加索山上,将他死死地锁在高高的悬崖上,不能动弹也不能睡觉,甚至还派了一只凶恶的鹰,对他进行攻击,让普罗米修斯每一天都生活在痛苦当中,每一天都在遭受磨难。
后来有一天一个大力神从这里经过,他不忍看到普罗米修斯在这里遭受苦难,于是动手杀死了那只鹰,并且解救了普罗米修斯,普罗米修斯终于获得了自由,他的故事也受到了人们的崇拜,所以说,人们对于普罗米修斯致以了崇高的敬意,他的故事也渐渐变得越来越响亮。不知道大家都是怎样看待普罗米修斯的故事呢?欢迎在评论区留言评论。
【实践】2.Prometheus命令和配置详解
Prometheus配置方式有两种:
(1)命令行,用来配置不可变命令参数,主要是Prometheus运行参数,比如数据存储位置
(2)配置文件,用来配置Prometheus应用参数,比如数据采集,报警对接
不重启进程配置生效方式也有两种:
(1)对进程发送信号SIGHUP
(2)HTTP POST请求,需要开启--web.ena字段remote_read和remote_write
(1)Prometheus 配置详解
https://zhuanlan.zhihu.com/p/179294441