了解 Filebeat 日志中的指标

编辑

了解 Filebeat 日志中的指标编辑

默认情况下,Filebeat 每 30 秒收集一次有关自身指标的快照。Filebeat 从此快照计算出增量快照;此增量快照包含自上次快照以来发生变化的任何指标。请注意,指标的值是快照拍摄时的值,而不是自上次快照以来的差值

如果此增量快照包含任何指标(表示自上次快照以来至少有一个指标已更改),则此增量快照将被序列化为 JSON,并在 Filebeat 的日志中以 INFO 日志级别发出。以下是一个此类日志条目的示例

{"log.level":"info","@timestamp":"2023-07-14T12:50:36.811Z","log.logger":"monitoring","log.origin":{"file.name":"log/log.go","file.line":187},"message":"Non-zero metrics in the last 30s","service.name":"filebeat","monitoring":{"metrics":{"beat":{"cgroup":{"memory":{"mem":{"usage":{"bytes":0}}}},"cpu":{"system":{"ticks":692690,"time":{"ms":60}},"total":{"ticks":3167250,"time":{"ms":150},"value":3167250},"user":{"ticks":2474560,"time":{"ms":90}}},"handles":{"limit":{"hard":1048576,"soft":1048576},"open":32},"info":{"ephemeral_id":"2bab8688-34c0-4522-80af-db86948d547d","uptime":{"ms":617670096},"version":"8.6.2"},"memstats":{"gc_next":57189272,"memory_alloc":43589824,"memory_total":275281335792,"rss":183574528},"runtime":{"goroutines":212}},"filebeat":{"events":{"active":5,"added":52,"done":49},"harvester":{"open_files":6,"running":6,"started":1}},"libbeat":{"config":{"module":{"running":15}},"output":{"events":{"acked":48,"active":0,"batches":6,"total":48},"read":{"bytes":210},"write":{"bytes":26923}},"pipeline":{"clients":15,"events":{"active":5,"filtered":1,"published":51,"total":52},"queue":{"acked":48}}},"registrar":{"states":{"current":14,"update":49},"writes":{"success":6,"total":6}},"system":{"load":{"1":0.91,"15":0.37,"5":0.4,"norm":{"1":0.1138,"15":0.0463,"5":0.05}}}},"ecs.version":"1.6.0"}}

详细信息编辑

关注 .monitoring.metrics 字段,并格式化 JSON,其值是

{
  "beat": {
    "cgroup": {
      "memory": {
        "mem": {
          "usage": {
            "bytes": 0
          }
        }
      }
    },
    "cpu": {
      "system": {
        "ticks": 692690,
        "time": {
          "ms": 60
        }
      },
      "total": {
        "ticks": 3167250,
        "time": {
          "ms": 150
        },
        "value": 3167250
      },
      "user": {
        "ticks": 2474560,
        "time": {
          "ms": 90
        }
      }
    },
    "handles": {
      "limit": {
        "hard": 1048576,
        "soft": 1048576
      },
      "open": 32
    },
    "info": {
      "ephemeral_id": "2bab8688-34c0-4522-80af-db86948d547d",
      "uptime": {
        "ms": 617670096
      },
      "version": "8.6.2"
    },
    "memstats": {
      "gc_next": 57189272,
      "memory_alloc": 43589824,
      "memory_total": 275281335792,
      "rss": 183574528
    },
    "runtime": {
      "goroutines": 212
    }
  },
  "filebeat": {
    "events": {
      "active": 5,
      "added": 52,
      "done": 49
    },
    "harvester": {
      "open_files": 6,
      "running": 6,
      "started": 1
    }
  },
  "libbeat": {
    "config": {
      "module": {
        "running": 15
      }
    },
    "output": {
      "events": {
        "acked": 48,
        "active": 0,
        "batches": 6,
        "total": 48
      },
      "read": {
        "bytes": 210
      },
      "write": {
        "bytes": 26923
      }
    },
    "pipeline": {
      "clients": 15,
      "events": {
        "active": 5,
        "filtered": 1,
        "published": 51,
        "total": 52
      },
      "queue": {
        "acked": 48
      }
    }
  },
  "registrar": {
    "states": {
      "current": 14,
      "update": 49
    },
    "writes": {
      "success": 6,
      "total": 6
    }
  },
  "system": {
    "load": {
      "1": 0.91,
      "5": 0.4,
      "15": 0.37,
      "norm": {
        "1": 0.1138,
        "5": 0.05,
        "15": 0.0463
      }
    }
  }
}

以下表格解释了 .monitoring.metrics 下最重要的字段的含义,并提供了一些可能有助于解决 Filebeat 问题的提示。

