elasticsearch 根据发展目标设计麋鹿指数,elasticsearch,database-design,application-design,elasticsearch,Database Design,Application Design" /> elasticsearch 根据发展目标设计麋鹿指数,elasticsearch,database-design,application-design,elasticsearch,Database Design,Application Design" />

elasticsearch 根据发展目标设计麋鹿指数

elasticsearch 根据发展目标设计麋鹿指数,elasticsearch,database-design,application-design,elasticsearch,Database Design,Application Design,我在过去使用elastic分析日志,但我在elastic体系结构方面没有任何经验。我有一个应用程序,我部署到多台机器200+上。我想连接到每台机器并收集元数据,如日志、度量、数据库统计等 有了这些数据,我希望能够: 在每台机器中查找问题并通知它们查找问题需要在不同的源之间连接数据,例如,在log1中查找异常需要我去检查数据库 分析所有机器的常见问题,并实现能够预测问题的ML模型。 我需要创建索引,我考虑了两个选项: 为每台机器创建一个索引,然后与每台机器相关的所有数据都将在其索引中可用。 为每个

我在过去使用elastic分析日志,但我在elastic体系结构方面没有任何经验。我有一个应用程序,我部署到多台机器200+上。我想连接到每台机器并收集元数据,如日志、度量、数据库统计等

有了这些数据,我希望能够:

在每台机器中查找问题并通知它们查找问题需要在不同的源之间连接数据,例如,在log1中查找异常需要我去检查数据库 分析所有机器的常见问题,并实现能够预测问题的ML模型。 我需要创建索引,我考虑了两个选项:

为每台机器创建一个索引,然后与每台机器相关的所有数据都将在其索引中可用。 为每个数据源创建索引。例如,来自所有机器的所有db日志将在一个专用索引中可用。另一个索引将只包含与机器指标cpu/ram使用率相关的数据。。
创建这些索引的最佳方法是什么?

好的,现在我对您的需求有了更好的了解,下面是我的建议:

我强烈建议不要为每台机器创建索引。我不太了解您的用例,但我假设您希望在kibana中搜索数据,或者在应用程序中实现搜索请求

假设您对每台机器的ram使用都感兴趣。您需要对elasticsearch执行200个搜索请求,因为数据ram的使用量分布在200个索引上。当然,可以创建别名,但必须为每台新机器更新这些别名。此外,您将无法进行基本的聚合,比如哪台机器的ram使用率最高?以方便的方式。在我看来,还有很多缺点,比如索引管理、碎片分配等

那么什么是更好的解决方案呢

正如您已经建议的,您应该为每个数据源创建一个索引。这样,索引就有了专门的用途,例如,一个索引存储数据库数据,另一个系统指标等等。参考我上面的例子,您只需要执行一个搜索请求来确定a每台机器的ram使用率,b哪台机器的ram使用率最高。但是,这需要每个文档包含一个引用特定主机的字段,如下所示:

PUT metrics/_doc/1
{
  "system":{
    "ram": {
      "usage": "45%",
      "free": "55%"
    }
  },
  "host":{
    "name": "YOUR HOSTNAME",
    "ip": "192.168.17.100"
  }
}
除此之外,我建议使用每日指数。因此,与其为系统指标创建一个庞大的索引,不如为每天创建一个索引,如metrics-2020.01.01、metrics-2020.01.02等等。这种方法有以下优点:

您的索引将大大缩小,使其更易于管理和重新分配。 经过一段时间后,您可以大致估计数据大小,并能够更好地定义碎片的数量。由于只有一个巨大的索引,您需要不断更新碎片的数量,以便快速处理您的请求。 此外,您可以以方便的方式逐日搜索数据。 您可以设置ilm策略以自动维护索引,例如删除早于X天的指标索引。 ...
我希望我能帮助你

您能解释一下如何将200台机器的数据索引到elasticsearch中吗?你申请的总体目的是什么?Elasticstack附带多个所谓的Beat,例如读取文件filebeat或system metrics metricbeat,并将其发布到elasticsearch。我部署到这些机器上的应用程序是一个java应用程序,在这些机器中使用。正如我在主要评论中所说,该应用程序生成日志,并使用数据库postgres。我想构建一个应用程序,能够监控每台机器,并在出现错误时部署解决方案。这篇文章的目的是想听听你们认为索引这些数据最好的方法是什么。我的意见是,我将为每个数据源日志创建一个索引,db。。而不是每台机器。这样,每个索引中的数据都将位于同一个模式中,弹性搜索将更容易