rsyslog テンプレートの %HOSTNAME% の値が「不明」です

rsyslog テンプレートの %HOSTNAME% の値が「不明」です

要旨

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 が常に正しいホスト名となり、これは問題なく機能しました。

関連情報