关注分享主机优惠活动
国内外VPS云服务器

k8s与监控--prometheus远程存储(prometheus k8s自定义监控)

总结:因此,采用集群范围的监控解决方案是合适的。 您可以过滤需要写入远程存储的内容。 在您的配置中,您可以考虑为联合和远程读写设置此配置项,以区分每个集群。 当前的支持解决方案支持高可用性。 我们的持久性解决方案现已可供使用。

Prometheus远程存储简介

Prometheus在容器云领域的实力是不可否认的。 越来越多的云原生组件直接提供 Prometheus 指标接口,而不需要额外的导出器。 因此,使用prometheus作为集群范围的监控解决方案是合适的。 然而,对于指标存储,prometheus 提供了本地存储,即 tsdb 时序数据库。 本地存储的优点是易于操作和维护。 启动prometheus只需要一条命令。 接下来的两个启动参数指定数据路径和保留时间。

storage.tsdb.path:tsdb数据库路径,默认数据/

storage.tsdb.retention:数据保留期限,默认15天

缺点是: 如下。 大量指标无法保留。 当然,自Prometheus 2.0以来,数据压缩能力有了显着提升。
为了解决单节点存储的局限性,prometheus本身没有实现集群存储。 相反,它提供了远程读写接口,并允许用户选择合适的时序数据库来实现Prometheus的可扩展性。
Prometheus使用两种方法实现与其他远程存储系统的对接。

Prometheus 以标准格式将指标写入远程存储。

prometheus 使用标准格式从远程 URL 读取指标

这里我们重点分析远程存储解决方案。

远程存储方案配置文件

远程写入

#发送样本的端点URLles to.url: # 远程写入端点请求超时。  [remote_timeout:  | default = 30s ]# 远程写入重新标记配置列表。  write_relabel_configs: [ -  ... ] # 使用配置的用户名和密码在所有远程写入请求上设置“Authorization”标头。  # 密码和密码文件是互斥的。 basic_auth: [ username:  ] [ password:  ] [password file:  ] # all 在远程写入请求上设置“Authorization”标头。  这与“bearer_token_file”互斥。  [ bearer_token:  ]# 使用从配置文件中读取的承载令牌在所有远程写入请求上设置“Authorization”标头。   与“bearer_token”互斥`.[ bearer_token_file: /path/to/bearer/token/file ]# 配置远程写入请求的 TLS 设置。  tls_config: [  ]# 可选代理 URL。  [ proxy_url:  ]# 配置队列 用于写入远程 storage.queue_config。  # 开始丢弃之前每个分片缓冲的样本数。  [capacity: ] # 最大分片数,即并发量。   > |default = 1000 ] # 每次发送的最大样本数 [ max_samples_per_send:  |default = 100] # 在缓冲区中等待样本的最长时间。  针对可恢复错误重试批处理的次数。  [ max_retries:  |default = 10 ] # 每次重试都会加倍。[ min_backoff:  | default = 30ms ] # 最大重试延迟。   [ max_backoff:  | default = 100ms ]

远程读取

# 要查询的端点 URL from.url: # 可选的相等匹配器列表。  用于查询远程读取端点的选择器。  required_matchers: [ :  ... ]# 远程读取端点请求超时。  [remote_timeout:  | default = 1m ]# 对于需要本地存储完整数据的时间范围查询是否进行读取。  [ read_recent:  | Default = false ]# 使用配置的用户名和密码在所有远程读取请求上设置“Authorization”标头。  # 密码和密码文件是互斥的。  basic_auth: [ 用户名:  ] [密码: ] [密码文件: ]# 使用配置的不记名令牌在所有远程读取请求上设置“授权”标头。  这与“bearer_token_file”互斥。  [ bearer_token:  ]# 使用从配置文件中读取的承载令牌在所有远程读取请求上设置“Authorization”标头。  这与“bearer_token”是互斥的。  [ bearer_token_file: /path/to/bearer/token/file ]# 配置远程读取请求的 TLS 设置。  tls_config: [  ]# 可选代理 URL。  [ proxy_url:  ]

PS

远程写入配置中的write_relabel_configs配置项充分利用了prometheus强大的重标签功能和过滤器。指标。

示例:选择指定的指标。 >remote_write: - url: "http://prometheus-remote-storage- 适配器-svc:9201/write" write_relabel_configs: - action: keep source_labels: [__name__] regex: 全局配置container_network_receive_bytes_total|container_network_receive_packets_dropped_total

external_labels。您可以考虑为联合和远程读取设置此配置。写入Prometheus项目区分集群

global:scrape_interval:20s # 与外部系统(联合、远程存储、Alertmanager)通信时添加到时间序列或警报的标签

现有。远程存储解决方案

社区目前正在实现以下远程存储解决方案:

AppOptics:写入

Chronix:写入

Cortex:读取和写入

CrateDB:读取和写入

Elasticsearch:写入

Gnocchi:写入

Graphite:写入

InfluxDB:读取和写入

OpenTSDB:写入

PostgreSQL/TimescaleDB:读和写

SignalFx:写

上述部分存储仅支持写入。 其实查看源码后发现,能否支持远程读取取决于存储是否支持正则表达式查询匹配。 关于具体实现的下一节将介绍 prometheus-postgresql- 适配器以及如何实现您自己的适配器。
还支持远程读写。

Cortex 由 Weave 公司提供。 整个架构对prometheus进行了高层封装,使用了很多组件。 情况有点复杂。

开源版本的InfluxDB不支持集群。 对于指标量比较大、写入压力较高的用户来说,influxdb-relay方案并不是真正的高可用。 当然,饿了么有开源的influxdb-代理。 如果您有兴趣,请尝试一下。

CrateDB是基于es的。

我对TimescaleDB了解不多。 就我个人而言,我喜欢这个解决方案。 常规运维对pgsql高度熟悉,可靠运维才有可能。 目前支持流复制解决方案以支持高可用性。

P.S.

其实,如果想利用收集到的指标进行数据分析,可以考虑clickhouse数据库、集群方案、写入性能以及远程读写支持。 这正在研究中。 如果我得到了一定的结果,我会专门写一篇文章来解释它。 持久化解决方案目前计划使用TimescaleDB。

未经允许不得转载:主机频道 » k8s与监控--prometheus远程存储(prometheus k8s自定义监控)

评论 抢沙发

评论前必须登录!