> For the complete documentation index, see [llms.txt](https://ilogtail.gitbook.io/ilogtail-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ilogtail.gitbook.io/ilogtail-docs/pre-release/developer-guide/zi-jian-kong/zhi-biao/internal-metrics-description.md).

# 自监控指标说明

## 指标类型

在 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 结构。具体来说，对于某一个确定的对象（例如**一个采集配置**（collection pipeline）、**一个插件**、一个数据源），它会存在一条指标记录，里面会以多个 label 来唯一标识它，并记录多个与它相关的指标值。

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

```json
{
    "__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的指标较多，这里仅列举一部分重要指标作为说明，未涉及的指标有些是过于细节的内部实现监控，有些是存在变化的可能，可以参考[源代码](https://github.com/alibaba/loongcollector/tree/main/core/monitor/metric_constants)查看用途。

### Agent级指标

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

常见Labels：

| **Label名**   | **含义**                 | **备注** |
| ------------ | ---------------------- | ------ |
| instance\_id | LoongCollector 的唯一标识   |        |
| start\_time  | LoongCollector 的启动时间   |        |
| hostname     | LoongCollector 所在的机器名  |        |
| os           | LoongCollector 所处的操作系统 |        |
| os\_detail   | LoongCollector 的系统详情   |        |
| version      | LoongCollector 的版本     |        |

常见Metric Key：

| **Metric Key**          | **含义**                                        | **备注**                                |
| ----------------------- | --------------------------------------------- | ------------------------------------- |
| cpu                     | LoongCollector 的cpu使用核数                       |                                       |
| memory\_used\_mb        | LoongCollector 的内存使用情况，单位为mb                  |                                       |
| go\_routines\_total     | LoongCollector Go 部分启动的go routine数量           | k8s场景或使用扩展插件时会启动 LoongCollector Go 部分 |
| go\_memory\_used\_mb    | LoongCollector Go 部分占用的内存，单位为mb               | k8s场景或使用扩展插件时会启动 LoongCollector Go 部分 |
| open\_fd\_total         | LoongCollector 打开的文件描述符数量                     |                                       |
| pipeline\_config\_total | LoongCollector 应用的采集配置（collection pipeline）数量 |                                       |

### Runner级指标

Runner 是 LoongCollector 内部的独立线程的单例，通常是一整个功能模块，例如file\_server、processor\_runner等。

常见Labels：

| **Label名**   | **含义**       | **备注**                                                                |
| ------------ | ------------ | --------------------------------------------------------------------- |
| runner\_name | Runner 的名称   | 常见的runner有：file\_server、processor\_runner、flusher\_runner、http\_sink等 |
| thread\_no   | Runner 的线程序号 |                                                                       |

常见Metric Key：

| **Metric Key**    | **含义**                        | **备注**                                                |
| ----------------- | ----------------------------- | ----------------------------------------------------- |
| in\_events\_total | 当前统计周期内，进入 Runner 的 event 总数  | event 即 PipelineEvent 数据结构，通常可视为 **一条数据**             |
| in\_size\_bytes   | 当前统计周期内，进入 Runner 的数据大小，单位为字节 | 这里统计的是进入 Runner 的数据的大小，该数据可能是压缩过的，不能完全等价于 event 的数据大小 |
| last\_run\_time   | Runner 上次执行任务的时间，格式为秒级时间戳     |                                                       |
| total\_delay\_ms  | Runner 执行任务的总延迟，单位为毫秒         |                                                       |

### 采集配置级指标

[采集配置](/ilogtail-docs/pre-release/configuration/collection-config.md)（collection 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\_time                         | 采集配置启动时间，格式为秒级时间戳                    | 采集配置更新时会重新启动，可用该指标判断是否更新成功 |

### Component级指标

组件是用于辅助采集配置（collection pipeline）运行的对象，它们归属于该采集配置，却对外部不可见（外部可见、可配置的是 Plugin）。组件的指标根据组件类型而不同，这里只列举一些重要的。

常见Labels：

| **Label名**          | **含义**           | **备注**                                                                                                                                                                                                                   |
| ------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| component\_name     | 组件名称             | 有：batcher，compressor，process\_queue，router，sender\_queue，serializer等。                                                                                                                                                    |
| pipeline\_name      | 组件关联的采集配置名称      |                                                                                                                                                                                                                          |
| flusher\_plugin\_id | 组件关联的Flusher插件ID | 部分组件会与采集配置中的 Flusher 插件关联，例如 FlusherQueue、Bacther、Compressor 等，他们的关系可以参考[如何开发原生Flusher插件](/ilogtail-docs/pre-release/developer-guide/cha-jian-kai-fa/yuan-sheng-cha-jian-kai-fa/how-to-write-native-flusher-plugins.md)。 |

常见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级指标

**一个采集配置**会包含若干[插件](/ilogtail-docs/pre-release/plugins/overview.md)；**每个插件**在运行过程中都会产生一些指标。

常见Labels：

| **Label名**     | **含义**      | **备注**                             |
| -------------- | ----------- | ---------------------------------- |
| plugin\_type   | 插件名         |                                    |
| plugin\_id     | 插件id        | 此 ID 按采集配置内插件顺序生成，暂时只用于标识插件，没有其他含义 |
| 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         | 当前读取的文件的大小   | 仅限文件采集 |

## 获取自监控指标

请参见[如何收集自监控指标](/ilogtail-docs/pre-release/developer-guide/zi-jian-kong/zhi-biao/how-to-collect-internal-metrics.md)。

## 添加自监控指标

请参见[如何添加自监控指标](/ilogtail-docs/pre-release/developer-guide/zi-jian-kong/zhi-biao/how-to-add-internal-metrics.md)。
