文章

learn - 记一次使用filebeat问题

快速采集日志,漏掉一个文件,把文件的导入es?

learn - 记一次使用filebeat问题

写作目的

记录自己在项目运作中,出现日志停止采集问题

我也是个巨人,也有肩膀可以站立。

哈哈哈哈。

事件背景

原采集日志情况

可以参考日志的搭建方式:learn - 项目架构演变-02

在项目运行了一段时间(有几个月的情况),基本每个月的月底到月初,回出现容器运行停止的情况。

查看了es容器运行的日志,看了一些是关于java的OOM记录,可能是太耗费内存导致。

1
2
3
4
5
6
7
8
9
10
11
12
docker run -d \
--name ek-elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms84m -Xmx256m" \
-e "ELASTIC_PASSWORD=abcdefg" \
-e "bootstrap.password=abcdefg" \
-v /opt/elk-data/es/data:/usr/share/elasticsearch/data \
-v /opt/elk-data/es/plugins:/usr/share/elasticsearch/plugins \
--memory 2g \
docker.elastic.co/elasticsearch/elasticsearch:8.7.0

上面启动一个容器时声明了要用内存情况。

因为工作日每天都会上去看,还能及时补救:docker container start ek-elasticsearch ,倘若遇到节假日休息,没时间查看怎么办呢?

  1. 增加监控报警(也就是端口监听)
  2. 增加启动时的自动恢复:--restart=always

处理方案

  • 增加容器启动时的自动恢复

当前容器已经运行着,可以通过热修改命令:

1
docker update --restart=always ek-elasticsearch
  • 未采集的几个日志文件,采用手动导入

    xiaoyu.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
filebeat.inputs:
- type: filestream
  id: my-demo
  enabled: true
  paths:
     - /usr/local/openresty/nginx/logs/xiaoyu.360clube.net.access.json.log-20250803
  parsers:
    - ndjson:
        overwrite_keys : true
  tags:
    - "my-demo"
  start_position: beginning
  stop_on_eof: true #当Filebeat读取到文件末尾时,就会自动停止
  exit_after : 1 # 处理了一定数量的文档后停止Filebeat
output.elasticsearch:
  hosts: ["192.168.1.215:9200"]
  username: "elastic"
  password: "360club+-123456"
  indices:
  - index: "nginx-prod-2025.08.02"
    when.contains:
      tags: "my-demo"
setup.template.enabled: false
setup.template.name: "nginx-prod"
setup.template.pattern: "nginx-prod-*"
setup.ilm.enable: false
path.data: /root/xiaoyu/filebeat/data  # 用户隔离另一个filebeat进程

手动命令

1
/usr/local/filebeat-8.7.0/filebeat -c xiaoyu.yml

结果

日志重新可以在kibana上面查看了,待月底看看是否还会继续停止掉(若还有情况,继续补充)。

本文由作者按照 CC BY 4.0 进行授权