我正在将 Elasticsearch 和 Kibana 设置为我们办公室的集中式日志记录平台。
我们有许多自定义实用程序和插件,我想跟踪它们的使用情况以及用户是否遇到任何错误。更不用说我还想跟踪服务器和预定作业。
因此,如果我有许多不同的日志数据源都进入同一个 elasticsearch 集群,那么将这些数据组织成索引和文档类型的约定或最佳实践是什么?
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 和其他类似日志记录框架的约定是为源代码中的每个类都有一个“记录器”。这些记录器是否应该转换为 Elasticsearch 中的索引?
MyCompany.CustomTool.FooClass-%{+YYYY.MM.dd}
MyCompany.CustomTool.BarClass-%{+YYYY.MM.dd}
MyCompany.OtherTool.BazClass-%{+YYYY.MM.dd}
或者这对于 elasticsearch 索引名称来说是否过于精细,最好只为应用程序坚持使用单个日期索引?
CustomTool-%{+YYYY.MM.dd}
最佳答案
在我的环境中,我们正在解决类似的问题。我们混合了系统日志和来自 Prometheus 的指标警报,以及来自客户端和服务器应用程序的应用程序日志。此外,我们在客户端和服务器应用程序之间有一些共享变量,使我们能够将两者关联起来(例如,我们知道哪些服务器日志与客户端上向所述服务器发出请求的某些操作相匹配)。我们正在试验以下方案来帮助 Kibana 为我们解答问题:
logs-system-{date}
logs-iis-{date}
logs-prometheus-{date}
logs-app-{applicationName}-{date}
地点:
{applicationName}
是我们编写的某些应用程序的唯一名称(这些可以是客户端或服务器端){date}
是您用于索引的任何基于日期的方案
这样我们就可以针对 logs-app-* 设置 Kibana 搜索,并在我们的任何应用程序中快速搜索日志。这对我们来说仍然是新的,但我们一开始并没有这种计划,现在已经后悔了。它使得跨应用程序搜索相关日志比应有的困难得多。
关于elasticsearch - 是否有命名/组织存储日志数据的 Elasticsearch 索引的约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39907523/