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