monitoring on aws€¦ · cloudwatch update - data retention -...
TRANSCRIPT
Monitoring on AWS
Tomoaki SakatokuSolutions Architect
Amazon Web Service Japan
Who I am…
酒徳 知明 (Tomoaki Sakatoku)
Partner Solutions Architect
• Ecosystem
• DevSecOps
アジェンダ
• Cloud Monitoring の考え方
• Cloud Monitoring を支えるサービス インテグレーション
• Cloud (AWS) ならではの
Monitoringの考慮点
• AWSサービス 単体の説明
お話すること お話しないこと
AWSにおけるクラウド運用プロセス
クラウド運用
• 標準化• テンプレート
• 監視• ログ管理
• 構成管理• 変更管理
• API管理
• コスト最適化
• Well Architected
運用監視系AWSサービス 単体の説明
https://d0.awsstatic.com/events/jp/2017/summit/slide/D4T3-5.pdf
https://d0.awsstatic.com/events/jp/2017/summit/slide/D4T3-6.pdf
https://d0.awsstatic.com/events/jp/2017/summit/slide/D3T1-1.pdf
こんなことが起きないように、”モニタリング”
異常値・閾値のベースライン定義
• Metrics-Based• 静的/スタティック (閾値ベー
スライン)• 動的/ダイナミック (異常検知)
• Event-Based• イベント ドリブン
• Rule-Based• セキュリティ• コンプライアンス
Metrics-Based
Event-Based Rule-Based
Monitoring on AWS- Metrics-Based -
- Event-Based -
• CloudWatch• AWS上で稼働するシステム監視サービス
死活監視 / 性能監視 / キャパシティ監視
• CloudWatch Logs• ログ管理プラットフォーム サービス
EC2上のOS, APPのログ AWSマネジドサービスのログ
• CloudWatch Events• AWS上リソースの状態監視サービス• AWSリソースに対するイベントをトリ
ガーにアクションを実行する機能
Amazon Cloudwacth
CloudWatch
Cloudwatch を使ったモニタリング
AutoScaling
EC2 Action
モニタリング
CPUUtilization
DiskReadBytes / DiskReadOps
DiskWriteBytes / DiskWriteOps
NetworkIn / NetworkOutNetworkPacketsIn / NetworkPacketsOut
StatusCheckFailedStatusCheckFailed_Instance
StatusCheckFailed_System
EC2 CloudWatch
Custom MetricMemory Free / Filesystem Free
アクション
Notificationアラーム
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html
CloudwatchがサポートするAWSサービス
http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/DeveloperGuide/supported_services.html
AWS サービス 名前空間
Amazon API Gateway AWS/ApiGateway
Auto Scaling AWS/AutoScaling
AWS Billing AWS/Billing
Amazon CloudFront AWS/CloudFront
Amazon CloudSearch AWS/CloudSearch
Amazon CloudWatch Events AWS/Events
Amazon CloudWatch Logs AWS/Logs
AWS Database Migration Service AWS/DMS
Amazon DynamoDB AWS/DynamoDB
Amazon EC2 AWS/EC2
Amazon EC2 Container Service AWS/ECS
AWS Elastic Beanstalk AWS/ElasticBeanstalk
Amazon Elastic Block Store AWS/EBS
Amazon Elastic File System AWS/EFS
Elastic Load Balancing AWS/ELB (Classic Load Balancers)
Elastic Load BalancingAWS/ApplicationELB (Application Load Balancers)
Amazon Elastic Transcoder AWS/ElasticTranscoder
Amazon ElastiCache AWS/ElastiCache
Amazon Elasticsearch Service AWS/ES
AWS サービス 名前空間
Amazon EMR AWS/ElasticMapReduce
AWS IoT AWS/IoT
AWS Key Management Service AWS/KMS
Amazon Kinesis Analytics AWS/KinesisAnalytics
Amazon Kinesis Firehose AWS/Firehose
Amazon Kinesis Streams AWS/Kinesis
AWS Lambda AWS/Lambda
Amazon Machine Learning AWS/ML
AWS OpsWorks AWS/OpsWorks
Amazon Polly AWS/Polly
Amazon Redshift AWS/Redshift
Amazon Relational Database Service AWS/RDS
Amazon Route 53 AWS/Route53
AWS Shield Advanced AWS/DDoSProtection
Amazon Simple Email Service AWS/SES
Amazon Simple Notification Service AWS/SNS
Amazon Simple Queue Service AWS/SQS
Amazon Simple Storage Service AWS/S3
Amazon Simple Workflow Service AWS/SWF
AWS Storage Gateway AWS/StorageGateway
AWS WAF AWS/WAF
Amazon WorkSpaces AWS/WorkSpaces
AS OF 2017/06
CloudWatch Logs を使ったモニタリング
Amazon Linux Ubuntu
Windows Red Hat Linux
CloudWatch Logs
通知:
CloudWatch Alarm
Log Agent Log Agent
Log Agent Log Agent
VPC Flow Log
可視化:
Amazon Elasticsearh Service(Kibana)
エクスポート:
Amazon Kinesis Firehose
CloudTrail Lambda RDS
Amazon CloudWatch
Metrics Name(CPUUtiliization)
Metrics Name(HealthyHostCount)
Name Space(AWS/EC2)
Name Space(AWS/RDS)
Name Space(AWS/ELB)
Metrics Name(CPUUtiliization)
Dimension(InstanaceId)
Dimension(InstanaceId)
Dimension(InstanaceId)
Sum
Max
Min
Average
Statistic
Metrics Namespace Dimension
Simple Count
Actions
CloudWatch Logs
CloudWatch Events
Rules
Filtering
Event Rule
CloudWatch
CloudWatch Update - Data Retention -
• CloudWatchのメトリックス保存期間が大幅拡張 今まで14日だったCloudWatchメトリックスの保存期間
が、最大15ヶ月まで拡張 拡張に関する追加費用はなし(無料) すでに3ヶ月前のメトリックスが利用可能 データ取得間隔により、保持期間が異なるので注意
• 1分間隔ので取得されたデータ: 15日間分利用可能
• 5分間隔ので取得されたデータ: 63日間分利用可能
• 1時間隔ので取得されたデータ: 455日間分利用可能
https://aws.amazon.com/about-aws/whats-new/2016/11/cloudwatch-extends-metrics-retention-and-new-user-interface/
CloudWatch Update - Network Monitoring
• Direct Connect 監視メトリックスが追加
• ConnectionState
• ConnectionBpsEgress/ConnectionBpsIngress
• ConnectionPpsEgress/ConnectionPpsIngresshttp://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/monitoring-cloudwatch.html
• VPN Tunnel 監視メトリックスが追加
• TunnelState: VPNトンネルの状態。0はDOWN, 1はUP
• TunnelDataIn: VPNトンネル経由のIn-Packetデータ量(単位: Byte)
*データ量は暗号化後のサイズ
• TunnelDataOut: VPNトンネル経由のOut-Packetデータ量(単位: Byte)
*データ量は暗号化前のサイズ
http://docs.aws.amazon.com/directconnect/latest/UserGuide/monitoring-cloudwatch.html
http://docs.aws.amazon.com/solutions/latest/vpn-monitor/cloudwatch.html
CloudWatch Dashboard - UI Experience -
AWS CloudTrail
• AWSユーザの操作をロギングするサービス
• ルートアカウント/IAMユーザのオペレーションをトラッキング
• ロギングデータはS3に保存される• CloudTrail ログファイルは暗号化され、
gz形式でS3に保存(SSE)• KMSを使った暗号化もサポート
• CloudTrail 自体は無料• Amazon S3/SNSの使用料金が必要
CloudTrail
CloudTrail API lookup
APIコールはAWSマネジメント コンソールから確認可能
※ AWSマネジメントコンソールから確認できるのは直近の7日間のログのみ
CloudTrail API サンプル (RunInstance)
AMI ID
セキュリティグループ
Instance ID キーペアー
サブネット
ENI ID
VPC ID
CloudWatch Dashboard - Log Integration -
CloudWatch Dashboard - Log Integration -
詳細は、JSONから確認可能
ベースライン閾値の設定プラクティス
展開されるフィルタリング・ルール
• アカウント ルート ログインの監視• 認証失敗の監視• 特定インスタンスタイプのEC2が作成
されたかの監視• セキュリティグループ変更の監視• 大きめのインスタンス起動の監視• IAM ポリシーの変更の監視
http://aws.typepad.com/aws_japan/2015/03/cloudtrail-integration-with-cloudwatch-in-four-more-regions.html
CloudTrail CloudWatch Logs
ユースケース: CloudTrail Data Events for S3
あるプライベート バケットにアップされたS3オブジェクトは公開 (Make Public) させない
1. ユーザがオブジェクトをS3にput-object
2. CloudTrail がオブジェクトの追加を検知し、Lambda FunctionをInvoke
3. Lambdaがオブジェクト属性を確認し、必要に応じて修正
S3 CloudWatchEvents
LambdaCloudTrail
Code Highlight - CloudTrail Data Events for S3
① JSON の展開
② オブジェクト属性の取得
③ オブジェクト属性の変更
ユースケース: CloudTrail + CloudWatch Events
CloudTrailOFF
CloudWatch Events
Lambda CloudTrailON
Notification Loggingdevday-cloudtrailuser
User
IAM Role/Policy
Userhttp://github.com/awslabs/aws-security-automation
Monitoring on AWS- Rule-Based -
• AWSリソースのレポジトリ情報から、リソースの変更履歴、構成変更を管理• 構成情報は定期的にスナップショットとして
S3に保存• 必要に応じSNSを使った通知も可能
• 構成情報を元に、現在のシステムがあるべき状態になっているかを評価• 評価基準にはAWSが適用するルール、もし
くは独自のルールを適用
AWS Config / Config Rules
AWS ConfigAWS Config Rules
AWS Config Rulesによるポリシー適合の評価
AWS Managed Rules• AWS により定義・提供される
• AWS により運用される• 必要最低限のベーシック・ルール
Custom Rules• 自分でAWS Lambdaをベースにルールを作成可能• 管理自体は作成者 (自分) で実施
AWS Config Managed Rules
AS OF 2017/07
approved-amis-by-idapproved-amis-by-tagdesired-instance-tenancydesired-instance-typeebs-optimized-instanceec2-instance-detailed-monitoring-enabledec2-instances-in-vpcec2-managedinstance-applications-blacklistedec2-managedinstance-applications-requiredec2-managedinstance-inventory-blacklistedec2-managedinstance-platform-checkec2-volume-inuse-checkeip-attachedencrypted-volumesrestricted-common-portsrestricted-ssh
db-instance-backup-enableddynamodb-throughput-limit-checkrds-multi-az-supportrds-storage-encryptedredshift-cluster-configuration-checkredshift-cluster-maintenancesettings-check
cloudtrail-enabledcloudformation-stack-notification-checkcloudwatch-alarm-action-checkcloudwatch-alarm-resource-checkcloudwatch-alarm-settings-checkrequired-tags
acm-certificate-expiration-checkiam-password-policyiam-user-group-membership-checkiam-user-no-policies-checkroot-account-mfa-enabled
コンピュート データベース マネージメント ツール
セキュリティ&コンプライアンスストレージs3-bucket-logging-enableds3-bucket-ssl-requests-onlys3-bucket-versioning-enabled
AWS Config Customer Rules
https://github.com/awslabs/aws-config-rules/blob/master/RULES.md
• ルールをカスタマイズし、環境にあったベースラインを作成
• AWS Lambda ベース
• AWS Config Rules Repository• GitHub(awslabs/aws-config-rules)
• IAMポリシー関連
• IAM鍵のローテーション
• MFAの有効化
• ルートアカウントの無効化
• VPC Flow Logの有効化
• タグフォーマットの制御
AWS Config – Management Console
Trusted Advisorの活用
ご利用実績を元に、自動的にコスト最適化提案をするツール
• 使用率の低いEC2, 利用頻度の低いEBS, 関連付けれれていないEIPなどを指摘
• ご利用にはAWSサポート(ビジネス)が必要
Trusted Advisorで確認できる項目 - 概要
カテゴリ ヘルスチェックチェックする内容 例
コスト最適化 コスト最適化の可能性がある項目に対する推奨事項
使用率の低いEC2インスタンス利用頻度の低いEBSボリューム
など
セキュリティ お客様のシステムのセキュリティ弱体化につながる恐れのある設定
セキュリティグループ(無制限アクセス)、MFA設定 など
耐障害性 お客様システムのアプリケーションの可用性や冗長性を高めるためのベストプラクティスからの推奨事項
RDSのマルチAZ構成、EBSスナップショット、ELBのクロスゾーン設定 など
パフォーマンスの向上 アプリケーションの拡張性や応答性の改善、過剰なキャパシティのチェックなどパフォーマンス最適化のための推奨事項
サービス制限、高負荷なEC2インスタンス、CloudFrontのキャッシュヒット率チェック など
Trusted Advisorで確認できる項目 - 詳細コスト削減 セキュリティ 耐障害性 パフォーマンス
• 使用率の低いAmazon EC2 Instances• アイドル状態の Load Balancer• 利用頻度の低いAmazon EBSボリューム• 関連付けられていない Elastic IP Address• Amazon RDSアイドル状態のDBインスタ
ンス• Amazon Route 53 レイテンシーリソー
スレコードセット• EC2 リザーブドインスタンスの最適化• Amazon EC2 リザーブドインスタンスの
リース有効期限切れ• 使用率の低い Amazon Redshift クラス
ター
• セキュリティグループ- 無制限アクセス※• IAM アクセスキーローテーション• セキュリティグループ - 開かれたポート• IAM パスワードポリシー• ELB リスナーのセキュリティ• ELB セキュリティグループ• IAM の使用※• Amazon S3バケット許可• ルートアカウントのMFA※• Amazon RDS セキュリティグループのア
クセスリスク• Amazon Route 53 MX リソースレコード
セットと Sender Policy Framework• AWS CloudTrail ロギング• IAM 証明書ストアの CloudFront 独自
SSL 証明書• オリジンサーバーの CloudFront SSL 証
明書• 公開されたアクセスキー
• Amazon EBS スナップショット• Amazon EC2 アベイラビリティゾーンの
バランス• Amazon RDS バックアップ• Load Balancerの最適化• VPNトンネルの冗長化• Amazon RDS Multi-AZ• Auto Scaling Group ヘルスチェック• Amazon S3 バケット ロギング• Amazon Route 53 ネームサーバ権限委
譲• Amazon Route 53 高 TTL リソースレ
コードセット• ELB クロスゾーン負荷分散• ELB Connection Draining• Amazon S3 バケットバージョニング• AWS Direct Connect 仮想インターフェ
イスの冗長性• Auto Scaling グループ リソース• Amazon Route 53 フェイルオーバーリ
ソースレコードセット• Amazon Route 53 削除されたヘルス
チェック• AWS Direct Connect 接続の冗長性• AWS Direct Connect ロケーションの冗
長性• Amazon Aurora DB インスタンスアクセ
シビリティ• EC2 Windows インスタンスの PV ドライ
バーバージョン• EC2 Windows インスタンス用の
EC2Config サービス
• Amazon Route 53 エイリアスリソースレコードセット
• 使用率の高いAmazon EC2インスタンス• サービス制限※• Amazon EBS プロビジョンド IOPS ボ
リューム アタッチ設定• EC2 セキュリティグループルールの増大• EC2 インスタンスセキュリティグループ
ルールの増大• 利用率が高すぎる Amazon EBS マグネ
ティックボリューム• コンテンツ配信の最適化 (CloudFront)• CloudFront ヘッダー転送とキャッシュ
ヒット率• Amazon EC2 から EBS スループット最
適化• CloudFront 代替ドメイン名
※赤字のものはすべてのお客様が利用可能。それ以外のチェック項目はビジネスサポート以上のご契約が必要。
Trusted Advisor - S3 Bucket Permission
活用できるベースライン設定
AWS Trusted Advisor
AWS Config Managed
Rules
AWS Config Custom
Rules with remediation
CloudWatch Events with
Lambda rules
Lambda code with various triggers
カスタマイズAWSから提供
AWSならではの
モニタリング
Billing Monitoring• 課金状況をCloudWatchで監視
• 一定金額を超えるとアラームメール通知が可能
Event Monitoring (メンテナンス イベント)
AWS のステータス - Service Health Dashboard
http://status.aws.amazon.com/
サービスのステータスを以下のアイコンで表現
• 提供機能• サービス(Region)単位でステータス表示• RSSを利用して更新をチェックすることも可
能• 過去の稼働情報も提供
• 注意点• 必ずしも更新はリアルタイムではない• 発生した障害の影響範囲によっては必ずしも
ステータスが更新されない
Personal Health Dashboardでメンテナンスを知る
• アカウント固有のリソースに対するメンテナンス情報や影響を受ける可能性のあるAWSの大規模障害の情報を提供
• CloudWatch Eventsと連携してイベントに対するアクションを自動実行することも可能
AWS Health API でプログラムからアクセスする
• Personal Health Dashboard に表示される通知を機械的に取得するAPI
~$ aws health describe-event-details --event-arns “arn:aws:health:us-east-2::event/AWS_EC2_OPERATIONAL_ISSUE_1493167712”<= イベント(≒通知)毎にARNが割り振られる
{"failedSet": [],"successfulSet": [ {
"event": {"lastUpdatedTime": 1493170667.273,"service": "EC2","eventTypeCode": "AWS_EC2_OPERATIONAL_ISSUE","startTime": 1493167712.0,"eventTypeCategory": "issue","endTime": 1493170596.0,"region": "us-east-2","arn": "arn:aws:health:us-east-2::event/AWS_EC2_OPERATIONAL_ISSUE_1493167712","statusCode": "closed"
},"eventDescription": {
“latestDescription”: “[RESOLVED] EBS Volume (省略)The issue has been resolved and the service is operating normally."}
} ]
AWS Health API の活用 - AWS Health Tools リポジトリ
• AWS Health (Personal Health Dashboard)を活用して通知対応などを自動化するためのコミュニティベースのツールレポジトリ
• 利用可能なサンプル (2017/5)• SMS Notifier
• SNS Topic Publisher
• Slack Notifier
• Instance Store Degraded Drive
• Disable AWS CodePipeline Stage Transition
https://github.com/aws/aws-health-tools
AWS Health Slack Notifier
• AWS Healthが生成するCloudWatch Eventsを利用してLambdaを実行し
• SlackのWebHookに情報をパブリッシュ
• メンテナンスイベントの取りこぼし防止に役立つ
AWS Health CloudWatchEvents
LambdaFunction
https://github.com/aws/aws-health-tools/tree/master/slack-notifier
Slack
AWS Limit Monitor
https://aws.amazon.com/jp/answers/account-management/limit-monitor/
Trusted Advisor や各サービスが提供するAPIを使用してLimitの設定値と現在の消費状況を自動的に監視し、必要に応じて通知するソリューションをCloudFormationのテンプレートとして提供
異常値・閾値の設定
• Metrics-Based• 静的/スタティック (閾値ベー
スライン)• 動的/ダイナミック (異常検知)
• Event-Based• イベント ドリブン
• Rule-Based• セキュリティ• コンプライアンス
Metrics-Based
Event-Based Rule-Based
活用できるベースライン設定
AWS Trusted Advisor
AWS Config Managed
Rules
AWS Config Custom
Rules with remediation
CloudWatch Events with
Lambda rules
Lambda code with various triggers
カスタマイズAWSから提供
…
Multi-Account Strategy
運用
構成変更時の影響範囲を小さくし、他の組織を気にすることなく自身固有の環境を利用したい
複数のAWSアカウントを用いる理由は?
AWSアカウントを分割して運用するようになる主な理由:
組織
リソースの操作権限を特定の業務ユニット(LOB)に委譲し、その中でより自由にAWSプラットフォームを活用したい
ガバナンス 課金
課金に関する可視性、責任、及びアカウントごとのコントロールを行いたい例)LOBごとに課金を明確に分けたいなど
セキュリティ及びガバナンス上の理由から開発環境、テスト環境、本番環境でアカウントを分割したい例)PCI準拠のワークロードなど
セキュリティオペレーション用アカウント
• 他のアカウントからの書き込みアクセスのみを許可する、集中管理型のアカウント
• 他のAWSアカウントからのSIEM(Security Information and Event Management)ロギング (例えばCloudTrail、AWS Configなど)
• 他のアカウント全体のログのセキュリティ分析や必要なリスク対応を担う
• ログ暗号化のためのKMSキー管理
• セキュリティ調査、監査業務のためのクロスアカウントアクセス
セキュリティ用IAMロール
CloudTrail& Config
セキュリティ用IAMロール
CloudTrail& Config
セキュリティ用アカウント
CloudTrailは全リージョンで有効化
VPC Flow Logs を集約管理 - Multi-Account -
• 複数のAWS アカウントのVPC Flow Logsをセントラルアカウントに統合
• マルチ アカウントでのログ管理
https://aws.amazon.com/jp/blogs/security/how-to-facilitate-data-analysis-and-fulfill-security-requirements-by-using-centralized-flow-log-data/
aws logs put-subscription-filter ¥--log-group-name ”BlackBelt" ¥--filter-name “AllTraffic" ¥--filter-pattern "" ¥--destination-arn "arn:aws:kinesis:us-east-1:123456789012:stream/--role-arn "arn:aws:iam::123456789012:role/CWLtoKinesisRole
ベースライン デプロイメント - Multi-Account-
https://aws.amazon.com/jp/blogs/devops/aws-service-catalog-sync-code/
https://aws.amazon.com/jp/blogs/devops/aws-building-a-secure-cross-account-continuous-delivery-pipeline/