LoongCollector

1804
下载
LoongCollector 是阿里云可观测性团队所开源的项目,是一款集卓越性能、超强稳定性和灵活可编程性于一身的数据采集器,专为构建下一代可观测 Pipeline 设计。它继承了 iLogtail 强大的日志采集与处理能力,从原来单一日志场景,逐步扩展为可观测数据采集、本地计算、服务发现的统一体。愿景是:打造业界领先的“统一可观测 Agent”与“端到端可观测”

自监控指标说明



指标类型

在 LoongCollector 中,有如下几种指标类型:

  • 进程级(agent):LoongCollector的整体状态,包含一些Cpu、Mem等信息。
  • Runner级(runner):LoongCollector内部的独立线程的单例,通常是一整个功能模块,例如file_server、processor_runner等。runner级指标记录的就是这些单例的状态。
  • 配置级(pipeline):每个采集配置的整体状态,例如一条采集配置的总输入、输出、延迟。
  • 组件级(component):每个采集配置运行过程中,会伴随一些组件的使用,例如Batcher、Compressor等。component级指标记录的就是这些组件的状态。
  • 插件级(plugin):每个配置中单个插件的详细指标,例如某个Processor插件的输入、输出、解析失败率。
  • 数据源级(plugin_source):每个配置的数据源的指标,例如文件采集时,每个源文件会有对应的数据,包含文件大小、读取的offset等。

指标格式

LoongCollector的指标为多值Metric结构。具体来说,对于某一个确定的对象(例如一条Pipeline、一个插件、一个数据源),它会存在一条指标记录,里面会以多个label来唯一标识它,并记录多个与它相关的指标值。

下面是一条指标的样例。__name__是指标类型,__labels__是标识该条指标对应的对象的标签,__time__是指标输出的时间戳,__value__是具体指标的值的map。

{
"__labels__":{
"component_name":"process_queue",
"pipeline_name":"pipeline-demo",
"project":"",
"queue_type":"bounded"
},
"__name__":"component",
"__time__":1735127390,
"__value__":{
"fetch_times_total":6000.0,
"in_items_total":0.0,
"in_size_bytes":0.0,
"out_items_total":0.0,
"queue_size":0.0,
"queue_size_bytes":0.0,
"total_delay_ms":0.0,
"valid_fetch_times_total":0.0,
"valid_to_push_status":1.0
}
}

指标解释

LoongCollector的指标较多,这里仅列举一部分重要指标作为说明,未涉及的指标有些是过于细节的内部实现监控,有些是存在变化的可能,可以参考源代码查看用途。

Agent级指标

Agent级的指标记录了LoongCollector的整体状态,例如Cpu、Mem等,全局唯一。

常见Labels:

Label名含义备注
instance_idLoongCollector 的唯一标识
start_timeLoongCollector 的启动时间
hostnameLoongCollector 所在的机器名
osLoongCollector 所处的操作系统
os_detailLoongCollector 的系统详情
versionLoongCollector 的版本

常见Metric Key:

Metric Key含义备注
cpuLoongCollector 的cpu使用核数
memory_used_mbLoongCollector 的内存使用情况,单位为mb
go_routines_totalLoongCollector Go 部分启动的go routine数量k8s场景或使用扩展插件时会启动 LoongCollector Go 部分
go_memory_used_mbLoongCollector Go 部分占用的内存,单位为mbk8s场景或使用扩展插件时会启动 LoongCollector Go 部分
open_fd_totalLoongCollector 打开的文件描述符数量
pipeline_config_totalLoongCollector 应用的采集配置数量

Runner级指标

Runner 是 LoongCollector 内部的独立线程的单例,通常是一整个功能模块,例如file_server、processor_runner等。

常见Labels:

Label名含义备注
runner_nameRunner 的名称常见的runner有:file_server、processor_runner、flusher_runner、http_sink等
thread_noRunner 的线程序号

常见Metric Key:

Metric Key含义备注
in_events_total当前统计周期内,进入 Runner 的 event 总数event 即 PipelineEvent 数据结构,基本可以认为是一条日志
in_size_bytes当前统计周期内,进入 Runner 的数据大小,单位为字节这里统计的是进入 Runner 的数据的大小,该数据可能是压缩过的,不能完全等价于 event 的数据大小
last_run_timeRunner 上次执行任务的时间,格式为秒级时间戳
total_delay_msRunner 执行任务的总延迟,单位为毫秒

Pipeline级指标

Pipeline 是 LoongCollector 的采集配置,它的指标包含Pipeline的基础信息和吞吐量。

常见Labels:

Label名含义备注
pipeline_name采集配置流水线名称

常见Metric Key:

