有一个可以将日志打印到stdout / stderr的容器,并且我无法访问主机,因此无法使用节点日志收集器来收集并将其发送到中央日志记录系统(此处为ElasticSearch),有没有办法用便车容器做这种事情?
答案 0 :(得分:3)
您可以使用fluentbit作为补充,将日志发送到Elasticsearch。为此,您不需要在主机中运行任何进程。以下是一个示例yaml。
apiVersion: apps/v1
kind: Deployment
metadata:
name: fluentbit-logging-sidecar
spec:
selector:
matchLabels:
app: fluentbit-logging-sidecar
replicas: 1
template:
metadata:
labels:
app: fluentbit-logging-sidecar
volumes:
- name: shared-data
emptyDir: {}
- name: config-volume
configMap:
name: fb-agent-config
containers:
- name: sample-logging
image: <image>
volumeMounts:
- name: shared-data
mountPath: /app/logs
- name: fb-sidecar
image: fluent/fluent-bit
volumeMounts:
- name: shared-data
mountPath: /app/logs
- name: config-volume
mountPath: /fluent-bit/etc/fluent-bit.conf
subPath: fluent-bit.conf
您需要配置您的应用程序以在路径/app/logs
中写入文件系统日志。因为应用程序容器和fluentbit容器使用volumeMounts
共享路径,所以fluentbit sidecar将能够从该路径读取日志并将其流式传输到Elasticsearch。您需要在fluent-bit.conf
文件中配置details of elastic search。