
要旨
rsyslog は %HOSTNAME% の値をどこから取得しますか? また、どのような条件下で「不明」が予想される値になりますか?
EC2 インスタンスで rsyslog を使用しており、ログを loggly に送信しようとしています。tail -f
ログ メッセージを表示すると、日付、ホスト名、タグ、メッセージを含むデフォルトの形式でログが表示されます。
を使用するとlogger "message"
、コンソールと loggly の両方に正しいログ エントリが表示されます。ただし、Java コンソール アプリケーションがイベントをログに記録すると、コンソールと loggly の両方でホスト名が「不明」になります。
奇妙なことに、tomcat によってホストされている Web アプリケーションからのログ エントリの場合、rsyslog と log4j を同じ構成にすると、正しいログ エントリが生成されます。
その一部は Java に特有のものであることは承知していますが、私の質問は次のとおりです。rsyslog は %HOSTNAME% の値をどこで取得し、どのような条件下で「不明」が予想される値になるのでしょうか。
答え1
私はこれを理解しました。ホスト名を取得するには、ホスト名をホスト ファイルの IP アドレスにマッピングする必要がありました。実際には、これはすでに行われていると思っていましたが、正しいホスト エントリを追加するためにスクリプトが実行された時点では、IP アドレスは不明で、ホスト名だけがファイルに追加されます。
正しいエントリを追加すると、ホスト名が rsyslog と loggly に期待どおりに表示されます。
その間に、loggly の形式を %HOSTNAME% から %$myhostname% に変更しました。リモート ログを記録していなかったため、$myhostname が常に正しいホスト名となり、これは問題なく機能しました。