了解 Auditbeat 日志中的指标

编辑

了解 Auditbeat 日志中的指标编辑

默认情况下,Auditbeat 每隔 30 秒会收集一次自身指标的*快照*。Auditbeat 会根据此快照计算*增量快照*;此增量快照包含自上次快照以来已*更改*的任何指标。请注意,指标的值是获取快照时的值,*而不是*自上次快照以来的值*差异*。

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

{"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 下最重要字段的含义,并提供了一些可能有助于解决 Auditbeat 问题的提示。

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

.beat

对象

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

.libbeat

对象

关于发布者管道和输出的信息,也适用于所有 Beat

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

.runtime.goroutines

整数

正在运行的 goroutine 数量

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

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

.pipeline.events.active

整数

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

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

.output.events.total

整数

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

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

.output.events.acked

整数

输出目标确认的事件数。

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

.output.events.failed

整数

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

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

有用的命令编辑

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

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