Metric Key含义备注
processor_in_events_total当前统计周期内,进入 Processor 的 event 总数
processor_in_size_bytes当前统计周期内,进入 Processor 的数据大小,单位为字节
processor_total_process_time_ms当前统计周期内,Processor 处理 event 总耗时,单位为毫秒
flusher_in_events_total当前统计周期内,进入 Flusher 的 event 总数
flusher_in_size_bytes当前统计周期内,进入 Flusher 的数据大小,单位为字节
flusher_total_package_time_ms当前统计周期内,Flusher 处理 event 总耗时,单位为毫秒
start_timePipeline 启动时间,格式为秒级时间戳Pipeline更新时,会重新启动,所以该指标可以用于判断 Pipeline 是否成功更新

Component级指标

组件是用于辅助Pipeline运行的对象,它们归属于Pipeline,却对外部不可见(外部可见、可配置的是Plugin)。组件的指标根据组件类型而不同,这里只列举一些重要的。

常见Labels:

Label名含义备注
component_name组件名称有:batcher,compressor,process_queue,router,sender_queue,serializer等。
pipeline_name组件关联的采集配置流水线名称
flusher_plugin_id组件关联的Flusher插件ID部分组件会与Pipeline中的Flusher插件关联,例如 FlusherQueue、Bacther、Compressor等,他们的关系可以参考如何开发原生Flusher插件

常见Metric Key:

Metric Key含义备注
in_events_total当前统计周期内,进入组件的 event 总数event 即 PipelineEvent 数据结构,基本可以认为是一条日志
out_events_total当前统计周期内,流出组件的 event 总数event 即 PipelineEvent 数据结构,基本可以认为是一条日志
discarded_events_total当前统计周期内,被丢弃的 event 总数event 即 PipelineEvent 数据结构,基本可以认为是一条日志
in_items_total当前统计周期内,进入组件的 item 总数item 是一些数据结构的统称,需要根据具体组件判断,不一定对应一条日志
out_items_total当前统计周期内,流出组件的 item 总数item 是一些数据结构的统称,需要根据具体组件判断,不一定对应一条日志
discarded_items_total当前统计周期内,被丢弃的 item 总数item 是一些数据结构的统称,需要根据具体组件判断,不一定对应一条日志
in_size_bytes当前统计周期内,进入组件的数据大小,单位为字节这里统计的是进入 Runner 的数据的大小,该数据可能是压缩或特殊处理过的,不能完全等价于 event 的数据大小
out_size_bytes当前统计周期内,流出组件的数据大小,单位为字节这里统计的是流出 Runner 的数据的大小,该数据可能是压缩或特殊处理过的,不能完全等价于 event 的数据大小
discarded_size_bytes当前统计周期内,被丢弃的数据大小,单位为字节这里统计的是 Runner 丢弃的数据的大小,该数据可能是压缩或特殊处理过的,不能完全等价于 event 的数据大小
total_delay_ms当前统计周期内,组件聚合/发送等的延时,单位为毫秒
total_process_time_ms当前统计周期内,组件处理总耗时,单位为毫秒

Plugin级指标

一条采集配置Pipeline会包含一些插件,每个插件在运行过程中都会产生一些指标。

常见Labels:

Label名含义备注
plugin_type插件名
plugin_id插件id此ID按Pipeline内插件顺序生成,暂时只用于标识插件,没有其他含义
pipeline_name插件所属的采集配置流水线名称

常见Metric Key:

Metric Key含义备注
in_events_total当前统计周期内,进入插件的 event 总数event 即 PipelineEvent 数据结构,基本可以认为是一条日志
out_events_total当前统计周期内,流出插件的 event 总数event 即 PipelineEvent 数据结构,基本可以认为是一条日志
discarded_events_total当前统计周期内,被丢弃的 event 总数event 即 PipelineEvent 数据结构,基本可以认为是一条日志
in_size_bytes当前统计周期内,进入插件的数据大小,单位为字节这里统计的是进入 Runner 的数据的大小,该数据可能是压缩或特殊处理过的,不能完全等价于 event 的数据大小
out_size_bytes当前统计周期内,流出插件的数据大小,单位为字节这里统计的是流出 Runner 的数据的大小,该数据可能是压缩或特殊处理过的,不能完全等价于 event 的数据大小
discarded_size_bytes当前统计周期内,被丢弃的数据大小,单位为字节这里统计的是 Runner 丢弃的数据的大小,该数据可能是压缩或特殊处理过的,不能完全等价于 event 的数据大小
total_delay_ms当前统计周期内,插件聚合/发送等的延时,单位为毫秒
total_process_time_ms当前统计周期内,插件处理总耗时,单位为毫秒
monitor_file_total当前统计周期内,插件监控的文件总数仅限文件采集场景

PluginSource级指标

这一级指标是标记数据源信息的,例如对于文件采集,被采集的文件的信息就会记录到PluginSource级指标中

常见Labels:

Label名含义备注
file_dev被采集的文件设备号仅限文件采集
file_inode被采集的文件inode号仅限文件采集
file_name被采集的文件路径仅限文件采集

常见Metric Key:

Metric Key含义备注
read_offset_bytes当前读取的文件读到的位置仅限文件采集
size_bytes当前读取的文件的大小仅限文件采集

获取自监控指标

请参见如何收集自监控指标

添加自监控指标

请参见如何添加自监控指标


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32