我有一个带有EFK堆栈的OKD集群设置,用于记录日志,如here所述。我以前从未使用过其中一个组件。
一个部署会记录包含我感兴趣的特定值的请求。我只想提取此值,然后使用Kibana中的区域图将其可视化,以显示请求的数量和来源。
message
字段的内容基本上如下所示:
[fooServiceClient#doStuff] {"somekey":"somevalue", "multivalue-key": {"plz":"12345", "foo": "bar"}, "someotherkey":"someothervalue"}
此plz
是德语的邮政编码,我希望按照介绍将其可视化。
我的问题是我不知道如何提取该值。
如果我可以用正则表达式找到它,那将是一个不错的第一个成功,但是Kibana似乎没有按照我认为的方式工作。遵循其文档,我希望此/\"plz\":\"[0-9]{5}\"/
为我提供结果,但是我得到了0次点击(时间间隔设置正确)。即使此正则表达式匹配,我也只能找到包含该正则表达式的日志条目,而不仅仅是指定值。我怎么在这里继续?
我想我还需要一个外部地理编码服务,但是什么时候可以包含它呢?还是Kibana本身知道如何将邮政编码映射到几何?
一个对初学者友好的循序渐进指南将是完美的,但是我可以满足一些指导我的建议。
答案 0 :(得分:1)
当使用ingest pipeline with grok processor将文档索引到ES中时,可以解析Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Activate
If Not Application.Intersect(Range("U13"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "Brand Health": Rows("19:39").EntireRow.Hidden = True
Rows("40:60").EntireRow.Hidden = False
Case Is = "Brand Imagery": Rows("38:60").EntireRow.Hidden = True
Rows("61:81").EntireRow.Hidden = False
Case Is = "NPS": Rows("30:82").EntireRow.Hidden = True
Rows("83:102").EntireRow.Hidden = False
Case Is = "Talent": Rows("35:103").EntireRow.Hidden = True
Rows("104:126").EntireRow.Hidden = False
Case Is = "Shows": Rows("37:127").EntireRow.Hidden = True
Rows("128:148").EntireRow.Hidden = False
End Select
End If
End Sub
Private Sub Worksheet_Change(ByVal Target`enter code here` As Range)
Sheets("Brand Tracking Dashboard").Rows("1:1000").EntireRow.Hidden = False ' Move this to the top
If Target.Address = ("$U$13") And Target.Value = 1 Then
Sheets("Brand Tracking Dashboard").Rows("19:39").EntireRow.Hidden = True
Sheets("Brand Tracking Dashboard").Rows("59:1000").EntireRow.Hidden = True
ElseIf Target.Address = ("$u$13") And Target.Value = 2 Then
Sheets("Brand Tracking Dashboard").Rows("43:63").EntireRow.Hidden = True
Sheets("Brand Tracking Dashboard").Rows("80:1000").EntireRow.Hidden = True
ElseIf Target.Address = ("$u$13") And Target.Value = 3 Then
Sheets("Brand Tracking Dashboard").Rows("32:84").EntireRow.Hidden = True
Sheets("Brand Tracking Dashboard").Rows("101:1000").EntireRow.Hidden = True
ElseIf Target.Address = ("$u$13") And Target.Value = 4 Then
Sheets("Brand Tracking Dashboard").Rows("37:106").EntireRow.Hidden = True
Sheets("Brand Tracking Dashboard").Rows("121:1000").EntireRow.Hidden = True
ElseIf Target.Address = ("$u$13") And Target.Value = 5 Then
Sheets("Brand Tracking Dashboard").Rows("37:129").EntireRow.Hidden = True
Sheets("Brand Tracking Dashboard").Rows("145:1000").EntireRow.Hidden = True
End If
End Sub
字段。
首先,像这样创建摄取管道:
message
然后,当您为数据建立索引时,只需引用该管道即可:
PUT _ingest/pipeline/parse-plz
{
"processors": [
{
"grok": {
"field": "message",
"patterns": [
"%{POSINT:plz}"
]
}
}
]
}
最后您将得到一个类似于以下文档的文档,该文档现在具有一个名为PUT plz/_doc/1?pipeline=parse-plz
{
"message": """[fooServiceClient#doStuff] {"somekey":"somevalue", "multivalue-key": {"plz":"12345", "foo": "bar"}, "someotherkey":"someothervalue"}"""
}
的字段,其中包含plz
值:
12345
从Fluentd为文档编制索引时,可以在配置中specify a pipeline to be used。如果您不能或不想修改Fluentd配置,还可以为索引定义默认管道,该管道将在每次索引新文档时启动。只需对索引运行此操作,就可以在为文档建立索引时无需指定{
"message": """[fooServiceClient#doStuff] {"somekey":"somevalue", "multivalue-key": {"plz":"12345", "foo": "bar"}, "someotherkey":"someothervalue"}""",
"plz": "12345"
}
:
?pipeline=parse-plz
如果您有多个索引,则更好的方法可能是定义一个index template,以便无论何时创建名为PUT index/_settings
{
"index.default_pipeline": "parse-plz"
}
-的新索引时,都将应用设置: / p>
project.foo
现在,要在地图上映射该PLZ,首先需要找到一个数据集,为您提供每个PLZ的地理位置。
然后,您可以在管道中添加第二个处理器,以便将PLZ / ZIP映射到纬度,经度映射:
PUT _template/project-indexes
{
"index_patterns": ["project.foo*"],
"settings": {
"index.default_pipeline": "parse-plz"
}
}
最终,您的文档将如下所示,并且您将能够利用Kibana可视化中的PUT _ingest/pipeline/parse-plz
{
"processors": [
{
"grok": {
"field": "message",
"patterns": [
"%{POSINT:plz}"
]
}
},
{
"script": {
"lang": "painless",
"source": "ctx.location = params[ctx.plz];",
"params": {
"12345": {"lat": 42.36, "lon": 7.33}
}
}
}
]
}
字段:
location
总而言之,归结为两点:
{
"message": """[fooServiceClient#doStuff] {"somekey":"somevalue", "multivalue-key": {"plz":"12345", "foo": "bar"}, "someotherkey":"someothervalue"}""",
"plz": "12345",
"location": {
"lat": 42.36,
"lon": 7.33
}
}
索引创建索引模板,这些索引的设置包括在步骤1中创建的管道。