一、服务分类
- 在线服务:请求的客户端和发起者需要立即响应(高并发、低延迟:并发数、接口响应时间、错误数、延迟时间),面对突发流量能进行资源的自动伸缩
- 离线服务:请求发送到服务端但不要求立即获取结果(监控服务的每个执行阶段、成功/失败的次数)
- 批处理:批量任务的执行(一般定时执行),针对每个任务的执行耗时、待处理任务、阻塞任务、处理成功/失败的任务数
二、数据规范
- prometheus制定了一套独特的监控数据规范,符合这一规范的监控数据都可以被统一采集、分析和展现
- prometheus为监控对象提供一个标准的HTTP GET接口,调用接口每次都将返回所有的监控数据
- 监控数据以文本形式组织,每个指标都占用一行,除了文本的最后一个空行,其他空行都将被忽略
- #HELP:指标的注释
#TYPE:定义一个监控指标
三、exporter简介
- exporter诞生的原因:大多数监控无法直接提供监控接口(本身不支持HTTP接口、安全性、稳定性、代码耦合等)
- exporter是一个采集监控数据并通过prometheus监控规范对外提供数据的组件
- 官方实现的exporter:blackbox_exporter、consul_exporter、graphite_exporter、haproxy_exporter、memcached_exporter、mysqld_exporter、node_exporter、statsd_exporter
- 第三方实现的exporter:Redis exporter、RabbitMQ exporter等
- prometheus会周期性地调用exporter提供的metrics数据接口来获取数据
- exporter通过被监控对象提供的监控相关的接口获取监控数据(HTTP/HTTPS、TCP、本地文件(node)、标准协议方式)
- 官方主要依赖库:go、java、scala、python、ruby等
四、功能特性总结
- prometheus只会采集指定格式的监控信息
- exporter按照prometheus规定的格式采集各种软件的监控信息(mysql、node、consul、rabbitMQ等)
- 部分exporter在采集监控信息时需要获取一定的权限用于采集指定信息(如:mysql)
- 类似于多功能充电线,什么品牌的手机选择对应型号的线即可;不同的软件选择对应exporter即可