调试独立 Elastic Agent

编辑

当您运行独立的 Elastic Agent 时,您负责监控已部署的 Elastic Agent 的状态。您无法在 Fleet 中查看状态或日志。

使用以下提示来帮助识别潜在问题。

另请参阅排查常见问题以获取有关特定问题的指导。

您可能需要以 root 用户(或 Windows 上的管理员)身份登录才能运行这些命令。

检查正在运行的 Elastic Agent 的状态

编辑

要检查正在运行的 Elastic Agent 守护程序和 Elastic Agent 管理的其他进程的状态,请运行 status 命令。例如

elastic-agent status

返回类似以下内容

State: HEALTHY
Message: Running
Fleet State: STOPPED
Fleet Message: (no message)
Components:
  * log           (HEALTHY)
                  Healthy: communicating with pid '25423'
  * filestream    (HEALTHY)
                  Healthy: communicating with pid '25424'

默认情况下,此命令以人类可读的格式返回状态。使用 --output 标志将其更改为 jsonyaml

有关此命令的更多信息,请参阅elastic-agent status

检查 Elastic Agent 和相关日志

编辑

如果 Elastic Agent 的状态不正常或行为异常,请检查正在运行的 Elastic Agent 的日志。

日志位置因平台而异。Elastic Agent 日志位于安装布局中描述的文件夹中。Beats 和 Fleet Server 日志位于以输出命名的文件夹中(例如,default)。

首先调查您在 Elastic Agent 和相关日志中看到的任何错误。还要查找可能表明连接问题等问题的重复行。如果 Elastic Agent 和相关日志看起来正常,请检查主机操作系统日志中是否有与 Elastic Agent 或其任何进程相关的内存不足(OOM)错误。

提高正在运行的 Elastic Agent 的日志级别

编辑

默认情况下,正在运行的 Agent 的日志级别设置为 info。在此级别,Elastic Agent 将记录信息性消息,包括发布的事件数量。它还会记录任何警告、错误或严重错误。

要提高日志级别,请在 elastic-agent.yml 文件中将其设置为 debug

debug 设置将 Elastic Agent 配置为记录调试消息,包括所有刷新事件的详细打印输出,以及在其他日志级别收集的所有信息。

如果要将日志写入文件,请设置其他选项。例如

agent.logging.level: debug
agent.logging.to_files: true
agent.logging.files:
  path: /var/log/elastic-agent
  name: elastic-agent
  keepfiles: 7
  permissions: 0600

有关其他日志设置,请参阅日志记录

通过监控端点公开 /debug/pprof/ 端点

编辑

/debug/pprof/ 端点生成的性能分析数据对于调试可能很有用,但存在安全风险。如果可以通过网络访问监控端点,请勿公开这些端点。(默认情况下,监控端点绑定到本地 Unix 套接字或 Windows 命名管道,无法通过网络访问。)

要公开 /debug/pprof/ 端点,请在 elastic-agent.yml 文件中设置 agent.monitoring.pprof: true。有关监控设置的更多信息,请参阅监控

公开端点后,您可以访问绑定到 Beats 或 Elastic Agent 的套接字的 HTTP 处理程序。例如

sudo curl --unix-socket /Library/Elastic/Agent/data/tmp/default/filebeat/filebeat.sock http://socket/ | json_pp

返回类似以下内容

{
   "beat" : "filebeat",
   "binary_arch" : "amd64",
   "build_commit" : "93708bd74e909e57ed5d9bea3cf2065f4cc43af3",
   "build_time" : "2022-01-28T09:53:29.000Z",
   "elastic_licensed" : true,
   "ephemeral_id" : "421e2525-9360-41db-9395-b9e627fbbe6e",
   "gid" : "0",
   "hostname" : "My-MacBook-Pro.local",
   "name" : "My-MacBook-Pro.local",
   "uid" : "0",
   "username" : "root",
   "uuid" : "fc0cc98b-b6d8-4eef-abf5-2d5f26adc7e8",
   "version" : "7.17.0"
}

同样,以下请求

sudo curl --unix-socket /Library/Elastic/Agent/data/tmp/elastic-agent.sock http://socket/stats | json_pp

返回类似以下内容

{
   "beat" : {
      "cpu" : {
         "system" : {
            "ticks" : 16272,
            "time" : {
               "ms" : 16273
            }
         },
         "total" : {
            "ticks" : 42981,
            "time" : {
               "ms" : 42982
            },
            "value" : 42981
         },
         "user" : {
            "ticks" : 26709,
            "time" : {
               "ms" : 26709
            }
         }
      },
      "info" : {
         "ephemeral_id" : "ea8fec0d-f7dd-4577-85d7-a2c38583c9c6",
         "uptime" : {
            "ms" : 5885653
         },
         "version" : "7.17.0"
      },
      "memstats" : {
         "gc_next" : 13027776,
         "memory_alloc" : 7771632,
         "memory_sys" : 39666696,
         "memory_total" : 757970208,
         "rss" : 58990592
      },
      "runtime" : {
         "goroutines" : 101
      }
   },
   "system" : {
      "cpu" : {
         "cores" : 12
      },
      "load" : {
         "1" : 4.8892,
         "15" : 2.6748,
         "5" : 3.0537,
         "norm" : {
            "1" : 0.4074,
            "15" : 0.2229,
            "5" : 0.2545
         }
      }
   }
}

检查 Elastic Agent 配置

编辑

要检查正在运行的 Elastic Agent 配置,请使用 elastic-agent inspect 命令。

要分析 Agent 的当前状态、检查日志文件以及查看 Elastic Agent 及其启动的子进程的配置,请运行 diagnostics 命令。例如

elastic-agent diagnostics

有关此命令的更多信息,请参阅elastic-agent diagnostics