我正在尝试将 Kubernetes 集群中的日志聚合到 Elasticsearch 服务器中。
为此,我在集群上部署了 Filebeat,但我认为它没有机会工作,因为目录中/var/lib/docker/containers
没有日志。
我可以通过 查看容器日志kubectl logs
,但不知道如何让 Filebeat 访问它。
以下是命令输出的片段docker inspect
:
"LogPath": "",
"Name": "/k8s_POD_checkit-incubator-6bd48754c5-s64bk_checkit-incubator_2cb40353-c7b4-11e8-9574-005056b1f077_1",
"RestartCount": 0,
"Driver": "devicemapper",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "journald",
"Config": {}
},
"NetworkMode": "none",
"PortBindings": {},
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
有什么线索可以让我找出 Filebeat 的有效配置吗?
答案1
您的配置将日志发送到 journald,因此 journalctl 是您的工具。
告诉我们您正在运行什么 kubernetes 分布,kubespray、gke 或其他。
其次,您可能想要检查其他节点目录,例如/var/log/containers/
容器日志。
第三次尝试使用 helm 或你的 k8s 发行版推荐的任何其他方式部署 filebeat。