« [OpsJAWS: やってみようシリーズ] Alert Logic, Datadog, NewRelicが新しく"やってみようシリーズ"に加わりました!! | Main | [OpsJAWS: やってみようシリーズ] New Relicのはじめかた »

[OpsJAWS: やってみようシリーズ] Datadogをはじめてみよう!

Partner SA 酒徳です、こんにちは。今年の "やってみようシリーズ in 2017" は新たに、Alert Logic, Datadog, NewRelicが加わり、よりパワーアップするとお伝えしました(詳細はこちら)!そして今年、第一回目は、Monitoring as a Serviceで注目を集めるDatadogの投稿でスタートします。

最近AWSマネージドサービスの統合監視についてよくご相談を頂きます。マネージドサービスをふんだんに活用したクラウド最適なアーキテクチャの採用をご検討されている方には必見のトピックです!それでは、Datadogに関してDatadogの服部さんにご紹介頂きます。

1

こんにちは、Datadog, Inc.の服部と申します。Datadogの日本事業担当として、Datadogの導入の提案、運用監視の最新情報について情報発信などを行っています。Datadogは2010年にニューヨークで創業し、AWSのアドバンスドテクノロジーパートナーとして今年はre:Inventの最上位ダイアモンドスポンサーをさせて頂くなど、積極的にAWSにコミットしてきた実績がございます。

Datadogというサービスについて

Datadogはインフラ監視 as a Serviceを提供しており、特に、クラウドネイティブ、クラウド最適なアーキテクチャや、コンテナ、マイクロサービスといったモダンなITインフラの監視を得意としており、USではAirbnb, EA, Netflix, Salesforce, Spotifyなどのお客様、日本でも、ChatWork, CyberAgent, Gree, Gunosy, Increments, Monex, Smartnews, TresureData, Wantedlyなどなど、AWSの導入事例でよく登場される先進的なユーザーにお客様としてご利用頂いております。また、チャネルパートナーとして、APNプレミアコンサルティングパートナーであるクラウドパック、サーバーワークス、クラスメソッドの3社様のMSP事業や個別案件にご活用頂いています。

Datadogというサービスの特徴

DatadogはSaaS型の運用監視サービスで、オンプレミスやプライベートクラウド、各種クラウドサービスのモニタリングが可能ですが、Datadog自身がAWSのヘビーユーザーであり、特にAWSのインテグレーションは非常に親和性が高いものを提供しております。

EC2に限らずCloudWatchが対応するほぼすべてのマネージドサービスに対応し、さらに課金情報やメンテナンスイベント、サービスヘルスダッシュボード、サービス上限値といったAWSの運用に不可欠な情報を一手に監視することが可能です。最近では、アルゴリズムベースのメトリクス監視に対応し、基本的な回帰分析の利用やメトリクスの挙動を過去データから推定し逸脱を検知したり、集団からの外れ値検知などが可能です。

AWSのインテグレーションはIAMのロールを構成するだけで簡単に始めることができ、各種サービスのプリセットのダッシュボードからすぐに監視をスタートできます。

19

設定する内容

まずは監視データの収集です。通常、監視サーバー、監視サービスというとサーバーホストにエージェントを導入することからスタートすると思います。もちろん、DatadogもDatadog Agentを利用することで、より詳細なサーバーデータを収集したり、ミドルウェアのインテグレーションが利用になりますが、ここでは、簡単に大量の監視データの収集が可能なAWSのインテグレーションを利用します。

Datadogは新規アカウント作成にクレジットカードを必要としません。そして新規アカウント作成から2週間はフル機能のトライアル期間となり、その後はフリープランアカウントに以降します。今回はAWSとのインテグレーションを構成しますので、ご利用されているAWSアカウントもご用意下さい。

設定の順序

それでは、早速設定を進めていきましょう。なお、下記IAMポリシーの中身はDatadog特有のものですが、IAMロールの構成自体は、SaaSのAWS連携の定番の設定手順です。今回DatadogがSaaSのAWS連携で始めてという方も、今後のSaaS活用の良い事始めになると思いますので、張り切ってどうぞ!

  1. AWSコンソールからDatadog用の新規IAMポリシーの作成
  2. Datadogのコンソールから新規Datadogアカウントを作成
  3. DatadogのAWSインテグレーションページに移動
  4. AWSコンソールからDatadog用の新規IAMロールの作成
  5. DatadogのAWSインテグレーションからIAMロールを構成. 識別タグ、制限タグの設定

 

