首页 > 其他分享 >大一统的监控探针采集器 cprobe

大一统的监控探针采集器 cprobe

时间:2024-01-13 11:33:25浏览次数:27  
标签:插件 Exporter cprobe 配置 探针 Prometheus 采集 采集器

需求背景

监控数据采集领域,比如 Prometheus 生态有非常多的 Exporter,虽然生态繁荣,但是无法达到开箱即用的大一统体验,Exporter 体系的核心问题有:

  • 良莠不齐:有的 Exporter 写的非常棒,有的则并不完善,有些监控类别甚至有多个 Exporter,选择困难
  • 写法各异:Exporter 所用的日志库、配置文件管理方式、命令行传参方式各异,体验不一
  • 倚重边车模式:有些 Exporter 和采集目标之间是一对一的关系,有几个采集目标就需要部署几个 Exporter,在 Kubernetes 环境下相对容易管理,在物理机虚拟机环境下管理起来就比较复杂了,而且多个 Exporter 还会带来资源成本的提升
  • 配置文件切分:对于非边车模式的 Exporter,即一个 Exporter 对应多个采集目标的,通常很难做到不同的采集目标不同的配置,期望能有一种配置文件切分 INCLUDE 机制,不同的采集目标采用不同的配置
  • 缺乏监控目标服务发现:对于支持 /probe 模式的 Exporter,服务发现就通过 Prometheus + relabel 模式来实现了,如果不支持 /probe 模式的 Exporter 则缺乏监控目标的服务发现机制

要是能有一个统一的采集器,把这些问题都解决掉,采用插件机制,All-in-One 采集所有监控目标,不同的插件体验一致,那该多好啊!cprobe 应运而生!

对比

社区有一些其他采集器,比如 grafana-agent,也是一个缝合怪,也是把各类 Exporter 的能力整合在一起,但是整合的非常生硬,缺少统一化设计,对目标实例的服务发现支持较弱;telegraf 和 categraf 则自成一派,指标体系没有拥抱 Prometheus exporter 生态,相关仪表盘、告警规则资源匮乏,另外服务发现机制做的也不好。datadog-agent 确实比较完备,但是生态上也是自成一派,服务于自身的 SaaS 服务,较少有开源用户采用。

以我当前的认知,监控数据的采集大抵需要三个角色,一个是部署在所有的目标机器上的,比如使用 categraf,中心端需要两个采集器,一个用于采集 Prometheus 协议的端点数据,可以使用 vmagent 或 Prometheus agent mode,另外一个用于采集所有非 Prometheus 协议的端点数据,计划就是 cprobe。

大一统的监控探针采集器 cprobe_cprobe

当然,vmagent 和 cprobe 都是探针角色,理论上可以合二为一,未来也会考虑让 cprobe 支持采集 Prometheus 协议的端点数据,这样就可以把 vmagent 去掉了,不过 vmagent 确实工作的很好,而且已经有很多用户在使用了,所以这个计划暂时搁置。

当前进展

cprobe 刚刚起步,完成了基础框架的搭建,也集成了 mysql、redis、kafka、blackbox 这几个 exporter,代码已经公布到 github:

github.com/cprobe/cprobe

大一统的监控探针采集器 cprobe_cprobe_02

项目文档偷个懒,会直接放到 issues 里,打上不同的标签。大家如果有建议和 PR 的想法,请先提 issue。cprobe 会尽量完善文档,会成立面向研发人员和资深用户的交流群(加群联系我的微信:picobyte,备注 cprobe-公司名-姓名)。

这几个插件在整合的过程中,也做了一些改动,主要改动如下:

  • 统一日志库,统一日志格式,统一日志级别控制
  • 统一配置文件管理,支持配置文件切分
  • 支持不同的采集目标不同的配置
  • 支持采集目标的服务发现,目前主要是 file_sd 和 http_sd
  • mysql 插件支持了自定义 sql
  • kafka 插件原本是一个 Kafka 集群一个 exporter,现在可以一个 cprobe 监控多个 Kafka 集群

安装体验

到 cprobe 的 releases 页面 https://github.com/cprobe/cprobe/releases 下载发布包。解包之后核心就是那个二进制 cprobe,通过如下命令安装:

sudo ./cprobe -install
sudo ./cprobe -start

如果是支持 systemd 的 OS,上面的安装过程实际就是自动创建了 service 文件,你可以通过下面的命令查看:

systemctl status cprobe

如果不是 systemd 的 OS,会采用其他进程管理方式,比如 Windows,会创建 cprobe 服务。

配置

解压缩之后应该可以看到 conf.d 目录,这是配置文件所在目录。writer.yaml 外加一堆的插件配置目录。 writer.yaml 是配置 remote write 地址(不知道什么是 remote write 地址,请自行 Google:Prometheus remote write),可以配置多个,默认配置如下:

global:
  extra_labels:
    colld: cprobe

writers:
- url: http://127.0.0.1:9090/api/v1/write

这是一个极简配置,也基本够用,实际 writer.yaml 中还可以配置不同时序库后端的认证信息以及 relabel 的配置,同级目录下有个 backup.yaml 可以看到一些配置样例。

