Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Google Stackdriverにおける、アラートの設定とアプリケーションのログの設定

KubernetesによるスケーラブルなWebアプリ環境の構築 第6回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2018/03/23 14:00

 本連載では、オープンソースのオーケストレーションシステムである「Kubernetes」を用いて、スケーラブルで運用しやすいWebアプリケーションを構築する方法を紹介します。前回はモニタリングツール「Google Stackdriver」の導入とモニタリング方法を解説をしました。今回はアラートの設定とアプリケーションのログの設定ついて説明します。

目次

はじめに

 「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の設定を変更する方法を紹介します。アラートの設定手順は以下の通りです。

  1. Ingressの設定を変更
  2. UptimeCheckの設定とアラートの設定

1.Ingressの設定を変更

 IngressのIPアドレスでアプリケーションにアクセスできるようにIngressの設定を変更します。エディタを開き、リスト1の内容をコピーして「ingress.yaml」のファイル名で保存してください。

リスト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]を押しましょう。

New Uptime Check
New Uptime Check

 これで、UptimeCheckの作成が完了しました。続けて下図のように続けてアラートを作成するかどうかを問うメニューが表示されるので、[Create Alerting Policy]を押してアラートを作っていきましょう。

続けてアラートポリシーを作成しますか?
続けてアラートポリシーを作成しますか?

 アラートの作成手順は以下の通りです。Conditionsに先ほど作成したUptimeCheckが追加されていることを確認してください。自動的に追加されているはずです。基本的には、デフォルトのままで問題ないので[Save Policy]を押してアラートを保存してください。

 今回、Notificationsの設定は行いませんが、Notificationsで設定することで任意のメールアドレスやSlackのチャンネルにアラートを通知できるようになります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 吉海 将太(ヨシカイ ショウタ)

     株式会社カブクのサーバーサイドエンジニアです。APIの開発(Python,GO,AppEngine)とKubernetesによるインフラ環境の構築を担当しています。好きな獣はチベットスナギツネです。 Twitter: @yoshikai_ Faceb...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:KubernetesによるスケーラブルなWebアプリ環境の構築
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5