More Related Content Similar to 20170725 black belt_monitoring_on_aws (20) More from Amazon Web Services Japan (20) 20170725 black belt_monitoring_on_aws2. Who I am…
酒徳 知明 (Tomoaki Sakatoku)
Partner Solutions Architect
• Ecosystem
• DevSecOps
3. アジェンダ
• Cloud Monitoring の考え方
• Cloud Monitoring を支える
サービス インテグレーション
• Cloud (AWS) ならではの
Monitoringの考慮点
• AWSサービス 単体の説明
お話すること お話しないこと
9. • CloudWatch
• AWS上で稼働するシステム監視サービス
死活監視 / 性能監視 / キャパシティ監視
• CloudWatch Logs
• ログ管理プラットフォーム サービス
EC2上のOS, APPのログ
AWSマネジドサービスのログ
• CloudWatch Events
• AWS上リソースの状態監視サービス
• AWSリソースに対するイベントをトリ
ガーにアクションを実行する機能
Amazon Cloudwacth
CloudWatch
10. Cloudwatch を使ったモニタリング
AutoScaling
EC2 Action
モニタリング
CPUUtilization
DiskReadBytes / DiskReadOps
DiskWriteBytes / DiskWriteOps
NetworkIn / NetworkOut
NetworkPacketsIn / NetworkPacketsOut
StatusCheckFailed
StatusCheckFailed_Instance
StatusCheckFailed_System
EC2 CloudWatch
Custom Metric
Memory Free / Filesystem Free
アクション
Notification
アラーム
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html
11. 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 Balancing
AWS/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
12. 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
13. 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
14. 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/
15. CloudWatch Update - Network Monitoring
• Direct Connect 監視メトリックスが追加
• ConnectionState
• ConnectionBpsEgress/ConnectionBpsIngress
• ConnectionPpsEgress/ConnectionPpsIngress
http://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
17. AWS CloudTrail
• AWSユーザの操作をロギングする
サービス
• ルートアカウント/IAMユーザのオペレー
ションをトラッキング
• ロギングデータはS3に保存される
• CloudTrail ログファイルは暗号化され、
gz形式でS3に保存(SSE)
• KMSを使った暗号化もサポート
• CloudTrail 自体は無料
• Amazon S3/SNSの使用料金が必要
CloudTrail
22. ベースライン閾値の設定プラクティス
展開されるフィルタリング・ルール
• アカウント ルート ログインの監視
• 認証失敗の監視
• 特定インスタンスタイプのEC2が作成
されたかの監視
• セキュリティグループ変更の監視
• 大きめのインスタンス起動の監視
• IAM ポリシーの変更の監視
http://aws.typepad.com/aws_japan/2015/03/cloudtrail-integration-with-cloudwatch-in-four-more-regions.html
CloudTrail CloudWatch Logs
23. ユースケース: CloudTrail Data Events for S3
あるプライベート バケットにアップされたS3オブジェクトは
公開 (Make Public) させない
1. ユーザがオブジェクトをS3にput-object
2. CloudTrail がオブジェクトの追加を検知し、Lambda FunctionをInvoke
3. Lambdaがオブジェクト属性を確認し、必要に応じて修正
S3 CloudWatch
Events
LambdaCloudTrail
24. Code Highlight - CloudTrail Data Events for S3
① JSON の展開
② オブジェクト属性の取得
③ オブジェクト属性の変更
25. ユースケース: CloudTrail + CloudWatch Events
CloudTrail
OFF
CloudWatch
Events
Lambda CloudTrail
ON
Notification Loggingdevday-cloudtrail
user
User
IAM Role/Policy
Userhttp://github.com/awslabs/aws-security-automation
28. AWS Config Rulesによるポリシー適合の評価
AWS Managed Rules
• AWS により定義・提供される
• AWS により運用される
• 必要最低限のベーシック・ルール
Custom Rules
• 自分でAWS Lambdaをベースにルールを作成可能
• 管理自体は作成者 (自分) で実施
29. AWS Config Managed Rules
AS OF 2017/07
approved-amis-by-id
approved-amis-by-tag
desired-instance-tenancy
desired-instance-type
ebs-optimized-instance
ec2-instance-detailed-monitoring-
enabled
ec2-instances-in-vpc
ec2-managedinstance-applications-
blacklisted
ec2-managedinstance-applications-
required
ec2-managedinstance-inventory-
blacklisted
ec2-managedinstance-platform-check
ec2-volume-inuse-check
eip-attached
encrypted-volumes
restricted-common-ports
restricted-ssh
db-instance-backup-enabled
dynamodb-throughput-limit-check
rds-multi-az-support
rds-storage-encrypted
redshift-cluster-configuration-check
redshift-cluster-maintenancesettings-
check
cloudtrail-enabled
cloudformation-stack-notification-
check
cloudwatch-alarm-action-check
cloudwatch-alarm-resource-check
cloudwatch-alarm-settings-check
required-tags
acm-certificate-expiration-check
iam-password-policy
iam-user-group-membership-check
iam-user-no-policies-check
root-account-mfa-enabled
コンピュート データベース マネージメント ツール
セキュリティ&コンプライアンスストレージ
s3-bucket-logging-enabled
s3-bucket-ssl-requests-only
s3-bucket-versioning-enabled
30. 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の有効化
• タグフォーマットの制御
36. Trusted Advisorで確認できる項目 - 概要
カテゴリ ヘルスチェックチェックする内容 例
コスト最適化 コスト最適化の可能性がある項目に対する推奨
事項
使用率の低いEC2インスタンス
利用頻度の低いEBSボリューム
な
ど
セキュリティ お客様のシステムのセキュリティ弱体化につな
がる恐れのある設定
セキュリティグループ(無制限アク
セス)、MFA設定 など
耐障害性 お客様システムのアプリケーションの可用性や
冗長性を高めるためのベストプラクティスから
の推奨事項
RDSのマルチAZ構成、EBSスナッ
プショット、ELBのクロスゾーン設
定 など
パフォーマンスの向上 アプリケーションの拡張性や応答性の改善、過
剰なキャパシティのチェックなどパフォーマン
ス最適化のための推奨事項
サービス制限、高負荷なEC2インス
タンス、CloudFrontのキャッシュ
ヒット率チェック など
37. 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 代替ドメイン名
※赤字のものはすべてのお客様が利用可能。それ以外のチェック項目はビジネスサポート以上のご契約が必要。
43. AWS のステータス - Service Health Dashboard
http://status.aws.amazon.com/
サービスのステータスを以下のアイコンで表現
• 提供機能
• サービス(Region)単位でステータス表示
• RSSを利用して更新をチェックすることも可
能
• 過去の稼働情報も提供
• 注意点
• 必ずしも更新はリアルタイムではない
• 発生した障害の影響範囲によっては必ずしも
ステータスが更新されない
45. 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."
}
46. 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
47. AWS Health Slack Notifier
• AWS Healthが生成するCloudWatch Eventsを利用してLambdaを実行し
• SlackのWebHookに情報をパブリッシュ
• メンテナンスイベントの取りこぼし防止に役立つ
AWS Health CloudWatch
Events
Lambda
Function
https://github.com/aws/aws-health-tools/tree/master/slack-notifier
Slack
54. 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:123456789
--role-arn "arn:aws:iam::123456789012:role/CWLtoKin
55. ベースライン デプロイメント - 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/