雑なA型によるクラウドとモバイルと運営と

大阪でInnovation EGGを運営している人のBLOGです。時々更新します〜

PagerDuty始めました。インシデントの可視化を行うPagerDutyのレポート機能【cloudpack 大阪 BLOG】

 

cloudpack大阪のメンバーのBLOGが続々と公開されました。

元開発メンバー3名・インフラエンジニアからの異色のチームですが

元開発メンバーはどんどんインフラ力を吸収し(cloudpackでの時間は

通常の三倍以上と言われています)、日々成長していますw

※本音は元開発メンバーでも全員技術&リーダーも出来るので、

短期的な事を考えると、開発で月30人月ぐらい回すほうがありかなと思ったりもしますw

 

で、今回はPgaerDutyのReoprts機能です。

PgaerDutyのReoprts機能ですが、導入初期に関してはうーんあまり使わないなーって感じで考えていました・・・が

f:id:unioce:20150901160420p:plain

こんな画面で、System/Team/User/Alerts/Incidentsタブで観点(画面)を変更し、

Report by:でService/Escalation Policyを選択(cloudpackのMSPな使い方だと

Service)、

Day/Week/Month/期間設定で表示範囲を指定、

ViewでNumber of  Incidents/Mean Time to Acknowledge/Median Time to Acknowledge/90th Percentile Time to Acknowledge/Mean Time to Resolve/Median Time to Resolve/90th Percentile Time to Resolveを指定します。

 

ざっくりとインシデントの総数やMTTA(Acknowledge(着手)するまでの平均時間)やMTTR(Resolve(解決)するまでの平均時間)などを見て、

各監視対象に対しての客観的な判断が可能となります。

 

また詳細に関してはIncidents TABを選択し、

f:id:unioce:20150901162943p:plain

日ごとのリストが出ますのでView Onlineや自動化ならDownload CSVでファイルで

日単位で発生したインシデントを確認する事が可能です。

 

f:id:unioce:20150901165158p:plain

View Onlineで日単位の情報を取得し、DurationやEscalated?の値を見て、各インシデントが、cloudpackのサービスとして問題なかったかの確認を行います。

 

今までは感覚的な部分(問題になったものだけがクローズアップされがちで、

日常のパフォーマンスなどが見えにくかった)が多かったですが、

PagerDutyを導入する事により、インシデント管理を定量的に確認し、

インシデントの多いサービスをピックアップする材料を

PagerDutyで作成する事が可能になったので、この情報を巧く活用していきたいと思います。

 

 

 

 

 

【cloudpack 大阪 BLOG】Datadog始めました(DatadogでAWSのインスタンスを監視してみる)

cloudpackにもDatadogの波が訪れようとしているようで

http://blog.animereview.jp/post/125830929756/datadog-mtg

blog.animereview.jp

BLOGを書いたシンジさんからDatadogすげーんで今からデモ見せるんで
試してみてくださいとデモをしてもらったのですが、

これはスゲーを連発したこのDatadogは、

よくよく考えてみたら2年ぐらい前のAWS re:Inventの時?に確か
ブースでデモを見ていて、

その時もスゲーを連発していたらなんかグッズを貰ってきたのですが、

記憶が封印されてました・・・汗


その時はMSPをするなんて全く認識していなかったので、

インフラの監視がどんだけ大変か?を知る由も
無かったのですがMSPをやるようになり、

自分で監視設定もやったりするようになってから再度シンジさんの
デモを見るとこれは本当にヤバいって感じになりました。
監視対象のインフラの過去から現在の状況をDatadogで収集、

そして現在発生したインシデントをpagerdutyで管理・・・という
バラ色?の未来の為にとりあえず自分のアカウントで試してみます。

ちなみにAWSコンソール上のEC2はこんな感じ(ELBも登録していますが記載しません)

f:id:unioce:20150816202754p:plain

f:id:unioce:20150816202847p:plain

 

とりあえずはDatadogで使うIAMの作成。

AWSコンソールに入ってIAMを作成します。

IAMで必要なJSONは下記に記載していますので

Datadog Docs - Datadog-AWS Cloudwatch Integration

ここのをぺたっと貼付けます。

 

そしてDatadogにログインし(5インスタンス以下なら無料ですので

無料アカウントで試してみる事をお勧めします)ログイン後に

f:id:unioce:20150816202103p:plain

integrationsを選択し、

f:id:unioce:20150816202125p:plain

沢山並んでいるDATADOGで使えるサービスの中から

f:id:unioce:20150816202208p:plain

のAvailableをクリックし有効化を行います。有効化したら

f:id:unioce:20150816202252p:plain

となっているので、フォーカスをあてると

