[OpsJAWS: やってみようシリーズ] Datadogをはじめてみよう!
Partner SA 酒徳です、こんにちは。今年の "やってみようシリーズ in 2017" は新たに、Alert Logic, Datadog, NewRelicが加わり、よりパワーアップするとお伝えしました(詳細はこちら)!そして今年、第一回目は、Monitoring as a Serviceで注目を集めるDatadogの投稿でスタートします。
最近AWSマネージドサービスの統合監視についてよくご相談を頂きます。マネージドサービスをふんだんに活用したクラウド最適なアーキテクチャの採用をご検討されている方には必見のトピックです!それでは、Datadogに関してDatadogの服部さんにご紹介頂きます。
こんにちは、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のロールを構成するだけで簡単に始めることができ、各種サービスのプリセットのダッシュボードからすぐに監視をスタートできます。
設定する内容
まずは監視データの収集です。通常、監視サーバー、監視サービスというとサーバーホストにエージェントを導入することからスタートすると思います。もちろん、DatadogもDatadog Agentを利用することで、より詳細なサーバーデータを収集したり、ミドルウェアのインテグレーションが利用になりますが、ここでは、簡単に大量の監視データの収集が可能なAWSのインテグレーションを利用します。
Datadogは新規アカウント作成にクレジットカードを必要としません。そして新規アカウント作成から2週間はフル機能のトライアル期間となり、その後はフリープランアカウントに以降します。今回はAWSとのインテグレーションを構成しますので、ご利用されているAWSアカウントもご用意下さい。
設定の順序
それでは、早速設定を進めていきましょう。なお、下記IAMポリシーの中身はDatadog特有のものですが、IAMロールの構成自体は、SaaSのAWS連携の定番の設定手順です。今回DatadogがSaaSのAWS連携で始めてという方も、今後のSaaS活用の良い事始めになると思いますので、張り切ってどうぞ!
- AWSコンソールからDatadog用の新規IAMポリシーの作成
- Datadogのコンソールから新規Datadogアカウントを作成
- DatadogのAWSインテグレーションページに移動
- AWSコンソールからDatadog用の新規IAMロールの作成
- DatadogのAWSインテグレーションからIAMロールを構成. 識別タグ、制限タグの設定
1. Datadog用の新規IAMポリシーの作成
1-1. 最初に新規ポリシーをIAMコンソールにて作成します。
AWS IAM コンソールに移動し、[ポリシーの作成]を選択します。
1-2. "独自のポリシーを作成”を[選択]します。
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
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環境でより分かりやすいポリシー名とし、必要に応じて説明を記入し、[ポリシーの作成]を選択します。
2.Datadogのコンソールから新規Datadogアカウントを作成
2-1. Datadogのホームページにアクセスし、[FREE TRIAL]を選択します。
2-2. 必要事項を入力します。クレジットカード情報は不要です。
Datadogでは、初回登録時のメールアドレスとパスワードでユーザーを認証します。
また、DatadogではSAML認証を使用したシングルサインオンを設定することが可能です。
詳しくはドキュメント"Single Sign On With SAML"を参照して下さい。
分からないときは、コメント欄に@supportとしてご質問を書き込めば、
いつでもサポートチームからの技術支援を受けることができます。もちろん日本語でも大丈夫です。
3. AWSコンソールからDatadog用の新規IAMロールの作成
3-1. 再びIAMコンソールにて、今度はロールの作成に移ります。
AWS IAM コンソールに移動し、[新しいロールの作成]を選択します。
3-2. ロール名を設定
ロール名は、DatadogAWSIntegrationRole あるいはお客様のAWS環境でより分かりやすいものを設定して下さい。
3-3. クロスアカウントアクセスのロールを設定
[サードパーティのAWSアカウントのIAMユーザーに、アカウントへのアクセスを許可します。]を選択します。
次のページを開いたまま、次はDatadogのIntegration設定ページに移動します。
3-4. DatadogのIntegrations設定ページに移動し、AWS External ID を習得
DatadogのIntegrations設定ページに移動します。
AWS Integration を選択し、[Configuration]タブを開きます。
New Account の AWS External ID に表示されている文字列をコピーします。
このページを開いたまま、次はIAMロールの設定ページに移動します。
3-3. AWS IAM コンソールに戻り、ロールの設定を続行
アカウントID:作成するIAMロールが権限委託するDatadogのAWSアカウントID 464622532012 を入力
外部ID:前頁でDatadogのAWSインテグレーション設定画面から取得した"AWS External ID"を入力
MFAが必要:チェック欄 チェックが外れていることを確認し次のステップへ
3-4. ロールにIAM ポリシーをアタッチする
新規, AWS IAM ポリシーの作成にて作成したIAMポリシー名を検索しチェックを入れる
設定の確認 [次のステップ]へと進み、設定内容を確認して問題が無ければ、[ロールの作成]を選択し、作成が完了します。
4.DatadogのAWSインテグレーションからIAMロールを構成
4-1. AWS IAMロールの設定
AWS Account ID:Role Delegation(権限委託)を適用するIAMロールを前頁までで作成していたお客様のAWSアカウントIDを入力
AWS Role name:今回新規作成した IAM ロールの ロール名を入力
Tags:今回設定するAWSアカウントを識別するためのタグを設定(例:service:game01, managedby:suzuki 等、複数のAWSアカウント設定時には、このタグでAWSのアカウントを区別する)
4-2. 制限タグの設定、特定のサービスの除外(作成中)
- 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]をクリックして設定完了です!
5. まとめ
いかがだったでしょうか。初回ということでDatadogの設定を中心にご説明しました。2回目以降は何かできるのかを中心に、より詳細に入りたいと思います。2回目以降もお楽しみに!
****
OpsJAWS メインページはこちら。
クラウド運用にご興味ある方は、こちらからOpsJAWSに登録ください。
コメント