概述目标:在写入前通过管道解析日志/事件并统一字段命名与类型,减少查询歧义并提升聚合效果。适用:日志接入、事件清洗、跨系统字段对齐。核心与实战定义Pipeline(grok解析与规范化):PUT _ingest/pipeline/logs_normalize

{

"processors": [

{ "grok": { "field": "message", "patterns": ["%{TIMESTAMP_ISO8601:ts} %{LOGLEVEL:level} %{WORD:service} - %{GREEDYDATA:msg}"] } },

{ "set": { "field": "@timestamp", "value": "{{ts}}" } },

{ "rename": { "field": "service", "target_field": "app" } },

{ "convert": { "field": "level", "type": "string" } },

{ "remove": { "field": "ts" } }

]

}

索引模板绑定Pipeline:PUT _index_template/logs_template

{

"index_patterns": ["logs-*"],

"template": {

"settings": {

"index.default_pipeline": "logs_normalize"

},

"mappings": {

"properties": {

"@timestamp": {"type": "date"},

"level": {"type": "keyword"},

"app": {"type": "keyword"},

"msg": {"type": "text"}

}

}

}

}

示例写入并验证:POST logs-2025/_doc

{

"message": "2025-11-26 10:00:00 INFO api - start request"

}

GET logs-2025/_search

{

"query": {"term": {"level": "INFO"}},

"_source": ["@timestamp","level","app","msg"]

}

验证与监控Pipeline状态与失败:GET _ingest/pipeline/logs_normalize

GET logs-2025/_search {"query":{"exists":{"field":"@timestamp"}}}

映射一致性:检查`level/app`是否为`keyword`类型,避免因`text`导致聚合慢。接入质量:统计解析失败率;在`on_failure`中记录错误字段以便治理。常见误区未绑定`index.default_pipeline`导致写入未规范化;需在模板设置。将分类字段设为`text`导致聚合与排序慢;应为`keyword`。grok模式不覆盖全部日志格式;需按源系统维护模式集合。结语借助Ingest Pipeline可在写入阶段完成统一解析与规范化,显著提升Elasticsearch查询与聚合的稳定性与效率。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部