f:id:unioce:20150816202335p:plain

とUIが変わりますので、Configureを選択すると

f:id:unioce:20150816202945p:plain

が出てくるので、Access Key IDとSecret Access Keyを入力し

f:id:unioce:20150816203103p:plain

で監視対象を選択し、Update Configurationをクリックすると反映され、少し時間を置くと、

f:id:unioce:20150816203426p:plain

とDatadog上にインスタンスのリストが表示され、

f:id:unioce:20150816203503p:plain

 な情報が取得できるようになりました。
本当に運用にのせるには、上記の設定だけではすまないですし、
Datadogの本当の良さにはたどり着きませんが、
とりあえずDatadogを試すのは本当に簡単なので、
一度試してみてはいかがでしょうか?

【cloudpack 大阪 BLOG】pagerduty始めました・・・[イレギュラーな事態が発生した時の対応方法その②]

ちょっと期間が空きましたが、その②です。

 

今日もメンバーから問い合わせがきて自分で対応したのですが、

そろそろMSPメンバーにpagerdutyの運用の移管も

しなければいけないなーと思っていたので、問い合わせ内容も

BLOGに書いて、cloudpackのWIKIからリンクするようにしておきますw

 

今回のケースは急なシフトの交代をどうpagerdutyで対応するかを記載します。

ちなみに落とし穴もあるのでそれも書いておきます。

 

メニューからSchedulesを選択し

f:id:unioce:20150729145443p:plain

 

変更したいスケジュールを確認。

f:id:unioce:20150729141334p:plain

今回は7/30のシフトを比企からMSP大阪のエース廣山さんに変更なので

7/30の比企のシフトをクリック。

f:id:unioce:20150729141345p:plain

上書き画面が出ます。Personの変更を行います(Time Zoneや開始と終了は変更しないでください(範囲内だとOKですが範囲を超えると・・・BLOGの最後に書きます汗))。

f:id:unioce:20150729141353p:plain

 

Personを廣山さんに変更しCreate Overrideをクリック

f:id:unioce:20150729141401p:plain

 

無事に廣山さんに変更できました。以上です。スゴく簡単にできます。

f:id:unioce:20150729141406p:plain

 

ちなみに想像と違う挙動をしてしまうケースです(操作の結果的にはあっていると思いますが、勘違いしやすいところなので記載します。)

8/1から8/12日の19時までを廣山さんに変更したい時ですが、下記のようにまとめて

行うと・・・

f:id:unioce:20150729141412p:plain

 

下記のようになります汗。必ず一つ一つ選択してください汗

f:id:unioce:20150729141417p:plain

 

pagerdutyの時間や期間設定はちょっと大雑把な部分があるので、

うまく操作してくださいw。

 

 

 

 

【cloudpack 大阪 BLOG】pagerduty始めました・・・[イレギュラーな事態が発生した時の対応方法その①]

pagerdutyによりアラートに対する見える化(発生・対応中・クローズ・分析)が

出来るようになるわけですが、

pagerdutyに関係なくサービスとしてイレギュラーな事は日々現場で発生します。

 

pagerdutyに関連する事象だと管理対象であるサービスの急なメンテナンスへの対応やアラート対応の担当者の急な予定変更etc

 

今回はそんなイレギュラーな対応をpagerdutyでどうオペレーションするのか記載します。

 

サービスの急なメンテナンス

pagerdutyはアラートをインシデントとして管理する為に、サービスのメンテナンス時などで監視サーバー(nagiosやsensu etc)でアラート通知をOFFできない場合に、

pagerduty側で通知受付を止める事が出来ます。

通知を放置していると担当者によるクローズの操作も必要になりますし、後で分析したい場合のノイズになるので、メンテナンスをちゃんと認識して対応しておく必要があります。

Maintenanceに対する方法は3種類あり、いずれも簡単な操作で対応は可能です。

 

まず対象のサービスを選択して詳細画面を表示します(編集画面への遷移は不要です)

f:id:unioce:20150721161016p:plain

 

画面右側のUIに

•Schedule new maintenance

•Disable this service

•Immdeiate Maintenance

があり、そのどれか何れかを選択する事により、Maintenance状況にサービスを変更できます。

 

Schedule new maintenance

Maintenanceを時間で設定する事が可能です。

※Schedule new maintenanceを複数回操作する事により、Maintenance期間を複数期間設定する事も可能です。

f:id:unioce:20150721163227p:plain

 

Immdeiate Maintenance

5 min•15 min•30 min•60 minから1clickで選んだ時間内でMaintenance状態に出来ます。

 

なおSchedule new maintenance/Disable this serviceで時間指定をしてMaintenanceに

