我已经设置了 Prometheus 的 Alertmanager,以便管理来自 Prometheus 的警报。我已将来自 Prometheus 的警报发送到 Alertmanager,但故事就到此为止了。Alertmanager 从未将警报发送到我的电子邮件端点。
为了弄清楚 Alertmanager 中警报的确切结束位置,我想将日志级别从信息改为调试,但一直不知道该怎么做。现在甚至找到日志似乎都很难,它不在里面,/var/log
而且journalctl -u alertmanager
内容很少,可能在某个地方有另一个日志。
手册页配置 Alertmanager没有提到调试级别。我查看了源代码中提到的日志,发现该设置应该命名为log.level
。将以下代码片段添加到配置 YAML 也无济于事:
log:
level: debug
由于 Alertmanager 无法解析其配置文件而无法启动。
答案1
答案是,无法通过配置文件将 Prometheus 的 Alertmanagers 日志级别设置为调试,只能通过命令行参数来实现。不要问我为什么,我相信他们有他们的理由。
通过 Puppet,我将参数添加到 Alertmanager 的 Systemd 单元文件中,因此它最终看起来像这样:
[Unit]
Description=Prometheus alertmanager
Wants=basic.target
After=basic.target network.target
[Service]
User=alertmanager
Group=alertmanager
EnvironmentFile=/etc/sysconfig/alertmanager
ExecStart=/usr/local/bin/alertmanager \
--config.file=/etc/alertmanager/alertmanager.yaml \
--storage.path=/var/lib/alertmanager \
--log.level=debug
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
如果您从 shell 启动 Alertmanager,则只需将标志添加--log.level=debug
到您的调用中。
journalctl -u alertmanager
然后可以通过带有 Systemd init 系统的 Linux 发行版查看调试消息。
答案2
在 Ubuntu 系统上(如果 prometheus-alertmanager 是通过 apt 和官方 repo 安装的)。
打开
/etc/default/prometheus-alertmanager
并添加
ARGS="--log.level=debug"
到文件(替换 ARGS="")
然后通过 systemd 重新启动 prometheus-alertmanager:
sudo systemctl restart prometheus-alertmanager.service
通过 journalctl 显示日志:
journalctl -u prometheus-alertmanager.service --since today
答案3
我docker-compose.yml
接下来做了:command: --log.level=debug
查看具体信息:
alertmanager:
restart: unless-stopped
image: prom/alertmanager:latest
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
- '--storage.path=/alertmanager'
- '--log.level=debug'
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
expose:
- 9093/tcp
networks:
monitoring-net: