Ubuntu运行Python MySQL指标抓取脚本报libpcap不可用错误如何解决?
错误产生原因
你的报错核心是scapy的抓包功能依赖的底层库缺失、或者权限不足,具体如下:
- 系统未安装libpcap运行库:scapy的流量过滤、数据包捕获功能依赖系统层面的libpcap库,你的Ubuntu系统默认没有预装该库,导致无法编译你设置的
dst port 3306过滤规则。 - Python缺少libpcap绑定依赖:仅装系统库不够,还需要安装Python对应的pypcap等绑定包,才能让scapy正常调用libpcap的接口。
- 运行权限不足:数据包捕获属于特权操作,需要root权限才能执行,普通用户运行脚本会导致libpcap接口调用失败。
解决方法
按照以下步骤操作即可正常运行:
- 第一步:安装系统层面的libpcap依赖
执行命令:sudo apt install -y libpcap-dev libpcap0.8 - 第二步:安装Python对应的依赖包
你当前的代码是Python2语法(print无括号),执行命令:sudo pip install pypcap libpcap
如果后续要迁移到Python3适配,执行命令:sudo pip3 install pypcap libpcap - 第三步:用root权限执行脚本
抓包必须要有root权限,执行命令改为:sudo python mysql-stats.py
额外优化建议
如果你的MySQL开启了SSL加密传输,你当前抓包匹配明文关键字的方案会失效,推荐优先用官方的mysqld_exporter来抓取MySQL指标,稳定性和准确性远高于流量抓包方案。
内容的提问来源于stack exchange,提问作者Ciasto piekarz
相关产品推荐
相关产品推荐