解除する場合は、

f:id:unioce:20150721164358p:plain

Maintenance中に上記UIが右側に表示されますので

editを選択して、Edit Maintenance Windowを開き

f:id:unioce:20150721165346p:plain

End this maintenance window now

を押下する事により、Maintenanceを解除できます。

※上記UIからMaintenance時間の変更も可能です。

 

Disable this service

Maintenance期間設定無しにいきなり止めます。

Enable this serviceですぐに再開できるので、Maintenance期間が未定な場合に使います。

 

このようにpagerdutyは簡単にMaintenance状態に設定する事が可能です。

もう一つのイレギュラー対応は次回のブログで。

 

 

 

 

 

 

 

【cloudpack 大阪 BLOG】pagerduty始めました・・・[いきなりの制約回避編 スケジュールとエスカレーションポリシーのハマりどころ]

 

いきなりですが、先に制約による課題と解決策を記載しておきます。

※この課題の数字で導入を諦めるかたもいるので、まず書かさせて頂きます。

 

前回の記事で、エスカレーションポリシーの階層で設定できるスケジュールは

10個ですってのを記載してます。

通知される担当が最大10人までの場合だと、1スケジュール=1名で設定して、

10スケジュール作成してエスカレーションポリシーにセットする事で対応は可能です・・・が、24時間・365日でかつ数多くのシステムを預かっているcloudpackのような

規模だと、そのスケジュール作成のルールでは簡単にオーバーフローしてしまいます汗。

 

逃げの手としてエスカレーションポリシーの階層で制御する事も可能ですが普通は

①階層目

監視メンバーA・監視メンバーB・監視メンバーC

②階層目

監視メンバーA・監視メンバーB・監視メンバーC+リーダー層

③階層目

監視メンバーA・監視メンバーB・監視メンバーC+リーダー層+責任者

とエスカレーションのランクが上がる毎に通知されるメンバーが増えていきます。

 

またメンバーも1週間に二日間の休みがあるので、スケジュールには二日間の休みを

設定する必要もあり、エスカレーションポリシーの制約からスケジュールを複数のメンバーで使い回す必要がありますが、pagerdutyは何とUIの設定からだと1週間のうち、

二日間は休みと言う当たり前の設定を”簡単”に設定する方法がありません・・・汗。

例えば7月7日のスケジュールAに担当のX1さんを設定すると、スケジュールAには

X1さんを週間か毎日の設定は出来ますが、その日付から未来総てX1さんは休みなしで

設定されてしまいます汗。

①7月7日〜7月10日がX1さん

②7月11日〜7月12日がX2さん

③7月13日〜7月15日がX1さん

という設定をする為には、①を入力した後に7月11日開始で②の設定をして

7月13日開始で③の入力を個別にする必要があります。

ちなみに間違って②を再度入力するともれなく未来日付が②で上書きされて③の日程が

消えてしまいます・・・

 

UI的には、スケジュールで設定されている担当の方をクリックする

f:id:unioce:20150713213447p:plain

とスケジュールを別の担当者に設定するOverride機能

f:id:unioce:20150713213514p:plain

があるのですが、スケジュールがドラスティックに変わったり、そもそも沢山のメンバーをいちいち入力するのって運用として破綻しているので、比企はgoogle spred seetに

スケジュールを記載したものをgoogle apps scriptでpagerdutyのAPIをコールするように

落とし込むスクリプトを作成し対応しました・・・

※上記には記載していませんが、スケジュールの使い回しのパターンとして、

違う時間帯のメンバーを一つのスケジュールに登録する事も出来ますが、

通常のUIでそれをやるのはさらに難易度が高いのでAPI呼び出しにより自動化を進めたほうが、後の運用コストを考えても絶対に楽です。

 

なお、いつもならここでコードもはっつけるところなのですが、cloudpackの運用は

複雑なので、汎用性もありませんし、汎用性のあるコードも書けますが、それは現状本筋ではないので、導入される方は自前でお願いしますw

APIのリファレンスは下記

Schedules API

 

cloudpackでは表でスケジュールを管理しており、それをpagerdutyのスケジュールだけの運用に置き換えようと思いましたが、スケジュールを作成する人にpagerdutyのUIで

作ってと言うと間違いなく発狂するぐらい、スケジュール機能は最低限の事しか

現状は出来ないので、運用を考えた場合に是非API呼び出しでの自動化の実装の工数は考えてください。

 

他にも同業他社で必要な実際の課題に対する運用のノウハウもあったりしますが、

さすがにそこはピンポイントすぎるので開示せずに、汎用的なノウハウとかを

書いて行きたいと思います。