Ubuntu 22.04 运行 Filebeat 7.11.2 崩溃问题分析及解决文档

Ubuntu 22.04 运行 Filebeat 7.11.2 崩溃问题分析及解决文档

一、问题概述

环境配置:Ubuntu 22.04 系统 + Filebeat 7.11.2 版本

问题现象:Filebeat 启动后运行一段时间突然中断,报错信息如下:

runtime/cgo: pthread\_create failed: Operation not permitted

二、问题根源分析

经排查,问题核心源于系统 GLIBC 版本与 Filebeat 安全策略不兼容:

  1. Ubuntu 22.04 系统自带 GLIBC 2.35 版本,创建线程时会强制调用 `rseq` 系统调用,用于优化线程本地存储访问性能;

  2. Filebeat 7.11.2 为老版本,其内置的 seccomp(安全计算模式)策略中,未将 `rseq` 纳入允许调用的列表;

  3. 当 GLIBC 2.35 尝试调用 `rseq` 时,被 seccomp 策略拦截,系统直接终止 Filebeat 进程,导致崩溃。

三、解决思路

针对上述冲突,提供两种解决方式,按需选择即可:

  1. 保留安全策略,仅放行 `rseq`(推荐,兼顾安全与兼容);

  2. 完全关闭 seccomp 安全检查(快捷方式,适合测试/紧急恢复场景);

  3. 升级 Filebeat 至 7.17.2 及以上版本(彻底解决兼容问题,本文不展开)。

本文重点讲解两种核心解决方式的完整操作流程。

四、具体解决步骤

方式1:保留安全策略,仅放行 rseq 调用(推荐)

步骤1:配置 Filebeat 配置文件

编辑 `/usr/local/filebeat/filebeat.yml` 配置文件,添加日志采集配置及 seccomp 放行配置,完整配置内容如下:

yaml 复制代码
# cat /usr/local/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/app.log
  fields:
    log_source: app-log
    log_type: app-log

output.redis:
  hosts: ["192.168.168.168:6379"]
  key: "app-log"

# 放行 rseq 系统调用,保留其他安全规则
seccomp:
  default_action: allow
  syscalls:
    - action: allow
      names: [ rseq ]
步骤2:后台启动 Filebeat 服务

执行以下命令,以守护进程形式启动 Filebeat,确保终端关闭后服务仍能运行,并将所有日志(标准输出+标准错误)写入指定文件,使配置生效:

bash 复制代码
# 停止已运行的 Filebeat 进程(若有)
pkill filebeat
# 后台启动 Filebeat
nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml > /var/log/filebeat.log 2>&1  &

方式2:完全关闭 seccomp 安全检查(快捷方式)

步骤1:配置 Filebeat 配置文件

编辑 `/usr/local/filebeat/filebeat.yml` 配置文件,在末尾添加 seccomp 关闭配置,完整配置内容如下:

yaml 复制代码
# cat /usr/local/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/app.log
  fields:
    log_source: app-log
    log_type: app-log

output.redis:
  hosts: ["192.168.168.168:6379"]
  key: "app-log"

# 完全关闭 seccomp 安全检查,快速解决兼容问题
seccomp:
  enabled: false
步骤2:后台启动 Filebeat 服务

执行与方式1相同的后台启动命令,确保服务稳定运行:

bash 复制代码
# 停止已运行的 Filebeat 进程(若有)
pkill filebeat
# 后台启动 Filebeat 
nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml > /var/log/filebeat.log 2>&1 &

五、验证方法

两种方式配置完成并启动后,均可通过以下命令验证进程状态与日志,确认配置生效且无报错:

bash 复制代码
# 查看 Filebeat 进程状态
ps -ef | grep filebeat
# 实时查看 Filebeat 运行日志,确认无崩溃报错
tail -f /var/log/filebeat.log

若进程正常运行,且日志中无 `runtime/cgo: pthread_create failed: Operation not permitted` 报错,说明问题已成功解决。

六、注意事项

  • 方式1(放行 rseq)兼顾安全性与兼容性,是生产环境的首选方案

  • 方式2(关闭 seccomp)会降低 Filebeat 的安全防护能力,不建议在生产环境长期使用,仅适合测试或紧急恢复场景;

  • 若长期使用 Filebeat,建议逐步升级至 7.17.2 及以上版本,从根本上解决该版本与高版本 GLIBC 的兼容问题;

  • 若配置后仍出现异常,可检查日志是否存在配置格式错误、Redis 连接失败等问题,同步排查权限与网络问题。

相关推荐
我不想名字重复1 分钟前
redis缓存和数据库数据保持一致
数据库·redis·缓存
时空无限10 分钟前
vllm 大模型启动缓存相关环境变量 export
linux·缓存·vllm
Echo_cy_19 分钟前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
宇宙第一小趴菜22 分钟前
三、Oracle 核心原理
数据库·oracle
ShineWinsu34 分钟前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket
无足鸟ICT1 小时前
【RHCA+】查看变量
linux·运维·服务器
码出钞能力1 小时前
apache-shardingsphere-5.5.3自定义分片算法
数据库
Kina_C1 小时前
Linux DNS 服务器-从高速缓存到辅助 DNS 部署指南
linux·运维·服务器·dns
suaizai_2 小时前
TypeScript 7 正式发布!Vue 暂被 “拒之门外“ !!!
linux·运维·ubuntu
兜有米啦2 小时前
数据库第二次作业
数据库