prometheus tips

时间:May 31, 2021 分类:

目录:

监控指标

数据抓取相关

  • scrape_duration_seconds: 每次抓取的耗时,为了保持PrometheusServer能按照预设的抓取频率稳定搜集数据,抓取耗时不应该超过抓取数据的周期。
  • scrape_samples_scraped: 每次抓取的数据点数。

本地内存与磁盘写入相关

  • process_resident_memory_bytes: 内存使用大小
  • process_virtual_memory_bytes: 虚拟内存使用
  • go_memstats_gc_sys_bytes: 用于GC元数据的字节数
  • go_memstats_heap_alloc_bytes: 分配并仍在使用的堆字节数
  • go_memstats_sys_bytes: 从系统获得的字节数
  • prometheus_tsdb_storage_blocks_bytes: 当前本地存储所有数据块的字节数。该指标对应本地磁盘数据文件夹下chunks文件的总大小(不包括WAL大小)。
  • prometheus_remote_storage_samples_in_total: 写入数据样本总数,如果监控流量一定,这是一个随时间增长的
  • prometheus_tsdb_blocks_loaded:该指标显示当前数据blocks个数。Block数量下降的时刻是Prometheus进程进行了数据块合并操作(compaction),合并操作可以通过prometheus_tsdb_compaction_populating_block指标监测到

失败监控指标(正常情况下为0)

  • prometheus_target_scrape_pools_failed_total: 失败的抓取池总数
  • prometheus_target_scrape_pools_failed_total: 失败的scrape循环重新加载的总数
  • prometheus_rule_evaluation_failures_total: 规则评估失败的总数
  • prometheus_tsdb_checkpoint_creations_failed_total: 失败的检查点创建总数
  • prometheus_tsdb_checkpoint_deletions_failed_total: 失败的检查点删除总数
  • prometheus_tsdb_compactions_failed_total: 失败的数据块合并压缩总数
  • prometheus_tsdb_head_truncations_failed_total: 失败的头部数据块删减总数
  • prometheus_tsdb_reloads_failures_total: 无法从本地磁盘重新加载块数据的次数
  • prometheus_tsdb_wal_truncations_failed_total: 失败的WAL删减总数
  • prometheus_tsdb_wal_corruptions_total: WAL损坏的总数
  • prometheus_notifications_dropped_total: 发送到Alertmanager时由于错误而丢弃的警报总数

ALERTS_FOR_STATE和ActiveAt

在prometheus中,报警由三部分组成

  • 条件
  • for时间
  • webhook组成

如果for为24h,而prometheus处于报警处于condition=true状态23h的时候重启了,再次启动的时候会再次等待24小时触发

所以在时间序列中存储这个状态

  1. 在每次评估告警规则的过程中,我们将历史的告警的ActiveAt(什么时候condition第一次变成了true)记录在一个名称为ALERTS_FOR_STATE的时间序列中,其中包括该告警的所有标签。这和其他时间序列一样,但只存储在本地
  2. 当Prometheus被重新启动时,会有一个工作运行,用于恢复第二次评估后的警报状态。我们等到第二次评估时,这样我们就有足够的采集数据来了解当前的活跃报警
  3. 对于每一个当前处于活跃状态的报警,作业寻找其对应的ALERTS_FOR_STATE时间序列、时间戳和series的最后一个样本的值给我们提供了Prometheus什么时候宕机的信息,以及报警最后活跃的时间

如果for持续时间是D,报警在X开始激活,而Prometheus在Y崩溃,那么警报必须等待D-(Y-X)持续时间,而不是D