elasticsearch 使用带有ECS布局的Nlog记录器,在kibana中,json对象显示为字符串,而不是多个属性,elasticsearch,kibana,nlog,elastic-common-schema,elasticsearch,Kibana,Nlog,Elastic Common Schema" /> elasticsearch 使用带有ECS布局的Nlog记录器,在kibana中,json对象显示为字符串,而不是多个属性,elasticsearch,kibana,nlog,elastic-common-schema,elasticsearch,Kibana,Nlog,Elastic Common Schema" />

elasticsearch 使用带有ECS布局的Nlog记录器,在kibana中,json对象显示为字符串,而不是多个属性

elasticsearch 使用带有ECS布局的Nlog记录器,在kibana中,json对象显示为字符串,而不是多个属性,elasticsearch,kibana,nlog,elastic-common-schema,elasticsearch,Kibana,Nlog,Elastic Common Schema,我正在开发一些.Net framework应用程序,我被要求使用kibana作为UI将日志发送到elasticsearch。 为了实现标准化,我必须实现ECS(弹性公共模式) 看一下我们在ECS上的示例,我们只需要通过以下方式实现它: 我将它发送到elastic search,而不是发送到控制台,就像我们在示例中所做的那样 它的输出将是一个很好的Json对象 也许我们希望在kibana上看到如下内容(kibana-Discover): 考虑到这一点,可能Json对象应该被视为字符串,所有内

我正在开发一些.Net framework应用程序,我被要求使用kibana作为UI将日志发送到elasticsearch。 为了实现标准化,我必须实现ECS(弹性公共模式)

看一下我们在ECS上的示例,我们只需要通过以下方式实现它:

我将它发送到elastic search,而不是发送到控制台,就像我们在示例中所做的那样

它的输出将是一个很好的Json对象

也许我们希望在kibana上看到如下内容(
kibana
-
Discover
):

考虑到这一点,可能Json对象应该被视为字符串,所有内容都放在
message
属性中,但这不是我要寻找的,我希望Json被划分为许多属性

由于我是弹性堆栈世界的新手,我尝试在
索引管理
页面中创建一个模板,并在那里执行手动映射,如
消息。_metadata.url
,以不将某些属性视为字符串的一部分,但没有成功

我很难找到有用的信息来解决这个问题,有人能给我一个提示吗

更新:

我找到了属性
enableJsonLayout=“true”
,我们可以将它放在
Nlog
的目标上,它确实可以将Json布局上的内容作为ElasticSearch上的属性,这很好

这是使用ECS的正确方式吗?
如何添加传统属性?

当您启用此
enableJsonLayout=“true”
时,意味着配置的布局必须处理所有内容。对于EcsLayout,您可以在此处找到文档:

默认情况下,EcsLayout将包括所有日志事件属性作为元数据。另见

但您可以显式添加额外的元数据项:

<layout xsi:type="EcsLayout">
   <metadata name="MyProperty" layout="MyPropertyValue" />
</layout>


Cool,元数据属性数据工作时,您是救命恩人!您在哪里发现我们可以添加额外的元数据项?我查看了一些EcsLayout和Nlog代码和文档,但没有发现。@Nmaster88创建了pull请求以更新文档。现在您可以在这里预览:感谢PR,我现在看到这个属性
[ArrayParameter(typeof(TargetPropertyWithContext),“metadata”)]
是允许在xml上添加这些道具的。顺便问一下,有没有可能知道每一个目标是什么?我已经看到的元数据可以在
元数据
对象中添加新的道具,但是其他的
标签
标签
我只能猜测。我注意到,我通过
web.config
添加的这些
元数据
道具即使在elasticsearch中没有任何值也会出现,这意味着在kibana上我看到了空字段,有可能改变这种行为吗?不需要道具时不发送。@Nmaster88“标签”和“标签”是ECS架构的一部分: