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

相关推荐
专注API从业者2 小时前
淘宝商品详情 API 与爬虫技术的边界:合法接入与反爬策略的技术博弈
大数据·数据结构·数据库·爬虫
C++ 老炮儿的技术栈2 小时前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
爱码小白2 小时前
MySQL 单表查询练习题汇总
数据库·python·算法
WangJunXiang62 小时前
第09章:PostgreSQL日常维护
数据库·postgresql
三道渊2 小时前
进程通信与网络协议
开发语言·数据库·php
徒 花2 小时前
数据库知识复习05
android·数据库
豆沙糕2 小时前
RAG文档切分最佳实践:企业级方案+主流策略+生产落地
数据库·人工智能
不会写DN2 小时前
SQL 多表操作全解
数据库·sql
爱莉希雅&&&2 小时前
linux中MySQL数据库备份恢复的四种方法(更新中)
linux·数据库·mysql·数据库备份·mysqldumper