![关闭内核错误或通过配置 Prometheus Node Exporter 避免它](https://linux22.com/image/141833/%E5%85%B3%E9%97%AD%E5%86%85%E6%A0%B8%E9%94%99%E8%AF%AF%E6%88%96%E9%80%9A%E8%BF%87%E9%85%8D%E7%BD%AE%20Prometheus%20Node%20Exporter%20%E9%81%BF%E5%85%8D%E5%AE%83.png)
/var/log/syslog
让我首先给出我在和 中看到的输出dmesg
:
[559151.898586] ACPI Error: SMBus/IPMI/GenericSerialBus write requires Buffer of length 66, found length 32 (20170831/exfield-427)
[559151.911578] No Local Variables are initialized for Method [_PMM]
[559151.911580] No Arguments are initialized for method [_PMM]
[559151.911584] ACPI Error: Method parse/execution failed \_SB.PMI0._PMM, AE_AML_BUFFER_LIMIT (20170831/psparse-550)
[559151.916648] ACPI Exception: AE_AML_BUFFER_LIMIT, Evaluating _PMM (20170831/power_meter-338)
显然普罗米修斯节点导出器是触发错误,虽然它似乎不是原因对于记录的错误。
现在我想要实现的是 - 最好 - 告诉 Prometheus Node Exporter 停止查询它试图查询的任何信息。如果做不到这一点,我想使这些消息保持沉默,这样它们就不会向我的日志文件发送垃圾邮件。
我将如何选择这两个选项? ...或者也许还有其他我没有考虑过的选择...
这种情况发生在 Ubuntu 18.04 的打包版本上prometheus-node-exporter
(0.16 和 0.17 版本也发生过这种prometheus-node-exporter
情况,可以通过 - 是的,在 Ubuntu 上安装stretch-backports
)。
答案1
acpi_power_meter
显然,最好的方法是通过添加如下行来将指定的内核模块列入黑名单/etc/modprobe.d/blacklist.conf
(或在同一文件夹中新创建的文件):
blacklist acpi_power_meter
在正在运行的系统上,还应该rmmod acpi_power_meter
以超级用户身份运行才能卸载模块。我已经对其进行了测试,并且在我负责的所有 HP 服务器上都运行得非常好。据称,该错误的原因是所述 HP 硬件上的 BIOS 缺陷。
这似乎是唯一可行的方法,我通过以下方式找到了它这条评论关于普罗米修斯node_exporter
项目。
答案2
我将这些[_PMM]
类型的日志消息放在一个新openvz
容器中(因此这些消息不在我的控制范围内)。
与rsyslog
您一起可以创建一个属性过滤器 in /etc/rsyslog.d/discard.conf
(此目录中的文件是在应用所有其他配置之前获取的):
:msg, contains, "[_PMM]" ~
对于syslog
没有过滤器的(例如inetutils-syslogd) - 一个简单的修复是创建/etc/cron.hourly/pmmlog
并使其可执行:
#!/bin/sh
# remove annoying logs
# Nov 29 12:55:29 vzbackup vmunix: [161167.516267] No Arguments are initialized for method [_PMM]
# Nov 29 12:56:29 vzbackup vmunix: [161227.527169] No Local Variables are initialized for Method [_PMM]
sed -i '/.*[_PMM]/d' /var/log/messages