在 Kusto 中解析 `key1=value1 key2=value2`

lmr2391

我在 Azure Kubernetes 集群中运行 Cilium,并且想要解析 Azure Log Analytics 中的 cilium 日志消息。日志消息的格式如下

key1=value1 key2=value2 key3="if the value contains spaces, it's wrapped in quotation marks"

例如:

level=info msg="Identity of endpoint changed" containerID=a4566a3e5f datapathPolicyRevision=0 

parse_xxx在文档中找不到匹配的方法(例如https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/parsecsvfunction)。是否有可能编写自定义函数来解析此类日志消息?

lmr2391

在 Slavik N 的帮助下,我提出了一个对我有用的查询:

let containerIds = KubePodInventory
| where Namespace startswith "cilium"
| distinct ContainerID
| summarize make_set(ContainerID);
ContainerLog
| where ContainerID in (containerIds)
| extend KeyValuePairs = array_concat(
    extract_all("([a-zA-Z0-9_-]+)=([^ \"]+)", LogEntry),
    extract_all("([a-zA-Z0-9_]+)=\"([^\"]+)\"", LogEntry))
| mv-apply KeyValuePairs on 
(
    extend p = pack(tostring(KeyValuePairs[0]), tostring(KeyValuePairs[1]))
    | summarize JSONKeyValuePairs=parse_json(make_bag(p))
)
| project TimeGenerated, Level=JSONKeyValuePairs.level, Message=JSONKeyValuePairs.msg, PodName=JSONKeyValuePairs.k8sPodName, Reason=JSONKeyValuePairs.reason, Controller=JSONKeyValuePairs.controller, ContainerID=JSONKeyValuePairs.containerID, Labels=JSONKeyValuePairs.labels, Raw=LogEntry

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

[key1,value1,key2,value2,...]到对象的链

解析并验证“ key1:value1; key2:value2”字符串以有效执行Go结构吗?

如何对看起来像[key1,“ value1”,key2,“ value2”,...]的多个数组中的输入进行分组?

从{“ key1”:value1,“ key2”:value2,}之类的列中选择值?

jq reduce(或map?)转换为包含{“ key1”:“ value1”,“ key2”:“ value2”}的对象

将Java Map序列化为[{key:“ key1,value:” value1“},{key:” key2,value:“ value2”},...]

如何将像 {key1=value1, key2=value2} 这样的字符串转换为 json 字符串或 Jsonobject?

无法看到用clarify -a array =([[key1] = value [key2] = value)制成的数组中的两个键

Python如何使myDcitionary ['key1'] ['key2'] = list()

如何将字典的格式更改为value1; key1; 在Python 3.6中?

根据元组键 (key1, key2) 中的第一个键过滤字典,其中 key1

在pyspark中检测某些列值何时从value1更改为value2

在SQL Server中评估“ value1不与value2不同”的最佳方法

我如何实现类似np.where(['value1','value2']中的df [varaible])

通过比较共享value2的元素的value1从数组中删除对象

如果value1 == value2在python中不是None,比较如何工作?

SQL-列表列表中的(value1,value2)

在SQL表中具有array(value1,value2,...)的列中选择

用于遍历对象数组的Java语法,例如“ for(String key:{“ key1”,“ key2”})“

如何将具有(key1,list(key2,value))之类的结构的列表转换为pyspark中的数据框?

有没有办法遍历 Key:[Value1:[Value2]] 形式的字典?

使用Java Lambda(如Map<key1、Map<key2、List<Obj>>>)时如何在group-2中使用group-1结果key1

如何在R中的多个可选键(即(key1或Key2)之一或全部匹配)上联接2个数据帧

我想在java脚本中将数组转换为对象,如[[["key1","ans1"],["key2","ans2"]]=> {key1:"ans1",key2:"ans2"}

管道参数:echo“ value1 value2” | 命令$ 1 $ 2

如果key1具有相同的值,如何按key1降序和key2升序对List <Map <String,String >>进行排序

RDD with (key, (key2, value))

PHP的value1 / value2 / value3 /到数组

使用元组键从Dictionary [key1,key2]获取第一个键的列表