我正在将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和其他类似日志记录框架的约定是对源代码中的每个类都有一个“记录器”。这些记录器应该转换为弹性搜索中的索引吗?
MyCompany.CustomTool.FooClass-%{+YYYY.MM.dd}
MyCompany.CustomTool.BarClass-%{+YYYY.MM.dd}
MyCompany.OtherTool.BazClass-%{+YYYY.MM.dd}或者,对于elasticsearch索引名称来说,这是不是太细粒度了,并且更好的做法是为应用程序只使用一个带有日期的索引?
CustomTool-%{+YYYY.MM.dd}发布于 2016-12-07 22:20:32
在我的环境中,我们正在解决一个类似的问题。我们混合了系统日志、来自Prometheus的指标警报以及来自客户端和服务器应用程序的应用程序日志。此外,我们在客户端和服务器应用程序之间有一些共享的变量,可以让我们将两者关联起来(例如,我们知道哪些服务器日志与客户端上向所述服务器发出请求的某些操作相匹配)。我们正在尝试以下方案来帮助Kibana为我们回答问题:
logs-system-{date}
logs-iis-{date}
logs-prometheus-{date}
logs-app-{applicationName}-{date}其中:
{applicationName}是我们编写的某些应用程序的唯一名称(这些应用程序可以是客户端或服务器side){date}是您用于索引的任何基于日期的方案
通过这种方式,我们可以根据logs-app-*设置Kibana搜索,并在我们的任何应用程序中快速搜索日志。这对我们来说仍然是新的,但我们在没有这种类型的方案的情况下开始了,并且已经后悔了。这使得跨应用程序搜索相关日志变得比应有的困难得多。
发布于 2017-01-21 01:06:59
在我的公司,我们已经在这个主题上做了很多工作。我们同意以下约定:
在任何情况下,都有必要检查数据的组织方式和组织内部的数据查询方式
亲切的问候
达里奥·罗德里格斯
发布于 2016-10-08 02:06:02
我不知道这样的约定,但对于我的环境,我们过去常常根据严重程度创建两种不同类型的索引logstash-*和logstash-shortlived-*。在我的例子中,我创建了索引模式logstash-*,因为它将同时满足这两种索引。
由于这些索引将存储在Elasticsearch中,Kibana将读取它们,我猜它应该为您提供创建不同模式的索引的选项。在您的本地计算机上尝试一下。如果你想要更多的粒度,你为什么不试试logstash-XYZ,否则你总是可以用你的自定义名称创建索引。
https://stackoverflow.com/questions/39907523
复制相似问题