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

相关推荐
龙腾AI白云3 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
一 乐3 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
zzj_2626103 小时前
MySQL常用操作
数据库·mysql
其实防守也摸鱼4 小时前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
haerapi4 小时前
把 PostgreSQL 复制巡检做成可审计闭环:确定性采集、阈值判定与受控模型归纳
数据库·postgresql
微学AI5 小时前
不让每一步都调用最贵模型:用蓝耘智能路由改造自主式研究 Agent
数据库·人工智能·蓝耘
yjb.gz5 小时前
Oracle19 RAC查看集群状态及磁盘空间情况(巡检)
数据库
钝挫力PROGRAMER5 小时前
开发踩坑记:MyBatis selectKey、空 SQL
数据库·sql·mybatis
夜听莺儿鸣5 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
JosieBook5 小时前
【数据库】MySQL 实战精通系列 · 第6篇:InnoDB 存储引擎、日志与崩溃恢复
数据库·mysql