我正在使用以下命令运行filebeat容器:
docker run -d \
--name=filebeat \
--user=root \
--volume="$(pwd)/filebeat-file.yml:/usr/share/filebeat/filebeat.yml:ro" \
--volume="$(pwd)/apps/logs:/usr/share/apps/logs:ro" \
docker.elastic.co/beats/filebeat:7.9.2 filebeat -e -strict.perms=false \
-E output.elasticsearch.hosts=["elasticsearch:9200"]
filebeat-file.yaml文件:
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/share/apps/logs/*.log
output.elasticsearch:
hosts: '{ELASTICSEARCH_HOSTS: HOST:9200}'
然后,我在${pwd}/apps/logs/app.log中复制了一个示例文件,它有一个基本的日志行:
I am line 1.
现在每当我从主机向这个文件添加新行时。在ElasticSearch中,如果我在这个文件中添加另一行,我会得到额外的点击,这些日志已经被filebeat发送到es,例如:
I am line 1.
I am line 2.
然后我在es索引中总共得到3个点击。1表示前一状态,即第1行,2表示当前状态,即第1行和第2行。
然而,我应该在es中理想地只得到2个点击,一个是第1行,另一个是第2行。
我观察到的另一个行为是,如果我以如下方式进入docker容器:
sudo docker exec -it contId bash
cd /usr/share/app/logs
vi app.log
现在,如果我从容器内部进行编辑,它工作得非常好,即当我添加第2行时。我只得到了两支安打。
有人能帮我理解这里发生了什么事吗?在主机上修改日志文件与在容器中修改日志文件的方式不同,这会导致不同的行为。
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!