1. Datadog用の新規IAMポリシーの作成

1-1. 最初に新規ポリシーをIAMコンソールにて作成します。

2

AWS IAM コンソールに移動し、[ポリシーの作成]を選択します。

1-2. "独自のポリシーを作成”を[選択]します。

2-1

1-3. ポリシー名やポリシードキュメントを編集します。

すべてのAWSインテグレーションの機能を活用するために、[ポリシードキュメント]欄に下記ポリシー*を記入します。CloudTrailインテグレーションを利用する場合は、次の手順でCloudTrail用のS3のバケットへのアクセス許可も追加して下さい。

{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Action": [

        "autoscaling:Describe*",

        "cloudtrail:DescribeTrails",

        "cloudtrail:GetTrailStatus",

        "cloudwatch:Describe*",

        "cloudwatch:Get*",

        "cloudwatch:List*",

        "dynamodb:list*",

        "dynamodb:describe*",

        "ec2:Describe*",

        "ec2:Get*",

        "ecs:Describe*",

        "ecs:List*",

        "elasticache:Describe*",

        "elasticache:List*",

        "elasticloadbalancing:Describe*",

        "elasticmapreduce:List*",

        "elasticmapreduce:Describe*",

        "kinesis:List*",

        "kinesis:Describe*",

        "logs:Get*",

        "logs:Describe*",

        "logs:FilterLogEvents",

        "logs:TestMetricFilter",

        "rds:Describe*",

        "rds:List*",

        "route53:List*",

        "ses:Get*",

        "sns:List*",

        "sns:Publish",

        "support:*"

      ],

      "Effect": "Allow",

      "Resource": "*"

    }

  ]

}

*上記ポリシーはAWSやDatadogの機能拡張により追加,修正されます。最新版はこちらのドキュメント

なお、最小限のポリシーで運用するには、AmazonEC2ReadOnlyAccessとCloudWatchReadOnlyAccess を適用します。ただし、最小限のポリシーでは、特定のサービスのステータスやメトリクス、タグ情報がDatadog上で利用できないことをご理解下さい。各ポリシーがどのような用途で利用されるかについては、下記ドキュメントに記載がございます。
Datadog DOCS:Datadog-AWS Integration:Permissions
http://docs.datadoghq.com/integrations/aws/#permissions

3

1-4. CloudTrail利用時の追加設定

CloudTrailを利用している場合はIAMポリシーにCloudTrail用に作成しているS3バケットへのアクセス許可も追加する必要があります。s3自体へのアクセス許可としてs3:ListBucket, s3:GetBucketLocation, s3:GetObject, を指定したうえで、該当S3バケットをresouceに指定します。前項のポリシー末尾の...Resource”: “*”},の後に挿入するかたちで下記ポリシーを追記します。S3のバケット名(your-s3-bucket-name)はご自身の環境のものを入力して下さい。

                ...(略)...

                "support:*"

            ],

            "Effect": "Allow",

            "Resource": "*"

        },

        #以下のポリシーを追加

        {

            "Action": [

                "s3:ListBucket",

                "s3:GetBucketLocation",

                "s3:GetObject"

            ],

            "Effect": "Allow",

            "Resource": [

                "arn:aws:s3:::your-s3-bucket-name",

                "arn:aws:s3:::your-s3-bucket-name/*"

            ]

        }

    ]

}

1-5. 内容を確認し、[ポリシーの作成]を選択

ポリシー名は、DatadogAWSIntegrationPolicy あるいはお客様のAWS環境でより分かりやすいポリシー名とし、必要に応じて説明を記入し、[ポリシーの作成]を選択します。

  4

2.Datadogのコンソールから新規Datadogアカウントを作成

2-1. Datadogのホームページにアクセスし、[FREE TRIAL]を選択します。

5

2-2. 必要事項を入力します。クレジットカード情報は不要です。

Datadogでは、初回登録時のメールアドレスとパスワードでユーザーを認証します。

6

7

また、DatadogではSAML認証を使用したシングルサインオンを設定することが可能です。
詳しくはドキュメント"Single Sign On With SAML"を参照して下さい。

8

分からないときは、コメント欄に@supportとしてご質問を書き込めば、
いつでもサポートチームからの技術支援を受けることができます。もちろん日本語でも大丈夫です。

