はじめに
こんにちは、rendaman0215です。
弊社では、ログ保管やAPM・メトリクスの収集先としてNewRelicを採用しています。
私は認証チームとして、Go言語のサービスにNewRelicを導入したため、その方法を紹介できればと思います。
本記事は、その取り組みの中で行なったログ転送とメトリクス収集に関する記事になります。
実施環境
言語:Go言語
フレームワーク:go-chi
実行環境:ECS on Fargate
CI/CD: Codeシリーズ
導入
ログ転送
ログをあらかじめjsonにシリアライズしておく必要はありますが、タスク定義に以下の設定を組み込むことですぐ使用開始できます。
タスク定義上のアプリケーションコンテナ部分に以下のように書きます。
これらの設定をすることで、firelensでログを飛ばす設定ができます。
"logConfiguration": {
"logDriver": "awsfirelens",
"options": {
"Name": "newrelic"
},
"secretOptions": [{
"name": "apiKey",
"valueFrom": "${NEWRELIC_LICENSE_KEY}"
}]
},
ログルータ部は以下の通り設定します。
NewRelic謹製のimageがあります。
{
"name": "log_router",
"image": "533243300146.dkr.ecr.us-east-2.amazonaws.com/newrelic/logging-firelens-fluentbit",
"essential": true,
"firelensConfiguration": {
"type": "fluentbit",
"options": {
"enable-ecs-log-metadata": "true"
}
}
}
メトリクスの収集
メトリクスの収集についてもタスク定義に以下の設定を組み込むことですぐ使用開始できます。
{
"name": "newrelic-metrics",
"image": "newrelic/nri-ecs:latest",
"environment": [
{
"name": "NRIA_OVERRIDE_HOST_ROOT",
"value": ""
},
{
"name": "NRIA_IS_SECURE_FORWARD_ONLY",
"value": "true"
},
{
"name": "FARGATE",
"value": "true"
},
{
"name": "NRIA_PASSTHROUGH_ENVIRONMENT",
"value": "ECS_CONTAINER_METADATA_URI,ENABLE_NRI_ECS,FARGATE"
},
{
"name": "NRIA_CUSTOM_ATTRIBUTES",
"value": "{\"nrDeployMethod\":\"downloadPage\"}"
}
],
"secrets": [
{
"name": "NRIA_LICENSE_KEY",
"valueFrom": "${NEWRELIC_LICENSE_KEY}"
}
],
}
まとめ
今回は、GoのWebアプリケーションにおいて、NewRelicを使ったログルーティングとメトリクス収集の設定方法について紹介しました。
いずれの設定もタスク定義を修正することで利用できるため、簡単にはじめられてよいですね。
次回は、APMの導入記事を書こうと思います。