💻
newrelicのlogインテグレーションをamazon linux 2023×arm(graviton3)環境で動かす
前提
2024/02/02現在、newrelicのlogインテグレーションがamazonlinux2023×armの環境に通常のインストール手順を用いて導入できません。
そこで、newrelicエージェント自体がfluent-bitを用いてログを転送しているため、手動でfluent-bitを導入して動かしてみることにしました。
細かな設定内容などの説明は省いています。
公式のリンクを貼っていますのでそちらをご確認ください。
導入作業
fluent-bitをインストール
curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
sudo systemctl start fluent-bit
sudo systemctl enable fluent-bit
設定ファイルを作成/修正する
取得するログの設定をする
/etc/fluent-bit/newrelic.conf
[INPUT]
Name tail
Path /var/log/nginx/access.log
Buffer_Max_Size 128k
Mem_Buf_Limit 16384k
Skip_Long_Lines On
Path_Key filePath
Tag nginx-access
DB /var/db/newrelic-infra/newrelic-integrations/logging/fb.db
[INPUT]
Name tail
Path /var/log/nginx/error.log
Buffer_Max_Size 128k
Mem_Buf_Limit 16384k
Skip_Long_Lines On
Path_Key filePath
Tag nginx-error
DB /var/db/newrelic-infra/newrelic-integrations/logging/fb.db
[FILTER]
Name record_modifier
Match nginx-access
Record logtype access.log
[FILTER]
Name record_modifier
Match nginx-error
Record logtype error.log
[FILTER]
Name record_modifier
Match *
Record entity.guid.INFRA "${newrelic_guid}"
Record hostname "${host_name}"
Record service "${servicename}"
Record plugin.type "${nri-agent}"
[OUTPUT]
Name newrelic
Match *
licenseKey "${licence_key}"
validateProxyCerts false
Retry_Limit 5
先程作成した/etc/fluent-bit/newrelic.confをnewrelic側のconfigに指定する
/etc/newrelic-infra/logging.d/fluentbit.yml
logs:
- name: external-fluentbit-config-and-parsers-file
fluentbit:
config_file: /etc/fluent-bit/newrelic.conf
parsers_file: /var/db/newrelic-infra/newrelic-integrations/logging/parsers.conf
ログのフォーマットを設定するファイル(下記はデフォルトのまま)
/var/db/newrelic-infra/newrelic-integrations/logging/parsers.conf
[PARSER]
Name rfc5424
Format regex
Regex ^Ö<(?<pri>[0-9][1,5])Ö>1 (?<time>[^ ]+) (?<host>[^ ]+) (?<ident>[^ ]+) (?<pid>[-0-9]+) (?<msgid>[^ ]+) (?<extradata>(Ö[(.*)Ö]ö-)) (?<message>.+)$
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L%z
Time_Keep On
[PARSER]
Name rfc3164-local
Format regex
Regex ^Ö<(?<pri>[0-9]+)Ö>(?<time>[^ ]* [1,2][^ ]* [^ ]*) (?<ident>[a-zA-Z0-9_Ö/Ö.Ö-]*)(?:Ö[(?<pid>[0-9]+)Ö])?(?:[^Ö:]*Ö:)? *(?<message>.*)$
Time_Key time
Time_Format %b %d %H:%M:%S
Time_Keep On
[PARSER]
Name rfc3164
Format regex
Regex /^Ö<(?<pri>[0-9]+)Ö>(?<time>[^ ]* [1,2][^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[a-zA-Z0-9_Ö/Ö.Ö-]*)(?:Ö[(?<pid>[0-9]+)Ö])?(?:[^Ö:]*Ö:)? *(?<message>.*)$/
Time_Key time
Time_Format %b %d %H:%M:%S
Time_Format %Y-%m-%dT%H:%M:%S.%L
Time_Keep On
エージェントを再起動する
sudo systemctl restart newrelic-infra
少し待つとnewrelicにログが連携されていることが確認できました。
最後に
最新の状態に突き進むとできなくなることもあると学びました。
apmとnginxのインテグレーションについてはこちらにまとめています。
Discussion