字段路径(相对于 .monitoring.metrics 类型 含义 故障排除提示

.beat

对象

所有 Beat 共有的信息,例如版本、goroutine、文件句柄、CPU、内存

.libbeat

对象

有关发布器管道和输出的信息,所有 Beat 共有

.filebeat

对象

Filebeat 特定的信息,例如收集器、事件

字段路径(相对于 .monitoring.metrics.beat 类型 含义 故障排除提示

.runtime.goroutines

整数

正在运行的 goroutine 数量

如果此数字随着时间的推移而增长,则表示存在 goroutine 泄漏

字段路径(相对于 .monitoring.metrics.libbeat 类型 含义 故障排除提示

.pipeline.events.active

整数

当前 libbeat 发布器管道中的事件数。

如果此数字随着时间的推移而增长,则可能表示 Filebeat 生成事件的速度快于输出消耗事件的速度。考虑增加输出工作进程的数量(如果此设置受输出支持;Elasticsearch 和 Logstash 输出支持此设置)。管道包括当前正在处理的事件以及队列中的事件。因此,此指标有时会略高于队列大小。如果此指标达到最大队列大小(内存队列的 queue.mem.events),则几乎肯定表明 Filebeat 存在背压,这意味着 Filebeat 可能需要暂时停止从源中获取更多事件,直到此背压消除。

.output.events.total

整数

当前由输出处理的事件数。

如果此数字随着时间的推移而增长,则可能表示输出目标(例如 Logstash 管道或 Elasticsearch 集群)无法以与 Filebeat 发送到它的事件相同或更快的速度接受事件。

.output.events.acked

整数

输出目标确认的事件数。

通常,我们希望此数字与 .output.events.total 相同,因为这表明输出目标已可靠地接收了发送给它的所有事件。

.output.events.failed

整数

Filebeat 尝试发送到输出目标但目标未能接收的事件数。

通常,我们希望此字段不存在或其值为零。当值大于零时,在检查此日志条目 @timestamp 之前查看 Filebeat 的日志以查看是否存在与输出目标的任何连接问题很有用。请注意,失败的事件不会丢失或丢弃;它们将被发送回发布器管道以供稍后重试。

字段路径(相对于 .monitoring.metrics.filebeat 类型 含义 故障排除提示

.events.active

整数

Filebeat 正在积极处理的事件数(包括 Filebeat 已发送到 libbeat 发布器管道的事件,但不包括管道已发送到输出的事件)。

如果此数字随着时间的推移而增长,则可能表示 Filebeat 输入正在以管道和输出无法跟上的速度收集事件。

有用命令编辑

从非结构化 Filebeat 日志中解析监控指标编辑

对于发出非结构化日志的 Filebeat 版本,可以使用以下脚本从此类日志中解析监控指标:https://github.com/elastic/beats/blob/main/script/metrics_from_log_file.sh

检查 Filebeat 是否正在处理事件编辑

$ cat beat.log | jq -r '[.["@timestamp"],.monitoring.metrics.filebeat.events.active,.monitoring.metrics.libbeat.pipeline.events.active,.monitoring.metrics.libbeat.output.events.total,.monitoring.metrics.libbeat.output.events.acked,.monitoring.metrics.libbeat.output.events.failed//0] | @tsv' | sort

示例输出

2023-07-14T11:24:36.811Z	1	1	38033	38033	0
2023-07-14T11:25:06.811Z	1	1	17	17	0
2023-07-14T11:25:36.812Z	1	1	16	16	0
2023-07-14T11:26:06.811Z	1	1	17	17	0
2023-07-14T11:26:36.811Z	2	2	21	21	0
2023-07-14T11:27:06.812Z	1	1	18	18	0
2023-07-14T11:27:36.811Z	1	1	17	17	0
2023-07-14T11:28:06.811Z	1	1	18	18	0
2023-07-14T11:28:36.811Z	1	1	16	16	0
2023-07-14T11:37:06.811Z	1	1	270	270	0
2023-07-14T11:37:36.811Z	1	1	16	16	0
2023-07-14T11:38:06.811Z	1	1	17	17	0
2023-07-14T11:38:36.811Z	1	1	16	16	0
2023-07-14T11:41:36.811Z	3	3	323	323	0
2023-07-14T11:42:06.811Z	3	3	17	17	0
2023-07-14T11:42:36.812Z	4	4	18	18	0
2023-07-14T11:43:06.811Z	4	4	17	17	0
2023-07-14T11:43:36.811Z	2	2	17	17	0
2023-07-14T11:47:06.811Z	0	0	117	117	0
2023-07-14T11:47:36.811Z	2	2	14	14	0
2023-07-14T11:48:06.811Z	3	3	17	17	0
2023-07-14T11:48:36.811Z	2	2	17	17	0
2023-07-14T12:49:36.811Z	3	3	2008	1960	48
2023-07-14T12:50:06.812Z	2	2	18	18	0
2023-07-14T12:50:36.811Z	5	5	48	48	0

此处的列是

  1. .@timestamp
  2. .monitoring.metrics.filebeat.events.active
  3. .monitoring.metrics.libbeat.pipeline.events.active
  4. .monitoring.metrics.libbeat.output.events.total
  5. .monitoring.metrics.libbeat.output.events.acked
  6. .monitoring.metrics.libbeat.output.events.failed