Apollo ServerとNowで作るGraphQLモックサーバ #4 モニタリング編
前回の続き。
作成したGraphQLサーバをモニタリング可能な状態にする。
Apollo Engine
Apollo Engine | The GraphQL Gateway with essential features like caching and performance tracing.
- GraphQL caching
- Query execution tracing
- Error tracking
- Trends
などの機能を備える
- モニタリングしたいだけなのでcachingは今回使わない
- アラートは有償版でのみ有効
- 有償版は$99/mo~(割と高い)
導入
最初にGraphQLのスキーマをアップロードする
npm i -g apollo apollo schema:publish --endpoint=<your graphql endpoint here> --key="<your key>"
次に、App Engineを利用するためのセットアップを行う
API Reference: apollo-server | Apollo Server
Provided the ENGINE_API_KEY environment variable is set, the engine reporting agent will be started automatically.
apollo-serverは環境変数 ENGINE_API_KEY
がセットされていれば、
その値を使ってapollo-engineを有効化するようになっている。
環境変数は .env
に記述したものを
nowの --dotenv
オプションに渡してセットする。
ENGINE_API_KEY=service:foo-bar-baz:xxx...
$ now --dotenv=.env.production $ now alias
確認
Usage Metrics
デプロイされた環境にアクセスし、Playgroundでいくつかクエリを実行した後、 Apollo Engineの "Metrics" の項目を見ると実行したクエリのログが確認できる。
- リクエストの頻度
- パフォーマンスの概要
- エラー率
クエリ名ごとにさらに詳細な情報を確認することもできる。
Daily Report
Slack integrationを設定しておくとdaily reportでモニタリングのサマリを受け取ることもできる。
Schema Explorer
Schema Explorerではschemaに含まれるtypeの一覧と、それぞれの使用状況を確認することができる。
例えば、これを見るとPerson.addressは全く使われていないことがわかるので @deprecated
にする、といった判断に使える。
Schema History
schemaの変遷を確認できる。
例えば、Person.addressを @deprecated
に変更した場合、以下のように表示される。
まとめ
- 小一時間くらいあればここまで準備できる
- あとはSchema足していってResolverをひたすら書く
- とりあえずクライアントの動作を確認するためだけのモックサーバならmock書いていくだけでもOK
- GraphQLのサーバ運用するのはそれなりに労力かかる(と聞く)が、モニタリングあればただ闇雲にやるよりはずっと安心