我正在将Elasticsearch和Kibana设置为我们办公室的集中式日志记录平台。
我们有许多自定义实用程序和插件,我想跟踪其使用情况以及用户是否遇到任何错误。更不用说还有我想跟踪的服务器和预定工作。
因此,如果我有许多不同的日志数据来源都会转到同一个弹性搜索集群,那么它们如何组织成索引和文档类型的约定或最佳实践呢?
Logstash使用的默认索引值为"logstash-%{+YYYY.MM.dd}"
。因此,最好使用当前日期为任何索引名称添加后缀,因为这样可以轻松清除旧数据。
然而,Kibana允许添加多个"索引模式"可以在UI中选择。然而,我读过的所有教程都只提到创建像logstash-*
这样的单一模式。
如何在实践中使用多种索引模式?我是否只为我的数据的所有来源命名?如:
BackupUtility-%{+YYYY.MM.dd}
UserTracker-%{+YYYY.MM.dd}
ApacheServer-%{+YYYY.MM.dd}
我在nLog的许多工具中使用elastic search target。 nLog和其他类似日志框架的约定是有一个"记录器"对于源代码中的每个类。这些记录器是否应该转换为弹性搜索中的索引?
MyCompany.CustomTool.FooClass-%{+YYYY.MM.dd}
MyCompany.CustomTool.BarClass-%{+YYYY.MM.dd}
MyCompany.OtherTool.BazClass-%{+YYYY.MM.dd}
或者这对于弹性搜索索引名称来说太过细化了,最好只关注应用程序的单个日期索引?
CustomTool-%{+YYYY.MM.dd}
答案 0 :(得分:4)
在我的环境中,我们正在处理类似的问题。我们混合使用系统日志,来自Prometheus的度量标准警报以及来自客户端和服务器应用程序的应用程序日志。此外,我们在客户端和服务器应用程序之间有一些共享变量,让我们将两者相关联(例如,我们知道哪些服务器日志与向该服务器发出请求的客户端上的某些操作相匹配)。我们正在尝试以下方案来帮助Kibana为我们回答问题:
logs-system-{date}
logs-iis-{date}
logs-prometheus-{date}
logs-app-{applicationName}-{date}
其中:
{applicationName}
是我们编写的某些应用程序的唯一名称(可能是客户端或服务器端){date}
是您用于索引的基于日期的方案通过这种方式,我们可以针对logs-app- *设置Kibana搜索,并在我们的任何应用程序中快速搜索日志。这对我们来说仍然是新的,但我们从没有这种类型的计划开始,并且已经后悔了。它使得跨应用程序的相关日志搜索比应该更加困难。
答案 1 :(得分:2)
在我的公司,我们为这个主题做了很多工作。我们同意以下惯例:
无论如何,有必要审查数据的组织方式以及如何在组织内部查询数据
亲切的问候
达里奥罗德里格兹答案 2 :(得分:0)
我不知道这样的约定,但对于我的环境,我们曾经创建两种不同类型的索引logstash-*
和logstash-shortlived-*
,具体取决于严重性级别。在我的例子中,我创建了索引模式logstash-*
,因为它将满足这两种索引。
由于这些索引将存储在Elasticsearch中,而Kibana将读取它们,我想它应该为您提供创建不同模式索引的选项。
在本地计算机上试一试。如果您想要更多粒度,为什么不尝试logstash-XYZ
,否则您始终可以使用自定义名称创建索引。