gpt4 book ai didi

elasticsearch - Kubernetes : grok filter not working 中带有 helm 的 Logstash

转载 作者:行者123 更新时间:2023-11-29 02:56:40 26 4
gpt4 key购买 nike

我在带有 helm 图表的 Kubernetes 中安装了一个 filebeat -> logstash -> elasticsearch -> kibana 堆栈:

helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
helm install --name elastic --namespace monitoring incubator/elasticsearch --set client.replicas=1,master.replicas=2,data.replicas=1

helm install --name logstash --namespace monitoring incubator/logstash -f logstash_values.yaml

helm install --name filebeat stable/filebeat -f filebeat_values.yaml

helm install stable/kibana --name kibana --namespace monitoring

日志在 ES 中被索引,但“消息”包含整个字符串,而不是定义的字段。我的 grok 过滤器似乎在 logstash conf 中不起作用。

https://github.com/helm/charts/tree/master/incubator/logstash 上没有文档关于如何设置模式。

这是我尝试过的:

我的日志格式:

10-09-2018 11:57:55.906 [Debug] [LOG] serviceName - Technical - my specific message - correlationId - userId - data - operation - error - stackTrace escaped on one line

logstash_values.yaml(来自 https://github.com/helm/charts/blob/master/incubator/logstash/values.yaml):

elasticsearch:
host: elasticsearch-client.default.svc.cluster.local
port: 9200

patterns:
main: |-
(?<time>(?:2[0123]|[01]?[0-9]):(?:[0-5][0-9]):(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)\.(?:[0-9]){3})} [(?<logLevel>.*)] [(?<code>.*)] (?<caller>.*) - (?<logMessageType>.*) - (?<message>.*) - (?<correlationId>.*) - (?<userId>.*) - (?<data>.*) - (?<operation>.*) - (?<error>.*) - (?<stackTrace>.*)

inputs:
main: |-
input {
beats {
port => 5044
}
}

filters:

outputs:
main: |-
output {
elasticsearch {
hosts => ["${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"]
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}

这成为 Kubernetes configMap“logstash-patterns”:

apiVersion: v1
kind: ConfigMap
data:
main: (?<time>(?:2[0123]|[01]?[0-9]):(?:[0-5][0-9]):(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)\.(?:[0-9]){3}) [(?<code>.*)] [(?<logLevel>.*)] (?<service>.*) - (?<logMessageType>.*) - (?<message>.*) - (?<correlationId>.*) - (?<userId>.*) - (?<data>.*) - (?<operation>.*) - (?<error>.*) - (?<stackTrace>.*)

我在 logstash pod 中没有看到任何错误日志。

您知道如何在 Kubernetes 的 logstash 中配置模式吗?

谢谢。

最佳答案

我误会了“模式”和“过滤器”。

在 Helm 图表中,“pattern”用于指定我们的自定义 grok 模式 (https://grokdebug.herokuapp.com/patterns):

MY_CUSTOM_ALL_CHARS .*

我的 grok 过滤器应该在过滤器部分:

patterns:
# nothing here for me

filters:
main: |-
filter {
grok {
match => { "message" => "\{%{TIMESTAMP_ISO8601:time}\} \[%{DATA:logLevel}\] \[%{DATA:code}\] %{DATA:caller} &\$ %{DATA:logMessageType} &\$ %{DATA:message} &\$ %{DATA:correlationId} &\$ %{DATA:userId} &\$ %{DATA:data} &\$ %{DATA:operation} &\$ %{DATA:error} &\$ (?<stackTrace>.*)" }
overwrite => [ "message" ]
}
date {
match => ["time", "ISO8601"]
target => "time"
}
}

关于elasticsearch - Kubernetes : grok filter not working 中带有 helm 的 Logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52270854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com