はじめに
2023/1/13にオーケー株式会社様における会員カードアプリの導入事例が公開されました。
アイレットはデザインから開発、そしてインフラ構築・運用までをご支援させていただきました。
当該記事はインフラ構築の裏側について解説する記事となります。
複数回に分けて順次公開させていただいており、今回は最後の解説の、監視運用、ログ保管に関する内容となります。
前回までの記事はこちら:
概要
以下のコンポーネントを利用しております。
- ログ管理
- Cloud Logging
- 監視
- ログ監視
- APM
ログ管理はCloud LoggingがデフォルトでGoogle Cloudの各種ログを自動収集するので、あまり設定を意識することなく完結しております。監視はNewRelicを利用することで、インフラストラクチャだけでなくログやAPMを含めたフルスタックな監視を提供することができました。
各項目の詳細
ログ管理
【Cloud Logging】
Cloud LoggingではGoogle Cloudの各サービスが出力するログや監査・セキュリティログを自動的に収集するほか、Cloud Runのコンテナログを標準出力で取得しています。
ログは3年間保管する要件でしたが、デフォルトでは以下の懸念点があったため、新たにログシンクを設定しCloud Storageへ保管する設計としたことで、要件を満たしコストを考慮いたしました。
- 監査・セキュリティログのログバケット上での保管期間が400日
- 標準出力ログのログバケット上での保管期間が30日
- ログバケットのコストが高い
監視
NewRelicで監視を行うにあたり、利用するサービスに基づいて監視設計を定めました。
基本的に弊社の標準監視をベースにしておりますが、よりサービス視点を意識し、以下の監視も併せて行っております。
- Cloud Run、Cloud Functionsに対してログ監視を行うことで、アプリケーションのエラー状況を確認
- Cloud RunにAPMを導入することで、Webサービスの提供状況をモニタリングする
【ログ監視】
ログ監視は、先程触れた内容と同様にCloud Loggingのログシンクを用いてNewRelic Logsへログを転送することで対応しました。
誤検知を避けるために、NRQLでRLIKE演算子を使用し正規表現での文字列一致とすることで、特定の文字列のみで適切にアラートを発砲するようにしました。
【APM】
Cloud RunへAPMを導入することでWebサービスの正常性をリアルタイムで追跡できるようにしました。
これによって、DBやキャッシュなど周辺のコンポーネントも含めた、レスポンスタイムやスループット、エラー率、トランザクションなどの基本的なデータを始めとした様々なデータを可視化することができ、アプリケーションのパフォーマンスに対してボトルネックになっている箇所の特定をスムーズに行えます。
また、今回はCloud Runの構築中に合わせて導入したことで、パフォーマンス状況を確認しながら負荷試験を行うことができ、運用前からメリットを享受することができました。
考慮点及びコメント
考慮点
APMを導入することで、Webサービスの障害や不具合などのボトルネックを最小限の時間で解消できるように構成いたしました。
コメント
NewRelicで監視を行う優位性を考えた際に、APMはインフラと開発どちらにも非常にメリットのあるサービスでした。導入方法も多岐にわたり、様々な構成に適した方法を取ることができるため簡単に始めることができる点も評価できると考えております。
当該記事はインフラ担当した亀田、齋藤(寛隆)にて記載しております。