我们使用k8s fluent位将spring-boot日志发送到stackdriver。 我使用以下流利位配置:
input-kubernetes.conf: |
[INPUT]
Name tail
Tag_Regex var.log.containers.(?<pod_name>[a-z0-9](?:[-a-z0-9]*[a-z0-9])?(?:\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)_(?<namespace_name>[^_]+)_(?<container_name>.+)-(?<docker_id>[a-z0-9]{64})\.log$
Tag k8s_container.<namespace_name>.<pod_name>.<container_name>
Path /var/log/containers/*.log
Exclude_Path /var/log/containers/*_kube-system_*.log,/var/log/containers/*_logging_*.log,/var/log/containers/*_ingress-nginx_*.log,/var/log/containers/*_kube-node-lease_*.log,/var/log/containers/*_kube-public_*.log,/var/log/containers/*_cert-manager_*.log,/var/log/containers/*_prometheus-operator_*.log
Multiline On
Parser_Firstline sb1
Parser_1 sb2
Buffer_Chunk_Size 512KB
Buffer_Max_Size 5M
Rotate_Wait 30
Mem_Buf_Limit 30MB
Skip_Long_Lines On
Refresh_Interval 10
filter-kubernetes.conf: |
[FILTER]
Name kubernetes
Match k8s_container.*
Kube_URL https://kubernetes.default.svc.cluster.local:443
Kube_Tag_Prefix k8s_container.
Regex_Parser k8s-container-custom-tag
Annotations Off
Labels Off
Merge_Log Off
Keep_Log On
output-stackdriver.conf: |
[OUTPUT]
Name stackdriver
Match *
Resource k8s_container
k8s_cluster_name cw-cluster-staging
k8s_cluster_location digitalocean
google_service_credentials /var/secrets/google/key.json
tls On
tls.verify Off
severity_key level
parsers.conf: |
[PARSER]
Name sb1
Format regex
Regex ^(?<time>(\d)+(-\d+)+(\S)+\W(\S)+)(\s+)(?<action>\S+)(\s+)(?<on>\S+)(\s+)(?<content>.*)
Time_Key time
Time_Format %Y-%m-%d %H:%M:%S.%L
Time_Keep Off
[PARSER]
Name sb2
Format regex
Regex (?m-ix)^(?<time>(\d)+(-\d+)+(\S)+\W(\S)+)(\s+)(?<action>\S+)(\s+)(?<on>\S+)(\s+)(?<content>.*)
Time_Key time
Time_Format %Y-%m-%d %H:%M:%S.%L
Time_Keep Off
一键操作就可以了。日志如下:
2020-08-14 13:14:25.813 INFO 1 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-08-14 13:14:25.814 INFO 1 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-08-14 13:14:25.841 INFO 1 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 27 ms
但是在堆栈驱动程序中,我看到类似以下内容的
2020-08-14 13:14:25.841 INFO 1 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 27 ms\n","stream":"stdout","time":"2020-08-14T13:14:25.842142597Z
最后一个“ \n","stream":"stdout","time":"2020-08-14T13:14:25.842142597Z
”来自哪里,如何将其隐藏在堆栈驱动器中?有什么想法吗?