Systems Manager OpsCenter の OpsItem について調べてみた! #opscenter

2019.06.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは 園部です。

前回、リリースされた Systems Manager OpsCenter について概要を紹介いたしました。
[新機能] Systems Manager OpsCenter がリリースされました!

今回は、OpsItem について改めて調べてみました。

おさらい

OpsItem 作成方法

OpsCenter では、取り扱う運用上の課題を OpsItem という単位で管理しますが、そのOpsItemを作成する方法は3つあります。

(1) BasicSetup としてマネジメントコンソールから、AWSが用意したOpsCenter用CloudWatch Events ルールを設定し CloudWatch Events 経由で作成
(2) 利用者がCloudWatch Events ルールを設定し CloudWatch Events 経由で作成
(3) コンソールやCLIからOpsCenterで直接作成

OpsItem 作成時に気になった点

表示情報の違いと指定方法

OpsItem を作成すると関連する情報が付与されます。
e.g. OpsItem details, Operational data

先ほどの作成方法によって、入力される項目や値に違いがあることに気づきます。
デフォルト設定で「EC2インスタンスが停止する」というトリガーで作成した場合に表示される内容は以下の通りです。

項目 作成方法(1) 作成方法(2) 作成方法(3)
Title EC2 instance stopped EC2 Instance State-change Notification 作成時の入力内容
Source EC2 EC2 同上
Priority 同上
Description CloudWatch Events Rule SSMOpsItems-EC2-instance-stopped was triggered.Your EC2 instance has stopped. See below for more details. This is from CloudWatch Events 同上
Deduplication string SSMOpsItems-EC2-instance-stopped - 同上
Notifications - - 同上
Related resources 該当インスタンス 該当インスタンス 同上
Associated automations AWS-RestartEC2Instance    
Operational data event-time, instance-state /cloudwatchevent/detail, /cloudwatchevent/id  
Related OpsItems なし   同上

この違い、値はどこで設定しているのでしょうか?

調べてみた

作成方法 (3)については、入力可能な項目は任意入力となるため、今回は除外しました。CloudWatch Events 経由を調べていきます。

CloudWatch Events での設定

先ほど、作成方法(1)と(2)では、CloudWatch Events ターゲット 入力の設定 が異なります。

  • 作成方法(1)

  • 作成方法(2)

インプットトランスフォーマー

CloudWatch Events にてイベントをターゲットに送信する際に、引き渡す内容を指定することが出来る機能です。

作成方法(1)で指定されている内容は以下の通りです。

  • InputPathsMap
{"resources":"$.resources","state":"$.detail.state","time":"$.time"}
  • InputTemplate
{ "title": "EC2 instance stopped", "description": "CloudWatch Event Rule SSMOpsItems-EC2-instance-stopped was triggered. Your EC2 instance has stopped. See below for more details.", "source": "EC2", "resources": <resources>, "operationalData": { "/aws/dedup": {"type": "SearchableString",                "value": "{\"dedupString\":\"SSMOpsItems-EC2-instance-stopped\"}"}, "/aws/automations": { "value": "[ { \"automationType\": \"AWS:SSM:Automation\", \"automationId\": \"AWS-RestartEC2Instance\" } ]" }, "instance-state": {"value": <state>}, "event-time": {"value": <time>} } }

内容から、ここで指定していることがわかります。

カスタマイズするには?

デフォルトのままでも良い部分もありますが、運用を行う上で項目追加や値変更したいシーンが想定されます。
そんな時に、どうしたら良いかをやってみます。

対象項目

OpsCenterにおいてインプットトランスフォーマーで指定可能な項目が紹介されているページを見つけることは出来なったのですが、AWS Systems Manager API リファレンス CreateOpsItem が参考になると思われます。

やってみる

作成方法(1) をベースに以下の3点を行ってみます。

  • Priority 項目の追加
  • Operational Data へ key:Initial response, value: instance start を追加
  • Associated automations を AWS-StartEC2Instance へ変更

InputTemplate の内容を以下のように変更します。

{ "priority": 1, "title": "EC2 instance stopped", "description": "CloudWatch Event Rule SSMOpsItems-EC2-instance-stopped was triggered. Your EC2 instance has stopped. See below for more details.", "source": "EC2", "resources": <resources>, "operationalData": { "/aws/dedup": {"type": "SearchableString",                "value": "{\"dedupString\":\"SSMOpsItems-EC2-instance-stopped\"}"}, "/aws/automations": { "value": "[ { \"automationType\": \"AWS:SSM:Automation\", \"automationId\": \"AWS-StartEC2Instance\" } ]" }, "instance-state": {"value": <state>}, "event-time": {"value": <time>}, "Initial response": {"value": "instance start"} } }

インスタンスを停止してOpsItemを作成します。

  • Priority 追加

  • Run automation 変更

  • Operational data 追加

作成方法(2)の場合は、ベースとなる部分がないため、最初は類似する内容からコピーするのが良いと思います。

さいごに

OpsCenter は最近リリースされた機能のため、まだまだ気になる部分の理解や有効な使い方などの模索する段階ではないかと思います。とはいえ、色々なことが出来そう(きっとアップデートもされてくるはず...期待)なため、引き続き注目していきたい機能です。