Prometheus远程存储

除了其本地时间序列数据库以外,还能够将Prometheus配置为读取和写入远程存储。这旨在支持监视数据的长期存储。数据库

远程读

配置后,Prometheus存储查询(例如,经过HTTP API)将发送到本地和远程存储,而后合并结果。ui

prometheus-read.jpg

请注意,为了在面对远程存储问题时保持可靠性,警报和记录规则评估仅使用本​​地TSDB。spa

配置

您能够在Prometheus配置文件的remote_read部分中配置远程存储读取路径。3d

最简单的是,您只需为远程存储指定读取的端点URL,再加上身份验证方法。您可使用HTTP基本认证或承载令牌认证。代理

您可能须要使用read_recent标志:设置为true时,将从远程存储和本地存储中回答全部查询。若是为false(默认值),则能够从本地存储彻底回答的全部查询都不会发送到远程端点。日志

您能够指定一组required_matchers(标签,值对)以将远程读取限制为查询的某些子集。若是例如您只将部分指标写入远程存储(请参见下文)。code

对于更复杂的配置,还有用于请求超时,TLS配置和代理设置的选项。blog

您能够从多个远程端点读取内容,每一个端点都有一个remote_read部分。队列

远程写

配置后,Prometheus会将其抓取的样本转发到一个或多个远程存储。ip

prometheus-write.jpg

远程写工做是经过“定序”将时间序列样本写入本地存储,而后将它们排队以写入远程存储。

队列其实是一组动态管理的“分片”:任何特定时间序列(即惟一指标)的全部样本最终都将位于同一分片上。

队列会自动按比例增长或减小写入远程存储的分片数量,以跟上传入数据的速率。

这样一来,Prometheus即可以在不使用远程资源的状况下,仅使用必需的资源而且以最少的配置来管理远程存储。

配置

您能够在Prometheus配置文件的remote_write部分中配置远程存储写路径。

remote_read同样,最简单的配置就是远程存储写入URL,再加上身份验证方法。您可使用HTTP基本认证或承载令牌认证。

您可使用write_relabel_configs从新标记或限制您写入远程存储的指标。例如,一般的用途是删除一些指标子集:

prometheus-relable.jpg

queue_config部分使您能够控制上述动态队列。一般,您无需在此处进行更改,而能够依靠Prometheus的默认设置。

  • capacity:每一个分片自己就是一个队列,这是在分片“阻止”进一步添加以前排队的样本数;
  • min_shardsmax_shards:动态队列将使用的最小和最大分片;
  • max_samples_per_sendbatch_send_deadline:每一个分片将样本分批成max_samples_per_send块,或者若是它不能在batch_send_deadline以前制造出该大小的批次,则继续发送;后者不多在繁忙的普罗米修斯实例上发生;
  • min_backoffmax_backoffmax_retries:重试管理;注意在当前实现中未使用max_retries-每一个分片只会阻塞并重试发送“ forever”。

remote_read同样,您也能够配置用于请求超时,TLS配置和代理设置的选项。

您能够经过每一个远程端点都有一个remote_write部分来写入多个远程端点。

日志

您可能会在日志中看到来自远程存储子系统的一些消息:

  • dropped sample for series that was not explicitly dropped via relabelling 因为从新标记或其余缘由,咱们最终获得了一系列在远程写入路径中没有标签的序列。咱们删除它。
  • Remote storage resharding from N to M 动态队列大小正在改变分片的数量-增加以跟上传入样本数与传出的远程存储写入速率之比,或者因为咱们的分片数量超出必要而缩小。
  • Currently resharding, skipping 动态队列但愿更改成新的分片数量,可是从新分片已经在进行中。
  • Failed to flush all samples on shutdown 关闭动态队列时,Prometheus没法将全部样本刷新到远程存储-远程存储端点可能存在问题。

Metrics

远程存储子系统会导出大量指标,这些指标以prometheus_remote_storageprometheus_wal_watcher为前缀,如下是您可能会感兴趣的选择:

  • prometheus_remote_storage_samples_in_total:样本进入远程存储,与样本输出进行比较,以供队列管理器(计数器)使用
  • prometheus_remote_storage_succeeded_samples_total:成功发送到远程存储(计数器)的样本总数
  • prometheus_remote_storage_pending_samples:队列中待发送的样本数量,这些样本将发送到远程存储(仪表)
  • prometheus_remote_storage_shards:用于并行发送到远程存储(仪表)的分片数
  • prometheus_remote_storage_sent_batch_duration_seconds : 发送样品批次到远程存储的持续时间(直方图)
相关文章
相关标签/搜索