gpt4 book ai didi

elasticsearch - 根据发展目标进行麋鹿指标设计

转载 作者:行者123 更新时间:2023-12-03 01:22:38 26 4
gpt4 key购买 nike

我过去曾使用过 flex 来分析日志,但是我对 flex “架构”没有任何经验。
我有一个部署到多台计算机(200台以上)的应用程序。
我想连接到每台计算机并收集元数据,例如日志,指标,数据库统计信息等。

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

1.查找每台机器中的问题并通知他们(发现问题需要在不同源之间连接数据,例如,在log1中发现异常需要我去检查数据库)

2.分析所有机器的常见问题,并实现将能够预测问题的ML模型。

我需要创建索引,并且考虑了2个选项:
1.为每台计算机创建一个索引,然后与每台计算机相关的所有数据将在其索引中可用。
2.为每个数据源创建索引。例如,来自所有计算机的所有数据库日志将在一个专用索引中可用。另一个索引将仅包含与机器指标(cpu / ram使用情况..)有关的数据。

您如何看待创建这些索引的最佳方式?

最佳答案

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

我强烈建议不要为每台机器创建索引。我对您的用例了解不多,但是我假设您想在kibana中或通过在应用程序中实现搜索请求来搜索数据。

假设您对每台机器的ram使用感兴趣。由于数据(内存使用情况)分布在200个索引中,因此您将需要针对Elasticsearch执行200个搜索请求(当然,一个索引可以创建别名,但是必须为每台新机器更新这些别名)。此外,您将无法进行基本汇总,例如哪台机器的内存使用率最高?以方便的方式。在我看来,还有很多缺点,例如索引管理,分片分配等。

那么有什么更好的解决方案?

正如您已经建议的那样,您应该为每个数据源创建一个索引。这样,您的索引就具有专用的“目的”,例如一个索引用于存储数据库数据,另一个索引用于存储系统数据等等。引用上面的示例,您只需执行一个搜索请求即可确定a)每台机器的内存使用情况,以及b)内存使用率最高的机器。但是,这需要每个文档都包含一个引用特定主机的字段,如下所示:

PUT metrics/_doc/1
{
"system":{
"ram": {
"usage": "45%",
"free": "55%"
}
},
"host":{
"name": "YOUR HOSTNAME",
"ip": "192.168.17.100"
}
}

除了外,我建议使用每日索引。因此,与其为系统指标创建一个巨大的索引,不如每天为 metrics-2020.01.01metrics-2020.01.02等创建索引。此方法具有以下优点:
  • 您的索引的大小将小得多,从而使其更易于管理和(重新)分配。
  • 在一段时间后,您可以粗略估计数据大小,并能够更好地定义分片数量。仅使用一个巨大的索引,您将不断需要更新分片的数量,以便快速处理您的请求。
  • 此外,您可以方便地每天搜索数据。
  • ,您可以设置ilm策略来自动维护索引,例如删除超过X天的指标索引。
  • ...

  • 希望能对您有所帮助!

    关于elasticsearch - 根据发展目标进行麋鹿指标设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59560945/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com