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 连接失败等问题,同步排查权限与网络问题。

相关推荐
ULIi096kr2 分钟前
MySQL查看表创建时间、修改时间、最后更新时间(精准排查僵尸表)
数据库·mysql
无敌的牛12 分钟前
自省。。。。
linux
折哥的程序人生 · 物流技术专研14 分钟前
Tomcat 严重警告:JDBC 驱动未注销 + 工作线程泄漏 —— 原因、影响与彻底修复(生产级终极指南)
java·运维·数据库·mysql·oracle·tomcat
lqjun082715 分钟前
Linux 下 Hermes Agent 代理配置不生效问题的解决
linux·服务器
初圣魔门首席弟子20 分钟前
Qt C++ 项目实战:修改共享头文件后的高效增量编译与快速发布流程
数据库
wb0430720121 分钟前
仓库搬家不停业——从阿明的“在线换仓库“,看数据库迁移与 Schema 演进的实战方法论
数据库·adb·架构
Gary Studio21 分钟前
复杂 SoC(RK3568)PCB 布局的五步
android·linux·硬件
一拳一个娘娘腔22 分钟前
CVE-2026-43284 — Dirty Frag 深度拆解:当零拷贝遇上原地解密,页缓存成了攻击者的画板
linux·缓存
lx1885486989625 分钟前
Redis大Key阻塞:单线程CPU100%的致命陷阱
数据库·redis·缓存
c_lb728826 分钟前
期货量化策略从 Windows 迁到 Linux 服务器:环境注意点
linux·服务器·windows·python