1

Elasticsearch、MongoDB、Graylog2 を Azure で実行している Ubuntu サーバーがあり、ログを送信しようとしている asp.net mvc4 アプリケーションがあります。(ロギング コンポーネントとして Gelf4Net / Log4Net を使用しています)。要するに、何もログに記録されていません。

(更新にスキップして、何が問題なのかを確認してください)

セットアップ

  • graylog2 に必要なソフトウェアを実行する 1 つの Xsmall Ubuntu VM
    • すべてがデーモンとして実行されています
  • MVC4 アプリを備えた 1 つの Xsmall クラウド サービス (2 つのインスタンス)
  • 彼らが話すことができるように仮想ネットワークのセットアップ。

それで、私は何を試しましたか?

  • Linuxボックスから次のコマンドを実行すると、メッセージがログに記録されますecho "<86>Dec 24 17:05:01 foo-bar CRON[10049]: pam_unix(cron:session):" | nc -w 1 -u 127.0.0.1 514
  • パブリック IP を使用するように IP アドレスを変更できますが、これも正常に機能します。
  • このpowershellスクリプトを使用すると、開発マシンと本番Webサーバーから同じメッセージをログに記録できます
  • Windows ファイアウォールがオフになっていて、まだ機能していません。
  • FileAppender Log4Net にログインできるので、Log4Net が機能していることがわかります。
  • graylog2.log を追跡しても、特に問題はありません。プラグイン ディレクトリに関するいくつかの警告 すべてが機能していることはわかっていますが、Gelf4Net アペンダーを機能させることができません。私はここで負けです。どこで見ることができますか?私が欠けているものはありますか

GRAYLOG2.CONF

#only showing the connection stuff here. If you need something else let me know
syslog_listen_port = 514
syslog_listen_address = 0.0.0.0
syslog_enable_udp = true
syslog_enable_tcp = false

web.config/Log4Net

//application_start() has log4net.Config.XmlConfigurator.Configure();

<log4net >
  <root>
    <level value="ALL" />
    <appender-ref ref="GelfUdpAppender" />
  </root>
  <appender name="GelfUdpAppender" type="Gelf4net.Appender.GelfUdpAppender, Gelf4net">
    <remoteAddress value="public.ip.of.server"/>
    <remotePort value="514" />
    <layout type="Gelf4net.Layout.GelfLayout, Gelf4net">
      <param name="Facility" value="RandomPhrases" />
    </layout>
  </appender>
</log4net>

アップデート

何らかの理由で、graylog をデバッグ モードで実行することを思いつきませんでした :) そうすると、このメッセージが表示されます。

2013-04-09 03:00:56,202 情報: org.graylog2.inputs.syslog.SyslogProcessor - 日付を解析できませんでした。allow_override_syslog_date が true であるため、NOW に設定されました。2013-04-09 03:00:56,202 デバッグ: org.graylog2.inputs.syslog.SyslogProcessor - 不完全なメッセージをスキップします。

したがって、不完全なメッセージを送信しています。何が問題なのかどうすればわかりますか?

4

1 に答える 1

1

間違ったポートを使用していました (DOH!)

graylog2.config / で指定されたポートを使用する必要がありましたgelf_listen_port = 12201

したがって、私の web.config/log4net/gelf アペンダーには

<appender name="GelfUdpAppender" type="Gelf4net.Appender.GelfUdpAppender, Gelf4net">
   ...
    <remotePort value="12201" />
   ...
</appender>

同じ問題を抱えている可能性がある人は、変更後に Log4Net が構成をリロードすることを確認してください。構成ファイルの変更を監視するように設定していないため、間違ったポートを使用していることに気付くのに数分かかりました. 最初に 514 から 12201 に変更したとき、メッセージはまだ届きませんでした。Log4Net が新しい構成を取得するためにサーバーを再起動する必要がありましたが、それが機能し始めました。

于 2013-04-09T03:26:08.730 に答える