不同的插件的配置会散落在各个插件目录里,以 mysql 插件举例,相关配置在 conf.d/mysql 下面,入口文件是 main.yaml,用于定义需要采集的 mysql target。target 的服务发现方式支持两种:file_sd 和 http_sd,当然,也支持 static_configs。

在 cprobe 场景下,cprobe 会直连监控目标,比如 mysql 的监控,Prometheus 是从 mysqld_exporter 获取监控数据,而 cprobe 是直连 mysql,所以 main.yaml 中要配置一些采集规则,即 scrape_rule_files。scrape_rule_files 是个数组,即可以把配置文件切分管理,这提供了极大的管理灵活性,各位自行发挥了。各个插件的配置目录下通常都会有个 doc 目录,里面会有个 README.md,README.md 中会对插件配置做说明。

后续规划

最核心的是增加更多插件,不同的插件要整理仪表盘、告警规则。框架层面,希望增加更多自埋点数据,通过 HTTP 的方式暴露更多调试信息。另外就是完善中英文文档。当然,大家如有建议也欢迎留言给我们。


标签:插件,Exporter,cprobe,配置,探针,Prometheus,采集,采集器
From: https://blog.51cto.com/ulricqin/9230989

相关文章

  • 大一统的监控探针采集器 cprobe
    需求背景监控数据采集领域,比如Prometheus生态有非常多的Exporter,虽然生态繁荣,但是无法达到开箱即用的大一统体验,Exporter体系的核心问题有:良莠不齐:有的Exporter写的非常棒,有的则并不完善,有些监控类别甚至有多个Exporter,选择困难写法各异:Exporter所用的日志库、配置文......
  • 谷歌地图数据采集器
    易谷歌地图数据采集大师说明谷歌地图数据采集器(易谷歌地图数据采集大师)是一款采集全球200多个国家或地区客户数据的软件,是你开发外贸客户的好帮手。软件采集数据范围广,功能强,又简单易用。其智能挖掘功能可以全方位获取外贸客户联系方式,包括邮箱、Facebook、推特、Linkin、YouTube......
  • 09 信息打点-CDN 绕过篇&漏洞回链&接口探针&全网扫描&反向邮件
    一、知识点1.1CDN知识-工作原理及阻碍1.1.1CND概念CDN的全称是ContentDeliveryNetwork,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一......
  • 在 Kubernetes 中无侵入安装 OpenTelemetry 探针
    背景OpenTelemetry探针OpenTelemetry(简称Otel,最新的版本是1.27)是一个用于观察性的开源项目,提供了一套工具、APIs和SDKs,用于收集、处理和导出遥测数据(如指标、日志和追踪信息)。应用程序遥测数据(如追踪、指标和日志)的收集是通过探针来完成的,探针通常以库的形式集成到应用......
  • 五分钟 k8s 实战-应用探针
    今天进入kubernetes的运维部分(并不是运维kubernetes,而是运维应用),其实日常我们大部分使用kubernetes的功能就是以往运维的工作,现在云原生将运维和研发关系变得更紧密了。今天主要讲解Probe探针相关的功能,探针最实用的功能就是可以控制应用优雅上线。就绪探针举个例子,当......
  • 【Kubernetes】 容器探针
    【Kubernetes】容器探针Kubernetes提供了探针,通过Kubelet对容器执行定期诊断,以了解容器内应用的状态,以探测结果来决定做哪些操作(比如重启容器、关闭流量),kubernetes中提供了三种探针,分别是就绪探针、存活探针、启动探针,如果不使用探针,默认认为是成功的。每种探针又提供了四种探......
  • 探针探测对sts pod域名解析是否成功的影响
    初始情况apiVersion:v1kind:Servicemetadata:name:nginxspec:ports:-port:80selector:app:nginx---apiVersion:apps/v1kind:StatefulSetmetadata:name:nginxspec:podManagementPolicy:ParallelserviceName:nginxreplicas:2s......
  • 深入Pod —— 探针
    一、探针容器内应用的监测机制,根据不同的探针来判断容器应用当前的状态一)类型1、StartupProbek8s1.16版本新增的探针,用于判断应用程序是否已经启动了。当配置了startupProbe后,会先禁用其他探针,直到startupProbe成功后,其他探针才会继续。作用:由于有时候不能准确预估......
  • k8s-探针
    在Kubernetes中,有三种类型的探针(Probes)用于检查容器的健康状况和确定是否应该将请求路由到容器。这些探针可以配置在Pod的规范中。 存活探针(LivenessProbe)livenessProbe:httpGet:path:/healthport:8080initialDelaySeconds:15periodSeconds:10......
  • Grafana 开源了一款 eBPF 采集器 Beyla
    eBPF的发展如火如荼,在可观测性领域大放异彩,Grafana近期也发布了一款eBPF采集器,可以采集服务的RED指标,本文做一个尝鲜介绍,让读者有个大概了解。eBPF基础介绍可以参考我之前的文章《eBPFHelloworld》。理论上,eBPF可以拿到服务收到的请求信息,比如QPS、延迟、成功率等,这......