はじめに
「Google Stackdriver」(以下、Stackdriver)を使ったアプリケーションのログの見方と、アラートの設定方法について実際に設定をしながら解説していきます。
アラートはアプリケーションの信頼性を担保していく上で最低限必要になる「アプリケーションがダウンした場合」と「エラーログを検知した場合」の2パターンで発生するように設定します。
Stackdriverのアラートについて
Stackdriverは標準でアラートの機能が提供されており、Stackdriver Monitoring Consoleでアラートポリシーを設定することで使用できます。アラートポリシーでは、「アラートの条件」と「どこに通知するのか」の設定が可能です。アラートポリシーの設定項目は以下の通りです。
- アラートの条件(これは前回の記事で解説をした指標などを指定できます)
- 通知先
- ドキュメント(通知時の内容に含めるドキュメントを指定)
- アラートポリシーの名前
Stackdriverのアラートの設定
それでは、実際にアラートポリシーを作成してみましょう。今回はUptimeCheckを条件にしたアラートポリシーを作成します。
UptimeCheckとはアプリケーションの稼働時間をチェックする機能です。アプリケーションの特定のエンドポイントを定期的に監視することで、アプリケーションが正常に動作しているかをチェックできます。端的に言うと死活監視です。
これを活用することで、「5分間アプリケーションがダウンしている」ケースなどを判別できます。今回のUptimeCheckには以前の記事でデプロイしたアプリケーションのエンドポイントを指定したいところですが、以前作成したIngressでは、pro.app.ioかdev.app.ioのドメインからのアクセスのみをアプリケーションに振り分ける設定になっており、pro.app.ioのドメインは実際には振っていないため、このままではUptimeCheckができません。そのため、実際にドメインを取得するか、IngressのIPアドレスからのアクセスも振り分ける設定に変更する必要があります。今回はドメイン取得の手間を考え、後者のIPアドレスで振り分けるようにIngressの設定を変更する方法を紹介します。アラートの設定手順は以下の通りです。
- Ingressの設定を変更
- UptimeCheckの設定とアラートの設定
1.Ingressの設定を変更
IngressのIPアドレスでアプリケーションにアクセスできるようにIngressの設定を変更します。エディタを開き、リスト1の内容をコピーして「ingress.yaml」のファイル名で保存してください。
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test-ingress annotations: kubernetes.io/ingress.global-static-ip-name: "test-ip" # 第2回の記事で、予約したstatic-ipを指定 spec: backend: #ここの設定を追加(1) serviceName: service-production servicePort: 80 rules: - host: pro.app.io http: paths: - backend: serviceName: service-production servicePort: 80 - host: dev.app.io http: paths: - backend: serviceName: service-develop servicePort: 80
(1)はIngressのIPアドレスからアクセスがあった場合にアプリケーションに振り分ける設定になります。
それでは、applyコマンドで既存のIngressの設定を更新しましょう。
kubectl apply -f ingress.yaml
しばらくするとIngressのIPで、service-productionを経由してアプリケーションにアクセスできるようになるはずです。もしIngressの設定がうまく反映されない場合は、一度Ingressを削除してから作り直してみてください。
2.UptimeCheckの設定とアラートの設定
次にUptimeCheckを追加しましょう。こちらは先ほど設定したIngressのIPアドレスに対してUptimeCheckするように設定します。
まずStackdriver MonitoringのMonitoring Overviewにアクセスして[Create Check]をクリックしてください。「New Uptime Check」のページに遷移したら、「Title」に適当な名前、「Check Type」を「HTTP」、「Resource Type」に「URL」を選択、「HostName」にIngressのIPアドレスを入力、「Path」と「Check every」はデフォルトのままにします。設定が終わったら[Test]を押して、動作確認してみましょう。正常に動作していれば、「responded with 200 (OK)」と表示されるので、その表示が確認できたら、[Save]を押しましょう。
これで、UptimeCheckの作成が完了しました。続けて下図のように続けてアラートを作成するかどうかを問うメニューが表示されるので、[Create Alerting Policy]を押してアラートを作っていきましょう。
アラートの作成手順は以下の通りです。Conditionsに先ほど作成したUptimeCheckが追加されていることを確認してください。自動的に追加されているはずです。基本的には、デフォルトのままで問題ないので[Save Policy]を押してアラートを保存してください。
今回、Notificationsの設定は行いませんが、Notificationsで設定することで任意のメールアドレスやSlackのチャンネルにアラートを通知できるようになります。