regex - Logstash 变异过滤器 gsub 嵌套字段
问题描述
我正在尝试在将其发送到 ES 之前过滤 logstash 中的一些电子邮件。
我有一个字段仍然包含电子邮件地址,并且无法通过 mutate 过滤器对其进行 gsub。
mutate {
gsub => [
"log", "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}", "--- FILTERED FROM LOGS ---",
"message", "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}", "--- FILTERED FROM LOGS ---"
]
}
JSON:
{
"_index": "logs-2021.03.09.11",
"_type": "doc",
"_id": "sdfsdf",
"_version": 1,
"_score": null,
"_source": {
"source": "stderr",
"@timestamp": "2021-03-09T11:39:38.413Z",
"kubernetes": {
"namespace": "sdfsdk",
"labels": {
"pod-template-hash": "sdfsdf",
"app": {
"softwear": {
"co/name": "sdfsd",
"co/domain": "sdfsdf"
}
},
"log": {
"extra_fields": {
"ctxt_response": "{\"records_id\":[{\"ext_id\":\"sdfsdf\",\"fcc_id\":sdfsdfsd,\"external_id\":\"sdfsdf\"}],\"success\":true}",
"requestDevice": "\"\"",
"ctxt_request": "{\"hash\":\"56kdfhsdfjshdkf\",\"change\":\"sdsd\",\"campaigns_id\":114,\"method\":\"sha1\",\"login\":\"test\",\"records\":[{\"emails\":[\"email-to-delete@gmail.com\"],\"external_id\":\"sdsdK\"}]}",
"ctxt_response_code": "200"
},
我怎样才能获得嵌套字段并 gsub 呢?[日志][额外字段][ctxt_request]
解决方案
尝试这个:
mutate {
gsub => [
"[log][extra_fields][ctxt_request]", "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}", "--- FILTERED FROM LOGS ---",
"message", "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}", "--- FILTERED FROM LOGS ---"
]
}
我还注意到您的正则表达式可能有所改进:
[A-Za-z0-9._%+-]
[A-Za-z0-9\._%+-]
(转义点.
字符 - 您需要在 的两侧执行此操作@
)
您可能还想查看使用JSON 过滤器插件来解析该ctxt_request
字段 - 然后您可以只覆盖该子字段的内容而不使用gsub
。
这是一个如何工作的示例。警告是 a) 它尚未经过测试,b)remove_field
对JSON
输出执行操作可能不起作用(尽管如果JSON
成功解析,删除源字段将起作用),以及 c) 您可能对如何使用其他想法构造字段。
json {
source => "[log][extra_fields][ctxt_request]"
target => "[log][extra_fields][parsed][ctxt_request]"
remove_field => [
"[log][extra_fields][ctxt_request]",
# remove the field completely
"[log][extra_fields][parsed][ctxt_request][records][emails]"
]
}
mutate {
# or replace it with the text from your question
replace => {
"[log][extra_fields][parsed][ctxt_request][records][emails]" =>
"--- FILTERED FROM LOGS ---"
}
}
推荐阅读
- batch-file - 在 tfs build 中获取构建代理文件夹路径
- typescript - TS 错误:类型“T[]”不可分配给类型“[T]”。类型“T[]”中缺少属性“0”
- python - 在 python 2.7 中使用另一个类的装饰
- c# - 运行时 Xamarin 中的网格布局更改
- node.js - 在 node.js 和 postgres 中为循环中的每个项目添加响应
- r - 对多个绘图使用多个选项
- android - 无法解决:com.airbnb.android:lottie:2.5.1
- c# - Azure 离线 SQL Lite DB 存储非常慢
- python - '020-06-08 17:11:02+00:00' 我想使用 datetime 从 Python 中的这种时间格式中提取日期
- objective-c - 如何检查 OC 或 Swift 中未使用的变量