广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据:
exporter分类
- 独立[如cadvisor,node exporter]
- 嵌入式[通过clientLib方式如Java的simple-client]
exporter-开源
示例:[独立]exporter-cadvisor
- 部署exporter
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
- prometheus采用pull模型,在prometheus.yml配置需要采集的端点,则cadvisor集成完毕
- job_name: cadvisor
static_configs:
- targets:
- localhost:8080
示例:[嵌入式]exporter-client_java
- demo举例
- simpleclient定义了指标采集的核心框架
compile 'io.prometheus:simpleclient:0.3.0'
# 包含simpleclient 核心接口定义
# simpleclient_common 协议序列化
# simpleclient_tracer_otel OpenTelemetry链路追踪相关可以忽略OpenTelemetry
# simpleclient_tracer_otel_agent 链路追踪相关可以忽略
总结
- 本小节概括介绍了exporter的嵌入式模式[client_java]
- 后续我们将围绕exporter的嵌入式模式[client_java],展开源码与架构的介绍