我有一个查询变量名称“Instances”,它从我的 Fargate 堆栈中提取实例 ID 列表。我在 ElasticSearch 索引搜索中使用它,它非常适合这个目的。
我有两个日志数据源。一个索引是使用 Serilog 格式(应用程序指标)创建的,另一个是由 MetricBeat 边车生成的指标(用于系统指标)问题是,数据源使用不同的格式来表示 IP 地址(但非常相似)。
例如: MetricBeats数据源 IP 地址格式(主机名):ip-10-119-28-254.us-west-2.compute.internal 应用程序指标“MachineName”(来自 Seriolog):ip-10-119-28-254
这是问题所在:
我的“Instances”变量基于 MetricBeat 索引,将返回所有可用 Fargate 任务 IP 地址的列表,如下所示:
ip-10-119-28-254.us-west-2.compute.internal
ip-10-119-28-254.us-west-2.compute.internal
ip-10-119-28-254.us-west-2.compute.internal
ip-10-119-28-254.us-west-2.compute.internal
我想创建另一个变量(理想情况下),它将创建列表的“精简”版本,如下所示:
10-119-28-254
10-119-28-254
10-119-28-254
10-119-28-254
我现在要做的事情: 创建另一个名为“ AppInstances ”的查询变量,它本质上是“Instances”查询变量的副本,但会包含一个正则表达式来仅提取“ip-”+ ip 地址本身。此“实例”变量将公开给用户,他们可以从下拉列表中选择一个或多个 IP 地址。当他们这样做时,我希望精简的变量也能刷新。然后我可以将实例变量用于某些查询,并将精简后的变量用于其他查询,具体取决于我的面板查询使用的数据源。
这样,当我对 MetricBeat 数据源执行 ElasticSearch 查询时,我可以使用:
... AND host.hostname:$Instances
对于应用程序指标数据源,我会使用:
... AND fields.MachineName:$AppInstances
我尝试过的: 我尝试创建实例变量的副本,然后在 Regex 字段中输入以下公式: i p-\d{1,3}-\d{1,3}-\d {1,3}-\d{1,3}
这不会引发错误,但也不会返回任何内容。所以,本质上,我试图让正则表达式工作,它将去除“.us-west-2.compute.internal”并返回适用于 App Metrics 查询变量的 IP 地址。
感谢您提供的任何帮助/指导。