💻

newrelicのlogインテグレーションをamazon linux 2023×arm(graviton3)環境で動かす

2024/02/02に公開

前提

2024/02/02現在、newrelicのlogインテグレーションがamazonlinux2023×armの環境に通常のインストール手順を用いて導入できません。

https://docs.newrelic.com/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent/#system

そこで、newrelicエージェント自体がfluent-bitを用いてログを転送しているため、手動でfluent-bitを導入して動かしてみることにしました。

細かな設定内容などの説明は省いています。
公式のリンクを貼っていますのでそちらをご確認ください。

導入作業

fluent-bitをインストール

https://docs.fluentbit.io/manual/installation/linux/amazon-linux#single-line-install

curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh

sudo systemctl start fluent-bit
sudo systemctl enable fluent-bit

設定ファイルを作成/修正する

取得するログの設定をする

https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode

/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に指定する

https://newrelic.com/jp/blog/how-to-relic/fluent-bit-tutorial-with-infra-agent

/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

ログのフォーマットを設定するファイル(下記はデフォルトのまま)

https://docs.fluentbit.io/manual/pipeline/parsers/configuring-parser#parsers-configuration-file

/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のインテグレーションについてはこちらにまとめています。
https://zenn.dev/n06u1886/articles/c4f68fd38bd65e

Discussion