使用 Splunk 筛选日志
使用 Splunk 筛选日志的系统路径
DC/OS 任务日志的文件系统路径包含代理 ID、框架 ID 和执行器 ID 等信息。您可以使用此信息来筛选特定任务、应用程序或代理的日志输出。
前提条件
配置
您可以通过使用 Splunk Web 界面 或编辑 props.conf 文件 来配置 Splunk。
Splunk Web 界面
导航至设置 -> 字段 -> 字段提取 -> 新。
使用以下信息填写表格:
- 目标应用:
search
- 名称:
dcos_task
(或提取的任何有意义的唯一性名称) - 适用于名为
/var/lib/mesos/slave/...
的source
- 类型:
Inline
提取/转换:
/var/lib/mesos/slave/slaves/(?<agent>[^/]+)/frameworks/(?<framework>[^/]+)/executors/(?<executor>[^/]+)/runs/(?<run>[^/]+)/.* in source
- 目标应用:
点击保存。
在字段提取视图中,找到刚创建的提取内容并适当地设置权限。
agent
、framework
、executor
和run
字段现在应该可用于搜索查询,显示在与 Mesos 任务日志事件相关的字段中。
props.conf
添加以下条目至
props.conf
(请参阅 Splunk 文档 了解详情):[source::/var/lib/mesos/slave/...]
EXTRACT = /var/lib/mesos/slave/slaves/(?<agent>[^/]+)/frameworks/(?<framework>[^/]+)/executors/(?<executor>[^/]+)/runs/(?<run>[^/]+)/.* in source
在 Splunk Web 界面运行以下搜索,以确保更改内容生效:
extract reload=true
agent
、framework
、executor
和 run
字段现在应该可用于搜索查询,显示在与 Mesos 任务日志事件相关的字段中。
使用示例
在 Splunk Web 界面,将
framework=*
输入“搜索”字段。这将显示framework
字段已定义的所有事件:图 1. Splunk 事件屏幕
点击其中一个事件旁边的披露三角形可查看详细信息。这将显示从任务日志文件路径提取的所有字段:
图 2. 任务日志文件路径中的字段
搜索所有提到上述屏幕截图中所示事件框架 ID 的事件,但不要包含选中的
framework
字段。这将仅显示非任务结果:图 3. 搜索结果
模板示例
以下是用于使用 Splunk 聚合 DC/OS 日志的查询模板示例。使用群集中的实际值替换模板参数 $executor1
、$framework2
,以及任何其他内容。
警示:请勿更改这些示例中的引号,否则查询将不起作用。如果您创建自定义查询,请注意引号的放置。
与特定执行器相关的日志
$executor1
,包括从该执行器运行的任务的日志:"$executor1"
与特定执行器有关的非任务日志
$executor1
:"$executor1" AND NOT executor=$executor1
框架的日志(包括任务日志)
$framework1
,如果$executor1
和$executor2
是该框架的执行器:"$framework1" OR "$executor1" OR "$executor2"
框架的非任务日志
$framework1
,如果$executor1
和$executor2
是该框架的执行器:("$framework1" OR "$executor1" OR "$executor2") AND NOT (framework=$framework1 OR executor=$executor1 OR executor=$executor2)
特定代理主机上
$agent_host1
框架的日志$framework1
:host=$agent_host1 AND ("$framework1" OR "$executor1" OR "$executor2")
带主机
$agent_host1
的特定代理$agent1
上框架$framework1
的非任务日志:host=$agent_host1 AND ("$framework1" OR "$executor1" OR "$executor2") AND NOT agent=$agent