More Related Content
Similar to Datadog monitoring with HashiCorp (20)
Datadog monitoring with HashiCorp
- 1. s
Copyright © 2018 HashiCorp
HashiCorp
Solution engineer 伊藤仁智
!1
DataDogにTerraformを
あげましょう
- 2. Copyright © 2018 HashiCorp
About me
!2
名前:伊藤仁智(まさとも)
2018年年9⽉月1⽇日に発⾜足したHashiCorp Japanの⼀一⼈人⽬目の社員です。
以前は、
• ゲームプラットフォーム開発
• Continuous Delivery Pipelineツール販売
• ソフトウェアテストツール販売
• 組込系リアルタイムOS販売
• ガチの組込系エンジニア
などをしてました
- 8. Copyright © 2018 HashiCorp !8
ミッション
キー製品
設⽴立 2012 by Mitchell Hashimoto and Armon Dadgar
We enable organizations to Provision, Secure, Connect, and Run any
infrastructure for any application
1.アプリケーションを実⾏行行するインフラのProvision
2.アプリケーションをSecureに
3.アプリケーションデプロイをRun
4.アプリケーションをConnectする
CEO Dave MacJannet
- 9. Copyright © 2018 HashiCorp
TEAMS
& ORG
Enterprise Feature
• Collaboration
• Operations
• Governance & policy
!9
DEVELOPMENT
SECURITY
OPERATIONS
Run applications
Secure infrastructure & applications
Provision infrastructure
HashiCorpの4製品
THE PRACTITIONER
- 11. Copyright © 2018 HashiCorp !11
Private
cloud
EARLY CLOUD MULTI-CLOUD + SaaS
Azure GCP …
+
AWS
TRADITIONAL
DATACENTER
ハイブリッドなインフラへのシフト
専⽤用マシン → オンデマンド
- 12. Copyright © 2018 HashiCorp
INFRASTRUCTURE AS CODE
!12
EXTENSIBLE PROVIDER MODEL
Core
Alibaba
GCP
AWS
Azure
TERRAFORM CONFIGURATION
DEVELOPERS
OPERATOR
様々なインフラへのプロビジョニング - Provision
…
Nomad
Consul
Vault
F5
Akamai
Heroku
GitHub
Kubernetes
Fastly
Datadog
DNSimple
- 15. Copyright © 2018 HashiCorp
境界のないネットワーク上のアプリケーションセキュリティ
!15
AWS
Private
cloud
Azure GCP Alibaba
Security
「強固な城壁」を作るアプローチはもはや通⽤用しない・・・
Service
App
Service Service Service
App App App
Auth Auth Auth Auth
IPベース → IDENTITYベース
- 16. Copyright © 2018 HashiCorp !16
信頼できるアイデンティティに対して、安全にシークレットを提供する
認証
アイデンティティによるアクセス
シークレットエンジン
ポリシーに基づいたシークレット管理理
クライアント
- 17. Copyright © 2018 HashiCorp !17
信頼できるIDPとの連携
信頼できるIDPで認証
Authentication
認証
アイデンティティによるアクセス
シークレットエンジン
ポリシーに基づいたシークレット管理理
クライアント
- 18. Copyright © 2018 HashiCorp !18
Tokenの取得
信頼できるIDPで認証
Authentication
認証
アイデンティティによるアクセス
シークレットエンジン
ポリシーに基づいたシークレット管理理
クライアント
Token ポリシー
• シークレットエンジンへのアクセス
• APIエンドポイントへのアクセス
アプリやシステムへのアクセスを認可
Authorization
- 19. Copyright © 2018 HashiCorp !19
シークレットのリクエスト
信頼できるIDPで認証
Authentication
認証
アイデンティティによるアクセス
シークレットエンジン
ポリシーに基づいたシークレット管理理
クライアント
Token
アプリやシステムへのアクセスを認可
Authorization
ポリシー
• シークレットエンジンへのアクセス
• APIエンドポイントへのアクセス
- 20. Copyright © 2018 HashiCorp !20
シークレットの取得
信頼できる認証基盤
Authentication
認証
アイデンティティによるアクセス
シークレットエンジン
ポリシーに基づいたシークレット管理理
クライアント
Token
アプリやシステムへのアクセスを認可
Authorization
サービスの提供
▪ Credentialの付与
▪ 静的シークレット
▪ 動的シークレット
▪ 証明書
▪ 暗号化サービス
シークレット
ポリシー
• シークレットエンジンへのアクセス
• APIエンドポイントへのアクセス
- 22. Copyright © 2018 HashiCorp
AWS
Private
cloud
Azure GCP Alibaba
DB JAR
Lambda C# node.js
container
モノリシック → マイクロサービス
Web
DB
DB
DB
Big query
Payment
Web
Service 1
Service 2
ホストベース → サービスベース
Payment Web
DB
Service 1 Service 2
Big query
- 23. Copyright © 2018 HashiCorp
AWS
Private
cloud
Azure GCP Alibaba
DB JAR
Lambda C# node.js
container
全てのアプケーションをコネクトする - Connect
Service
Discovery
Web
DB
DB
DB Big queryPayment
Web
▪ サービスの登録・カタログ化
▪ DNSとHTTPインターフェース
▪ ヘルスチェック
Service 1
Service 2
redis.service.consulpayment.service.consul web.service.consul bq.service.consul
- 24. Copyright © 2018 HashiCorp
AWS
Private
cloud
Azure GCP Alibaba
DB JAR
Lambda C# node.js
container
全てのアプケーションをコネクトする - Connect
Service
Segmentation
Web
DB
DB
DB Big queryPayment
Web
Service 1
Service 2
X
▪ サービス間のAuthorization
▪ サイドカープロキシ
▪ mTLSコネクション
$ consul intention create -deny web '*'
Created: web => * (deny)
$ consul intention create -allow web app
Created: web => app (allow)
$ consul intention create -allow web db
Created: web => db (allow)
- 25. Copyright © 2018 HashiCorp
AWS
Private
cloud
Azure GCP Alibaba
DB JAR
Lambda C# node.js
container
全てのアプケーションをコネクトする - Connect
Web
DB
DB
DB Big queryPayment
Web
• K/Vストアで設定を保管
• リアルタイムでの設定変更更
– 設定ファイル
– 環境変数
• サービスのリロードやリスタートを実⾏行行
Service 1
Service 2
Service
Configuration
K/V
Config
Config
Config
Config
- 27. Copyright © 2018 HashiCorp !27
Application
Platform
AWS
Private
cloud
Azure GCP Alibaba
DB JAR
Lambda C# node.js
container
様々なアプリケーション - Run
密結合 → 疎結合
- 28. Copyright © 2017 HashiCorp !28
ユーザー Nomad
Servers
JobをSubmit
Nomad
Clients
AppのDeploy
Bin Packing
様々なアプリケーション - Run
タスクの実⾏行行
- 30. Copyright © 2018 HashiCorp
TEAMS
& ORG
Enterprise Feature
• Collaboration
• Operations
• Governance & policy
!30
DEVELOPMENT
SECURITY
OPERATIONS
Run applications
Secure infrastructure & applications
Provision infrastructure
HashiCorpの4製品
THE PRACTITIONER
- 32. Copyright © 2018 HashiCorp
VaultやConsulを監視
!32
DogStatsD
DogStatsD
app.datadoghq.com
HTTPS
PUSH
Reference to Vault/Consul metrics
https://www.vaultproject.io/docs/internals/telemetry.html
https://www.consul.io/docs/agent/telemetry.html
プロビジョン
- 33. Copyright © 2018 HashiCorp
まずはDatadogのAgentをインストール
!33
DD_API_KEY=${dd_api_key} bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/
install_script.sh)"
- 34. Copyright © 2018 HashiCorp
VaultとConsulのConfigを変更更
!34
backend "consul" {
address = "127.0.0.1:8500"
path = "vault/"
}
listener "tcp" {
address = "127.0.0.1:8200"
tls_disable = 1
}
telemetry {
dogstatsd_addr = "127.0.0.1:8125"
disable_hostname = true
}
{
"datacenter": "dc1",
"bootstrap_expect": 1,
"server": true,
"advertise_addr": "$${local_ipv4}",
"data_dir": "/opt/consul/data",
"client_addr": "0.0.0.0",
"log_level": "INFO",
"ui": true,
"telemetry": {
"dogstatsd_addr": "localhost:8125",
"disable_hostname": true
}
}
vault.hcl
consul.json
- 36. Copyright © 2018 HashiCorp
Datadog providerでMonitorを作成
!36
provider "datadog" {
api_key = “${var.datadog_api_key}"
app_key = "${var.datadog_app_key}"
}
# Cpu monitor
resource "datadog_monitor" "cpumonitor" {
name = "cpu monitor ${aws_instance.vault.id}”
type = "metric alert"
message = "CPU usage alert"
query = "avg(last_1m):avg:system.cpu.system{host:${aws_instance.vault.id}} by {host} > 60"
thresholds {
ok = 20
warning = 50
critical = 60
}
}
- 37. Copyright © 2018 HashiCorp
Datadog providerでtimeboardを作成
!37
resource "datadog_timeboard" "vault" {
title = "Dashboard on ${aws_instance.vault.tags.Name}"
description = "Created using datadog provider in Terraform"
read_only = true
# Memory usage
graph {
title = "System mem usage"
viz = "timeseries"
request = {
q = "avg:system.mem.free{host:${aws_instance.vault.id}}"
}
}
# Vault request handled
graph {
title = "Number of request handled"
viz = “timeseries"
request = {
q = "avg:vault.core.handle_request.count{host:${aws_instance.vault.id}}.as_count()"
type = "bars"
}
}
- 41. Copyright © 2018 HashiCorp
Demo overview
!41
AWS EC2
DogStatsD
app.datadoghq.com
Provision with AWS provider
• VM Instanceの起動
• Vaultのインストール
• Consulのインストール
• DogStagsDのインストール
Provision with Datadog provider
• Dashboardの作成
• Monitorの設定
• 監視対象の設定
Metricsの送信
ベンチマークテスト