55 K8S 之 Prometheus 监控步骤
具体的监控场景中,Prometheus 需要了解每一个支持直接测量的目标,以及每一个 Exporter 的接入位置。然而,动态系统环境中,需要纳入监控控制系统中的目标会动态变化,用户难以全部事先静态定义出这些目标来,这就要借助服务发现功能进行动态生成。
待监控目标确定之后,Prometheus 即可以拉取的方式通过 HTTP 请求采集相应的指标数据,这个过程在 Prometheus 中也称为“指标抓取”。响应报文中的指标数据经 Prometheus 解析后以时间序列的格式保存在内存上,并定时存储至内置的 TSDB(Time-Series Database)存储系统中,同时存入的还有其他几个有用的指标,例如抓取操作的成功状态以及耗费的时长等。指标抓取是一个周期性的例行操作,默认为 15 秒,用户可根据需要自定义为 10 秒~60 秒区间内的任意值。
Prometheus 内置了众多的 HTTP API,用户既可以通过它们请求原始数据,又可以进行 PromQL 查询,并可基于数据与查询结果生成图形和仪表板。PromQL 是一种表达式语言,它支持使用多维时间序列标签进行过滤,允许用户实时选择和汇聚时间序列数据,广泛应用于 Prometheus 的数据查询、可视化和告警处理等使用场景当中。
Prometheus 的告警功能可分为两个部分:一部分是 Prometheus Server 中的告警规则,它负责将告警通知发送到 Alertmanager;而 Alertmanager 就是相应的另一部分,它负责管理告警操作,包括静默、抑制、分组、路由和去重等,并将告警发送给客户端应用程序。
Prometheus Pushgateway 的设计目标是为了允许临时任务或批处理作业向 Prometheus 暴露其指标。由于这类的工作任务可能只存活较短的时间,可能会错过 Prometheus Server 的抓取周期,因此需要将这些指标推送到 Pushgateway,并由 Prometheus 通过 Pushgateway 进行抓取。
Prometheus 的每个时间序列都由其“指标名称”和可选的“标签”作为标识符,指标名称用于表达指标自身的含义,即监控目标上某个可测量属性的基本含义,而标签则用来体现某个指标再次细分的维度特征。
Prometheus 的客户端库支持 Counter(计数器)、Gauge(仪表盘)、Histogram(柱状图或直方图)和 Summary(摘要)4 种指标类型。Prometheus Server 并不使用类型信息,而是将所有数据展平为时间序列。
Prometheus 将任意一个可以抓取测度数据的端点(监控目标 target)称之为 Instance(实例),这通常是对应于单个进程的叫法,例如 envoy 或 node_exporter,而诸如水平扩展集群中的多个端点的 Instance 的集合称为 Job(作业)。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/b6b29ed2e90d1e54c2403b69c】。文章转载请联系作者。
评论