2012-02-17 10 views
0

非常に一般的な質問です。プログラマの文脈では、プロセス(プログラム)の操作上の側面を念頭に置いたものです。syslog - ログ行分類

特に、SaaS /マルチテナント(サーバー)ソフトウェア環境のコンテキストでは、ユーザーの操作や設定ミスによってエラーと警告が生成されるような、メッセージを分類するためのベストプラクティス/ガイドがあります。ソフトウェアの性質上、私が対処しなければならないほとんどのモジュールはステートレスです。ユーザーエラーのためにエラーが発生した場合、そのエラーと操作ミス(ネットワークの誤設定など)を区別することは非常に困難です。

私が知りたいことは、経験豊かな人からのものです。少年少女がこれらのメッセージを分類して問題を特定するのを容易にするために、ここで採用される合理的な論理は何ですか?

+0

スタック交換ネットワークでのクロスポスティングは許可されていません:http://meta.stackexchange.com/q/64068/85514質問を削除する必要がありますか? –

答えて

2

管理からわずか三つの側面および分析/分類の視点をログ:

  • は設定タグフィールド/プログラム名を確認します。次に、app/user_1app/user_2などのようなログタグを使用するように複数のインスタンスを設定することができ、syslogレベルで高速かつ簡単なフィルタが可能になります。
  • 左から右にメッセージを送るので、簡単な検索パターンや正規表現でログラインのさまざまなカテゴリをフィルタリングできます。例えば。 config error - cannot parse line 123またはruntime warning - lost connection to DB xyz
  • 非常に構造化されたログの場合は、'structured data' field in syslog-protocolもご覧ください。これまでのところほとんど使用されておらず、ツールをサポートしていませんが、名前空間と非常に明確なキー値属性を持つアプリケーションログメッセージが可能です。
+0

ポインタをありがとう。特に構造化データ。 [syslog()](http://linux.die.net/man/3/syslog)関数を介してそのデータを渡す方法はありません –

+0

メッセージフィールドに 'syslog(LOG_NOTICE、"%s "、" [exampleSDID @ 32473 ...]の後にフリーテキストメッセージが続く可能性があります ") - AFAIKのみNetBSDにはライブラリ関数[syslogp(3)](http://netbsd.gw.com/cgi-bin/ man-cgi?syslogp ++ NetBSD-current)はsyslog-protocol用ですが、これは非常に実験的で、他の場所では利用できません(つまり、本番環境では使用できません)。 – mschuett

0
  • 重症度によって分類
  • (氏名、IPアドレスなど)をサーバーとサーバーの種類を識別し、すべてのクロックが正しい順序メッセージを持っているため に同期していることを確認してください。
  • 監視ツールでいくつかのルールをフィルタリング/作成するメッセージ/エラーコードを入力します。
  • 私はあなたが彼らのsyslogと異なるマシンからログを収集します推測

など、ネットワーキングのような一般的なサービスに対処するためのカテゴリを入れて(1台のサーバに複数のモジュール場合に使用)モジュール

  • を入れてデーモンを監督/監視担当の中央装置に送信する。

  • 0

    ほとんどの* nixプロセスは、半標準書式「月曜日の24H-Timeホストprocess_name [pid]:メッセージ」を使用してsyslogにログを記録します。 Syslogには、メッセージの重大度を示す方法が組み込まれています(重大度はアプリケーションのものではなく、システムの将来のものであることに注意してください)。

    メッセージがデバッグの問題の場合、通常は "Function_Name File_Name Line_No Error_Code Error_Desc"です。それ以外の場合、メッセージのフォーマットは完全にプログラムに依存します。

    マルチテナントシステムでは、「メッセージ」部分がテナントIDの形式で始まり、その後に実際のログメッセージが表示されるのが一般的です。

    関連する問題