logstash 生成以k8s命名空间为名称的可匹配的源
时间: 2024-05-09 11:15:37 浏览: 81
可以使用 Logstash Kubernetes 插件来生成以 Kubernetes 命名空间为名称的可匹配源。该插件可以检测 Kubernetes 的事件流并向 Logstash 发送日志数据。以下是一个示例配置:
```
input {
kubernetes {
in_cluster => true
add_field => {
"namespace" => "%{[metadata][namespace]}"
}
}
}
filter {
if [kubernetes][container][name] {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:logmessage}" }
}
mutate {
add_field => {
"container_name" => "%{[kubernetes][container][name]}"
}
}
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "logstash-%{+YYYY.MM.dd}"
document_id => "%{[@metadata][document_id]}"
}
}
```
此配置使用 Kubernetes 插件从 Kubernetes 中获取日志,然后使用 grok 过滤器将日志消息解析为时间戳、日志级别和消息。然后,使用 mutate 过滤器添加一个名为 `container_name` 的字段来存储容器名称。最后,将日志发送到 Elasticsearch。在发送到 Elasticsearch 时,日志将存储在以日期为后缀的索引中,并且每个日志文档都将具有唯一的 `document_id`。
阅读全文