3. AWSコンソールからDatadog用の新規IAMロールの作成

3-1. 再びIAMコンソールにて、今度はロールの作成に移ります。

AWS IAM コンソールに移動し、[新しいロールの作成]を選択します。

9

3-2. ロール名を設定

ロール名は、DatadogAWSIntegrationRole あるいはお客様のAWS環境でより分かりやすいものを設定して下さい。

10

3-3. クロスアカウントアクセスのロールを設定

[サードパーティのAWSアカウントのIAMユーザーに、アカウントへのアクセスを許可します。]を選択します。

11
次のページを開いたまま、次はDatadogのIntegration設定ページに移動します。

3-4. DatadogのIntegrations設定ページに移動し、AWS External ID を習得

DatadogのIntegrations設定ページに移動します。

12

AWS Integration を選択し、[Configuration]タブを開きます。

13

New Account の AWS External ID に表示されている文字列をコピーします。

14

このページを開いたまま、次はIAMロールの設定ページに移動します。

3-3. AWS IAM コンソールに戻り、ロールの設定を続行

15

アカウントID:作成するIAMロールが権限委託するDatadogのAWSアカウントID 464622532012 を入力
外部ID:前頁でDatadogのAWSインテグレーション設定画面から取得した"AWS External ID"を入力
MFAが必要:チェック欄 チェックが外れていることを確認し次のステップへ

3-4. ロールにIAM ポリシーをアタッチする

16

新規, AWS IAM ポリシーの作成にて作成したIAMポリシー名を検索しチェックを入れる
設定の確認 [次のステップ]へと進み、設定内容を確認して問題が無ければ、[ロールの作成]を選択し、作成が完了します。

4.DatadogのAWSインテグレーションからIAMロールを構成

4-1. AWS IAMロールの設定

17

AWS Account ID:Role Delegation(権限委託)を適用するIAMロールを前頁までで作成していたお客様のAWSアカウントIDを入力
AWS Role name:今回新規作成した IAM ロールの ロール名を入力

Tags:今回設定するAWSアカウントを識別するためのタグを設定(例:service:game01, managedby:suzuki 等、複数のAWSアカウント設定時には、このタグでAWSのアカウントを区別する)

4-2. 制限タグの設定、特定のサービスの除外(作成中)

  1. Optionally limit metrics collectionメトリクス取得対象(=課金対象)から除外したいテスト用のnanoインスタンスなどのEC2ホストを除外するタグ但し, datadog agentインストール済みのEC2ホストは除外タグの対象外 変更時[Update Configuration]で有効化

前提条件: AWSインテグレーションが正しく構成されると、自動的に全てのEC2インスタンスがモニタリング対象、すなわち課金対象となります。
ここでタグを指定しておくことで、モニタリング対象/除外対象を制御できますが、
Datadogエージェント導入済みEC2インスタンスは、ここで指定するタグに関わらずモニタリング対象(=課金対象)とみなされます。

Point.1: 本番環境に利用しない特定のインスタンスタイプを予め除外する
->例: !instance-type:t2.nano, !instance-type:m3.* =(t2.nano及び全てのm3タイプを除外)
AWS環境固有のimageやinstace-type, AZなどの自動付加されるタグを利用して漏れ防止

Point.2 : 本番,ステージング,デモなど環境ごとにタグを指定しておく
->例: env:prod, env:staging, !env:demo =(本番とステージングは対象、デモ用環境は除外)
ユーザー独自のタグも併せて指定。他にもサービス名や担当チーム名などが利用される。

Point.3 :タグの設定や修正後は忘れずに[Update Configuration]をクリック

サービスの除外設定。

4-3. 設定完了

画面左下[Update Configuration]をクリックして設定完了です!

18

5. まとめ

いかがだったでしょうか。初回ということでDatadogの設定を中心にご説明しました。2回目以降は何かできるのかを中心に、より詳細に入りたいと思います。2回目以降もお楽しみに!

****

OpsJAWS メインページはこちら

クラウド運用にご興味ある方は、こちらからOpsJAWSに登録ください。

Comments

Twitter, Facebook

このブログの最新情報はTwitterFacebookでもお知らせしています。お気軽にフォローください。

September 2017

Sun Mon Tue Wed Thu Fri Sat
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30