SHOEISHA iD

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

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

StackStormで変わるシステム運用と活用事例

StackStormによる障害対応の自動化

StackStormで変わるシステム運用と活用事例 第3回

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

StackStormによるARの実現

ARの動作をシンプルに定義する

 StackStorm公式ブログでAuto-Remediation Definedとして触れられているように、ARはStackStormの主要なユースケースの1つと位置付けています。また、Netflixでは実際にStackStormによるARを実現しており、StackStormの公式ブログで紹介されています。

 上記のようにStackStormがAR基盤として使われるのは何故でしょうか。それは、Event-Driven Automationという考え方と実装がARにマッチしているからです。

 ここで、StackStormの掲げるEvent-Driven Automationという思想にのっとり、ARの動作を整理してみます。

Event-Driven Automation×Remediation
Event-Driven Automation×Remediation
 
登場人物 機能
Server 自身の状態をMonitorに通知する
Monitor Serverの状態を受け取り、任意のルールに従ってStackStormに通知する
StackStorm Monitorからの通知をイベントとし、所定の窓口へ通知する&対象のServerをRemediateする

 このように、非常にシンプルな構成でARの動作を定義することができます。

 ZabbixやSensuなどの監視ツールは、ログの内容によって所定のスクリプトを実行する機能を備えていますが、StackStormという登場人物を増やすことによって、

  • 監視と処理の責任主体が明確になる
  • 処理がActionとWorkflowによって定義されるので、復旧手順の再利用性が高まる
  • 有志が公開しているWorkflowなどを流用できる

というメリットがあります。

StackStormによるARの実装

 上記のARを実現するためには、

  • Monitorから通知を受けとること
  • 通知に従って対象機器を復旧すること

の2つの機能がStackStorm上に必要です。それぞれ、どのように設定すればいいのかを確認していきます。

 まず、監視システムからの通知を受けとる部分はruleとして定義されます。外部からの通知を受け取るruleには大きくWebhook rule製品別 ruleの2種類があり、それぞれ使い分けることが重要です。

 Webhookは汎用的なruleであり、Zabbixやsensuなどの監視システムに「POSTリクエストを飛ばすカスタムスクリプト」を設定することで利用することができます。EndpointやCriteria(Actionを起動する条件)などを柔軟に設定できるというメリットがありますが、上記のカスタムスクリプトを作り込まなければいけないというデメリットがあります。

 製品別に用意されたruleは、一般的にPackの形で提供されています。監視システムを例にするとSensu用のPackなどが提供されており、初めから機能と品質が担保されたruleを使えることがメリットです。監視システムに対応したPackが存在する場合は、それを使って通知ルールを作成するのがよいでしょう。

 対象の機器を復旧する部分はWorkflowとして定義され、基本的には自分で作り込んでいく部分になります。

 ActionやWorkflowの作成方法については公式ドキュメント公式のサンプルコードを参考にしてください。

 Workflowには大きくActionChainMistralの2種類がありますが、それぞれ特徴があるので使い分けていきましょう。

 ザックリと使い分けの基準を示すと、

  • Actionの成功/失敗のみの分岐でよい→ActionChain
  • ActionのForkやJoin、変数を条件とした分岐を実現したい→Mistral

のようなイメージです。基本的にActionChainの方が安定して高速に動作し、記法も単純なので、最初はActionChainで書くのがオススメです。

 最後に、次節でOpenStack環境にどうやってARを適用していくかについて解説します。

OpenStack×StackStormによるARを含めた運用自動化

 OpenStackでは、VMや仮想NWなどの資源をDBを用いて管理しています。しかし、何らかの原因によって仮想資源の実態とDB上の情報が不一致を起こすことは珍しくありません。情報の不一致が起こったとき、どのようにDBを修正するか or 仮想資源を再配置するかという判断には知識と経験が要求されます。

 また、何らかのエラーが発生した場合のトラブルシューティングにおいて、エラーに対応したDBテーブルや関連ログの収集には、やはり高いレベルの知識と経験が必要であり、運用チームの高負荷に繋がっています。

 上記のような問題を解決するための方法の1つとして、StackStormを用いたARが有効です。

 具体的には、

  • DBと実態の不一致→関連情報を収集し、DBと実態の対応関係を自動修復
  • その他AR手順が登録済である問題→ARによる自動修復
  • ARに登録されていない問題→エラー発生時刻近辺の関係するログを自動収集し、時系列順にまとめて担当者へ通知

などの動作をStackStorm上に定義することにより、定型的な問題については自動修復し、複雑な問題についても担当者の調査&原因特定にかかる稼動を大幅に削減することができるでしょう。

 また、問題の大きさや関係するログの範囲などの指標によって対処にかかる、人的稼動量を自動で見積もる、ということもできるようになるかもしれません。

 上記のような運用効率化システムを実現することを目指し、成果は積極的に発表していこうと考えているので、ご期待いただければと思います。

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
StackStormで変わるシステム運用と活用事例連載記事一覧

もっと読む

この記事の著者

萬治 渉(NTTテクノクロス株式会社)(マンジ ワタル)

NTTテクノクロス株式会社 クラウド&セキュリティ事業部所属。2016年に入社後、OpenStackの検証、運用やCIツールによる環境構築自動化システムの設計、検証に携わる。近年は、StackStormによるフルスタックな運用自動化についての取り組みも行なっている。

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10405 2017/10/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング