SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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

 本連載では、オープンソースのオーケストレーションシステムである「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のチャンネルにアラートを通知できるようになります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
エラーログが発生した時のアラートの設定

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
KubernetesによるスケーラブルなWebアプリ環境の構築連載記事一覧

もっと読む

この記事の著者

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

 株式会社カブクのサーバーサイドエンジニアです。APIの開発(Python,GO,AppEngine)とKubernetesによるインフラ環境の構築を担当しています。好きな獣はチベットスナギツネです。 Twitter: @yoshikai_ FacebookWINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10703 2018/03/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング