Categraf

Categraf 是一款 All-in-One 的开源的 telemetry 数据采集器,支持指标、日志采集;支持 Tracing 数据的收集;支持物理机、虚拟机、交换机、容器、K8s、多种中间件/数据库的数据采集,支持混合云架构、云原生架构、多云架构。汇聚领域最佳实践,开箱即用。

Categraf 开源背后的故事

Categraf 是夜莺(Nightingale) 默认的数据采集器,由快猫星云技术团队开发并开源。Categraf 致力于打造监控数据采集领域大一统的方案。目前已有20多万的安装量。
点击查看 >

Categraf 是一个开源的监控采集 Agent,类似 Telegraf、Grafana-Agent、Datadog-Agent,希望对所有常见监控对象提供高质量的监控数据采集能力,采用了 All-in-one 的设计理念,可以同时支持指标、日志、链路追踪数据的采集。Categraf 由快猫星云技术团队研发并开源,快猫星云技术团队同时也是 Open-FalconNightingale 创始研发团队。

Categraf 的代码托管在 GitHub:https://github.com/flashcatcloud/categraf

对比

Categraf 和 Telegraf、Exporters、Grafana-Agent、Datadog-Agent 等的关系是什么?

  • Telegraf 是 InfluxDB 生态的产品,因为 InfluxDB 是支持存储字符串类型的 value,所以 Telegraf 采集的很多 field 是字符串类型,另外 InfluxDB 的设计,允许 labels 是非稳态结构,比如 result_code 标签,有时其 value0,有时其 value1,在 InfluxDB 中都可以接受。但是上面两点,在以 Prometheus 为代表的、符合OpenMetrics标准的时序库中,处理起来就很麻烦。
  • Prometheus 生态有各种 Exporters,但是设计逻辑都是一个监控类型一个 Exporter,甚至一个实例一个 Exporter,生产环境就可能会部署特别多的 Exporters,管理起不方便。
  • Grafana-Agent import 了大量 Exporters 的代码,没有裁剪,没有优化,没有最佳实践在产品上的落地,有些中间件,仍然采取的是一个 Grafana-Agent 一个目标实例,导致会有很多的 Grafana-Agent 进程在运行,管理起来也很不方便。
  • Datadog-Agent 确实是集大成者,但是大量代码是 Python 的,整个发布包也比较大,有不少历史包袱,而且生态上是自成一派,和云原生生态、开源社区相对割裂。

所以,Categraf 确实又是一个轮子,期望解决和规避上面分析提到的一些弊端,Categraf的设计目标:

  • 开源、开放、遵循 OpenTelemetry 标准;
  • 拥抱 Prometheus 开源生态,支持 remote_write 写入协议,支持将数据写到类似于 Promethues、M3DB、VictoriaMetrics、InfluxDB、Open-Falcon、TDengine等时序数据库;
  • 指标数据只采集数值,不采集字符串,标签维持稳态结构;
  • 采用 All-in-One 的设计理念,所有的采集工作用一个 Agent 搞定;
  • 采用 Go 语言编写,静态编译依赖少,容易分发,易于安装;
  • 尽可能落地最佳实践,不需要采集的数据无需采集,针对可能会对时序库造成高基数的问题在采集侧做出规避处理;
  • 针对常用的采集对象,在提供采集能力的同时,配套整理出监控大盘和告警规则模版,用户可以直接导入使用;

All-in-One

Categraf 不但支持操作系统、网络设备、中间件、数据库等常见监控对象的采集,还内置了Prometheus agent mode 抓取能力,内置了日志采集和链路数据接收转发能力,致力于成为企业环境中唯一需要的一款监控数据采集器。

开箱即用

覆盖支持上百种采集对象,包括K8s、中间件、服务器、交换机等,针对常用的采集对象,在提供采集能力的同时,配套有默认的监控仪表盘模板和告警规则模板,用户可以直接导入并使用(Categraf 提供的大部分采集插件,也同时提供了对应的仪表盘和告警规则配置,在代码仓库的插件目录下,以 .json 结尾,欢迎大家一起来贡献插件)。

方便扩展 部署灵活

Categraf 可以读取外部 Prometheus 协议的监控数据,采用插件架构,要新增一个插件也非常容易,在 inputs下面创建一个目录,参照其他插件实现几个方法即可。Categraf 支持在 K8s 集群中以 Daemonset 或者 Sidecar 运行,支持公有云产品的数据采集,也支持独立运行在宿主机上。

高效稳定

Categraf 使用 Go 语言开发,静态编译无依赖,方便部署,性能卓越,安全性高。开源之后很快经过了众多企业的实践测试,其官方镜像已被下载 15 万余次。

产品架构

开源版
Flashcat
Flashduty