
2025/12/17 21:08
「エラーレベルは、何か修正すべき事があることを示すべきです。」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Prometheus Blackbox v0.28.0 は、ルーチンイベントを
ERROR としてログに記録するため、管理者が混乱し、アラートへの信頼が損なわれます。主張は、即時のユーザー行動を必要とする問題(設定ファイルエラー、メモリ割り当て失敗、予期せぬデータファイル読み取りエラーなど)のみがエラーレベルでログに残すべきだということです。ルーチンまたは外部の障害(例えば、遠隔ホスト上のポート 25 に到達できない SMTP メーラー)は 運用レベル の問題であり、緊急介入を必要としないため WARN または INFO といった低いカテゴリに属します。
ERROR レベルを誤って使用すると管理者がログを無視するようになり、本当のバグが目立つまで見逃されてしまいます。正確なログレベルの使用はメンテナンスを効率化し、管理者の信頼を保ち、追加のデバッグツールへの依存を減らします。また、記事では、もしログがデバッグ専用である場合、システムログをクリーンに保つためにそれらを無効にするオプションを提供すべきだとも述べています。
要するに、Prometheus Blackbox はユーザー行動を必要とする真の障害(プログラムレベルエラー)と通常の運用上のハプニングを区別し、適切なログレベルを使用して明確で実行可能なアラートを維持すべきです。
本文
エラーログレベルとは何を意味するべきか(システム管理者の視点)
2025年12月16日
Fediverseで、あるプログラムの新しいロギング挙動に対して不機嫌な反応を示しました。
「ログを見るときは必ずその旨を知らせてくれないといけない。完全に定常的なイベントは
で記録するようにしろ。」level=ERROR
ありがとう、Prometheus Blackbox v0.28.0。あなたは島から追放された。0.27.0 からアップグレードしない。0.28.1 が出るかもしれない―とても期待したい。(はい、報告済みです。)
そして今日のテーマに対してさらに熱弁を吐きました。
ログレベルについての今日の熱弁:修正が必要でないものはエラーではなく、少なくとも警告(warning)にすべきだ。
(これは「error / warning / info / debug」という古典的なロギングレベルを前提としており、多くのツールが現在より細分化されたレベルを採用しているとは限らないということです。)
システムログにおいて
は、何かがおかしく「しかも直す必要がある」状態でなければならない。ERROR
拡張すると、その問題はローカルで解決できるもの ― つまりログを出しているプログラム自体の動作に影響するものであって、他所の問題ではないべきです。
真の ERROR
の例
ERROR- 設定ファイルエラー
- メモリ割り当て失敗
- データファイル読み込み時の予期せぬ失敗
ERROR
とすべきでない例(ローカルに影響がなければ)
ERROR- SMTPメール送信器が「 のポート 25 に接続できません」とログするケース – これはリモート側の問題で、ローカルではありません。
ユーザーが
ERROR を修正できない場合、それは本当にエラーではなく、環境に根ざした解決不能な問題と見なされ、結果としてプログラムを放棄してしまう恐れがあります。
つまり、正常に動作するプログラムは
レベルのメッセージを記録しない べきです。ERROR
ERROR は実際に何かが「間違っている」ことを示す信頼できるサインでなければならず、そうでなければシステム管理者はつい全てのメッセージを無視してしまい、本当に重要なエラーが雑音に埋もれてしまいます。
運用レベルとプログラムレベルのエラーを区別する
ロギングを実装する際には、次のように分けることが重要です。
- 運用レベルのエラー – 個々の操作(operation)が正常に完了できない状態。
- プログラムレベルのエラー – プログラム全体が正しく機能しなくなる状態。
すべての操作エラーを「プログラムエラー」として扱うことは、運用担当者には役立ちません。
個別の操作問題は
WARN や INFO として記録し、本当にプログラム全体に影響する失敗だけを ERROR に留める べきです。
ロギングがデバッグ目的のみであれば、完全にオフにできる設定を用意し、ユーザーがシステムログを不必要なデバッグ出力で汚染しないようにしましょう。