k8s,filebeat将主机所有容器的控制台日志写入ES中,不成功?
这个是我的filebeat的配置。
这个是我运行的filebeat服务的日志
这是我容器中的日志地址
这个是我在kibana上的索引。
按上面的操作
来说我这边应该已经将主机中所有启动的容器服务中的日志文件写入es中的“
test_index1”中的。可是没有写入。filebeat服务启动也正常的去监视获取了“/app/logs/*.jar.log”日志中的数据写入es中,但是不成功,es中的索引文件大小不变。到底是哪里出了问题呢?
新的内容
这是filebeat启动时无法连接ES的问题
回答:
主机上的目录需要挂载到容器中,container 才可以看到。否则 container 读不到主机上的任何内容,因为 container 内部的文件系统与主机的文件系统时独立的。
每一个需要读取主机内容的 container 都要挂载它读取的目录或文件。
需要写主机目录或文件的 container 的也是必须挂载之后才能写到主机上的。否则只能写到 container 内部,主机上看不到。比如如果有日志期望可以在主机上直接查看的话,就得把主机上的一个目录挂载到 container 中的日志目录上。
pod 中是可以有多个 container 的,每一个需要读取相关目录的 container 必须单独挂载主机目录。
回答:
额,你的filebeat是deamonset部署还是直接部署在主机上?filebeat要和你的应用同一个容器才能读到数据,或者采用边车概念(单应用多容器)统一挂载一个emptydir,共享日志目录,filebeat就可以读取到了。配置如下:
emptyDir
apiVersion: v1kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: app:latest
name: app
volumeMounts:
- mountPath: /app/logs
name: log-volume
- image: filebeat:latest
name: filebeat
volumeMounts:
- mountPath: /app/logs
name: log-volume
volumes:
- name: log-volume
emptyDir:
sizeLimit: 500Mi
以上是 k8s,filebeat将主机所有容器的控制台日志写入ES中,不成功? 的全部内容, 来源链接: utcz.com/p/945365.html