如何将Grafana条形图标签中的类全限定名转换为仅类名展示?
类名截断解决方案
你可以通过两种常见路径实现需求,按需选择即可:
方案1:Elasticsearch 摄入侧预处理(性能最优,推荐)
在数据写入ES时通过Ingest Pipeline新增单独的短类名字段,后续Grafana直接使用该字段作为标签:
- 创建预处理管道,示例配置如下,需替换为你实际存储全限定类名的字段:
PUT _ingest/pipeline/extract_exception_short_name { "processors": [ { "script": { "lang": "painless", "source": """ if (ctx.your_exception_field != null) { String[] nameParts = ctx.your_exception_field.splitOnToken('.'); ctx.exception_short_name = nameParts[nameParts.length - 1]; } """ } } ] }
- 将该管道设置为对应日志索引的默认摄入管道,新写入的数据会自动生成
exception_short_name字段,存量数据可通过reindex操作批量补全字段。
方案2:Grafana 侧直接转换(无需修改ES侧配置,适合存量数据)
如果不想调整ES的写入逻辑,可以直接在Grafana层面做字段转换:
- 若使用Elasticsearch数据源查询:
配置Terms聚合时,选择Script作为聚合字段,输入如下Painless脚本即可直接返回短类名作为聚合标签:String[] nameParts = doc['your_exception_field'].value.splitOnToken('.'); return nameParts[nameParts.length - 1]; - 若不想修改查询语句:
进入面板编辑页的Transform标签,添加Replace转换规则,选择全限定类名对应的字段,匹配正则填写.*\.([^\.]+)$,替换值填写$1,即可直接把原字段的全限定名替换为短类名使用。
内容的提问来源于stack exchange,提问作者uriDium
相关产品推荐
相关产品推荐

