ログデータをNewRelicに取り込むための幅広いソリューションを提供しています。ただし、ログフォワーダー(CDN、ハードウェアデバイス、マネージドサービスなど)がない他の状況では、TCPエンドポイントを介してsyslogプロトコルを使用できます。 rsyslog
やsyslog-ng
などのsyslogクライアントを使用して、ログをNewRelicに転送できます。
互換性と要件
syslogクライアントを使ってログをNew Relicに転送するには、以下が必要です。
- ログを送信したいアカウントの有効な New Relic ライセンスキー
- このドキュメントで説明されているように、syslogクライアントの設定にいくつかのマイナーな変更があります。
rsyslogの設定
重要
EUリージョンアカウントを使用している場合は、エンドポイントとしてnewrelic.syslog.nr-data.net
ではなくnewrelic.syslog.eu.nr-data.net
を使用する必要があります。 EUアカウントにUSエンドポイントを使用しても機能しないため、構成ファイルで置き換えることを忘れないでください。
ログをrsyslog
でNewRelicに転送するには:
rsyslog
がTLS暗号化を使用してログを送信できるようにするために必要なパッケージをインストールします。sudo yum install rsyslog-gnutls ca-certificatesオプション:ログファイルをテールし、その内容をNewRelicに転送するように
rsyslog
を設定します。テキストファイル入力モジュールを有効にするには、/etc/rsyslog.conf
ファイルに以下を追加します。module(load="imfile"PollingInterval="10"statefile.directory="/var/spool/rsyslog")/etc/rsyslog.d/
ディレクトリに、newrelic.conf
という名前のテキストファイルを作成します。新しく作成された
newrelic.conf
を/etc/rsyslog.d/
ファイルに明示的に含めます。include(file="/etc/rsyslog.conf.d/newrelic.conf")以下を
newrelic.conf
に追加し、YOUR_LICENSE_KEY
をNewRelicライセンスキーに置き換えます。## Specify each of the files to be tailed in case step 1 is doneinput(type="imfile" ruleset="infiles" Tag="<YOUR_FILE_TAG>" File="<PATH_TO_FILE>" StateFile="<UNIQUE_STATEFILE_NAME >")## Template expected by the New Relic Syslog endpointtemplate(name="newrelic-rfc5424"type="string"string="<YOUR_LICENSE_KEY> <%pri%>%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msgid% %structured-data% %msg%\n")## Configure TLS and log forwardingglobal(DefaultNetstreamDriver="gtls"DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt")action(type="omfwd"Target="newrelic.syslog.nr-data.net"Port="6514"Protocol="tcp"Template="newrelic-rfc5424"ResendLastMSGOnReconnect="on"StreamDriver="gtls"StreamDriverAuthMode="x509/name"StreamDriverPermittedPeers="*.syslog.nr-data.net"StreamDriverMode="1")次のコマンドを実行して、
rsyslog
サービスを再起動します。sudo systemctl restart rsyslogNew Relic アカウント のログを確認してください。
rsyslog 7以前のレガシー設定ファイル
rsyslogバージョン7以下を使用している場合は、設定ファイルを廃止されたレガシーフォーマットに合わせる必要があります。この形式はレトロな互換性のためにのみ残されています。 rsyslog documentation で述べられているように、使用しないことを強くお勧めします。
rsyslog
がTLS暗号化を使用してログを送信できるようにするために必要なパッケージをインストールします。sudo yum install rsyslog-gnutls ca-certificatesオプション:ログファイルをテールし、その内容をNewRelicに転送するように
rsyslog
を設定します。テキストファイル入力モジュールを有効にするには、/etc/rsyslog.conf
ファイルに以下を追加します。$ModLoad imfile$InputFilePollInterval 10$PrivDropToGroup adm$WorkDirectory /var/spool/rsyslog/etc/rsyslog.d/
ディレクトリに、newrelic.conf
という名前のテキストファイルを作成します。新しく作成された
newrelic.conf
を/etc/rsyslog.d/
ファイルに明示的に含めます。$IncludeConfig /etc/rsyslog.conf.d/newrelic.conf以下を
newrelic.conf
に追加し、`YOUR_LICENSE_KEYをNewRelicライセンスキーに置き換えます。## Template expected by the New Relic Syslog endpoint$template NRLogFormat,"YOUR_LICENSE_KEY <%pri%>%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msgid% %structured-data% %msg%\n"## Specify each of the files to be tailed in case step 1 is done$InputFileName /path/to/file$InputFileTag <YOUR_FILE_TAG>$InputFileStateFile <UNIQUE_STATEFILE_NAME>$InputFileSeverity info$InputRunFileMonitor## Configure TLS and log forwarding$DefaultNetstreamDriverCAFile /etc/ssl/certs/ca-certificates.crt$ActionSendStreamDriver gtls$ActionSendStreamDriverMode 1$ActionSendStreamDriverAuthMode x509/name$ActionSendStreamDriverPermittedPeer *.syslog.nr-data.net*.* @@newrelic.syslog.nr-data.net:6514;NRLogFormat次のコマンドを実行して、
rsyslog
サービスを再起動します。sudo systemctl restart rsyslogNew Relic アカウント のログを確認してください。
syslog-ngの設定
ログをsyslog-ng
でNewRelicに転送するには:
syslog-ng
がTLS暗号化を使用してログを送信できるようにするために必要なca-certificates
をインストールします。sudo yum install ca-certificatesテキストエディタで
syslog-ng
構成ファイル(/etc/syslog-ng/syslog-ng.conf
)を開きます。を追加してモニターするソースを定義します。
source s_src {internal();};オプション:
Sources
構成ブロックに以下を追加して、syslog-ng
をテールファイルに構成します。source s_files {file("<PATH_TO_FILE>");};New Relic
syslog
形式を定義し、 NewRelicライセンスキーを追加します。template NRFormat { template("YOUR_LICENSE_KEY <${PRI}>1 ${ISODATE} ${HOST:--} ${PROGRAM:--} ${PID:--} ${MSGID:--} ${SDATA:--} $MSG\n"); template_escape(no); };
New Relic Syslogのエンドポイントを追加します。
destination d_newrelic {network("newrelic.syslog.nr-data.net" port(6514)transport("tls")tls(peer-verify(no))template(NRFormat));};ログパス設定ブロックに以下の出力を追加します。
log {source(s_src);source(s_files); ## in case step 4 is implemented.destination(d_newrelic);};次のコマンドを実行して
syslog-ng
を再起動します。sudo service syslog-ng restartNew Relic アカウント のログを確認してください。
ヒント
もしDockerコンテナからsyslog-ngを実行していて問題がある場合は、 balait/syslog image documentation を確認してください。