AWS サポートと各種運用支援ツールを利用した システム運用 管理やコストの最適化 アマゾンウェブサービスジャパン株式会社技術支援本部エンタープライズサポート伊藤裕史 2017 年 6 月 1 日 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
自己紹介 名前 : 伊藤裕史所属 : アマゾンウェブサービスジャパン株式会社技術支援本部エンタープライズサポートシニアテクニカルアカウントマネージャ テクニカルアカウントマネージャ (TAM) としてエンタープライズサポートプランをご契約のお客様を担当し AWS サポートが提供する各種ツールやサービスを通じて日々お客様の AWS ご利用の最適化をサポートしています
AWS サポートのラインナップ 24/365( ビジネスプラン以上 ) の日本語サポート AWS サービスのフルラインナップをサポート 長期のコミットメントは不要 お問い合わせ回数は無制限 TAM 認定エンジニア対応 コンシェルジュ対応
本日のセッションで扱う 3 つのポイント 迅速な対応によるシステムの安定運用 ベストプラクティスを活用したシステム品質向上 コストの可視化と AWS 利用の最適化 Service Health Dashboard Personal Health Dashboard AWS Health API と Git repository AWS サポートの活用 AWS Trusted Advisor AWS Answers AWS サポートナレッジセンター 予算管理機能各種レポートの活用 CostExplorer リザーブドインスタンス一括請求の活用
本日のセッションで扱う 3 つのポイント 迅速な対応によるシステムの安定運用 ベストプラクティスを活用したシステム品質向上 コストの可視化と AWS 利用の最適化 Service Health Dashboard Personal Health Dashboard AWS Health API と Git repository AWS サポートの活用 AWS Trusted Advisor AWS Answers AWS サポートナレッジセンター 予算管理機能各種レポートの活用 CostExplorer リザーブドインスタンス一括請求の活用
システム安定運用のための二つの視点 システムメンテナンスの影響の最小化 障害発生時の迅速な対応
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 リポジトリ レポジトリ URL https://github.com/aws/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
例 )slack Notifier https://github.com/aws/aws-health-tools/tree/master/slack-notifier AWS Health が生成する CloudWatch Events の Event を利用して Lambda を実行し Slack の WebHook に情報をパブリッシュ サンプルの Lambda Function や CloudFormation Template を提供 メンテナンスイベントの取りこぼし防止に役立つ AWS の各サービス AWS Health CloudWatch Events Lambda Function
お客様が障害を検知した時の問題解決フロー のやり取りを如何に効率的にするかが迅速解決のカギ! AWS の問題かもしれない サポートセンター サポートセンターから問い合わせ Dashboard でサービスのステータスをチェック! アプリケーションや OS レイヤーの問題の調査 開発者プラン以上が技術的お問い合わせを利用可能です AWS インフラの障害調査 問題切り分け調査のご支援 ベストプラクティスに基づいた改善策 etc 24/365 の日本語サポート Web/ 電話 / チャット AWS サービスに関するスペシャリストが対応 (Cloud Support Engineer)
AWS のステータス Service Health Dashboard 提供機能 サービス (Region) 単位でステータス表示 RSS を利用して更新をチェックすることも可能 過去の稼働情報も提供 注意点 必ずしも更新はリアルタイムではない 発生した障害の影響範囲によっては必ずしもステータスが更新されない サービスのステータスを以下のアイコンで表現 URL:http://status.aws.amazon.com/
サポートお問い合わせのベストプラクティス 一つのお問い合わせで関連性のない複数の質問をしない 問い合わせ対象リソースの所有者が起票していることを確認する 適切な緊急度を設定いただく お問い合わせの際に可能な限り以下の内容を添付する 事象の発生時間 ( タイムゾーン ): 事象が発生したリソースの詳細 ( リージョン / リソース ID 名前 ): 発生した事象の詳細 : SDK や CLI のエラーであればそのエラー出力可能であれば AWS CLI の場合は --debug オプションの指定ネットワーク疎通の問題であれば通信元と通信先のリソース情報
ご参考 : 調査で必要となる情報 (1/2) サービス 問題の種別 必要な情報 CloudFormation S3が関連した問題 S3のエンドポイントURL 必要に応じスタック名 デプロイ時の問題 スタック名 使用したテンプレート 関連リソースID テンプレート作成時の問題 作成したテンプレート API その他 スタック名 CloudFront ディストリビューション関連 お客さまがアクセスするURL,DistributionのURL 返答されるHTTPステータスコード 該当 URL へのdig/nslookup 名前解決テスト結果 Origin へ直接アクセスした結果 traceroute/traceroute(tcp) API その他 DistributionのURL CloudWatch AutoScalingの問題 Auto Scaling Group 名 Auto scaling Policy 名 AS 設定コマンド Metrics 取得に関する問題 Alarm に関する問題 Metrics 取得対象リソース情報 ( インスタンス ID,RDS/ELB エンドポイントなど ) Metrics 取得時パラメーター Metrics 名 現象が発生した時刻 対象となる Alarm の名前 現象が発生した時刻 SNS 通知先 Direct Connect 接続に関する問題 仮想インターフェースID(dxvif-xxx) 物理ラインID(dxcon-xxx で始まるID) それぞれのリ ソースのカウント名 DynamoDB 性能の問題テーブル名 検証を実施した時刻 CloudWatch の Read/Write Capacity の出力 アクセスの問題テーブル名 エラーの出力詳細 アクセス方法 (SDK の種類 呼び出し方 ) EC2 & ELB 起動 / 停止の問題 インスタンスID OS 側のエラーログ インスタンス /ELB 疎通問題 インスタンスID, traceroute の出力 接続元 接続先のIPアドレス 監視システムのエラーログ EBS に関連した問題 ELB に関連した問題 インスタンスID, 問題があるストレージデバイス名 (EBSのVolume ID OS 内のデバイス名など ) インスタンスID アクセス可能なURL ELBのエンドポイントURL traceroute の出力 curl (-v --trace-time) の出力 ( 数回実施 ) 監視システムのエラーログ 性能に関連した問題 AMI/ に関連した問題 インスタンス ID OS 側のエラーログ 監視システムのエラーログ AMI 名
ご参考 : 調査で必要となる情報 (2/2) サービス 問題の種別 必要な情報 ElastiCache Cacheノード障害関連 ElastiCacheクラスタID ノードID 接続に関連する問題 ElastiCacheクラスタID 接続元インスタンスID APIエラー関連 ElastiCacheクラスタID SDKバージョン Elastic Beanstalk 全般 アプリケーション名 Environment 名 Elastic MapReduce ジョブのエラー関連 ジョブフロー ID Hadoopクラスタ関連 ジョブフロー ID Hive 関連 ジョブフロー ID 問題となっているクエリ その他 APIなりコンソールのエラー内容 Glacier Volt 名 アーカイブ名 ジョブID IAM 全般 アカウントID IAMユーザー / グループ名 ポリシー関連 アカウントID IAMユーザー / グループ名 試したポリシー JSON その他 API 関連 エラーログと実行コマンド ( セキュリティ注意 ) OpsWorks 全般 再現可能なレシピ ( セキュリティ注意 ) エラーの内容 スタックの構成( なるべく詳細 ) 再現手順 RDS アクセス関連 DBインスタンスのエンドポイントFQDN DBエラーコード アクセス元 起動 / 停止関連 DBインスタンスのエンドポイントFQDN フェールオーバー DBインスタンスのエンドポイントFQDN RedShift 全般 RedShiftのFQDN エラーコード アクセス元 Route 53 HostedZoneID どのリソースレコードセットか 異常時のdig/nslookup 期待している結果 S3 BucketID Key 名 リクエストID Bucket ログ APIエラー (HTTPエラーコード) IAM 絡む場合はIAM ポリシー /IAMユーザー名 SES 特定のメール メッセージID APIログ SNS トピック名 通知のエンドポイントアドレス SQS 全般 Queue 名 Storage Gateway EC2 インスタンスID クライアントインスタンスID オンプレ オンプレ側のネットワーク構成情報 Proxy 有無 DHCP 使用有無 ボリューム構成 VPC インスタンス関連 インスタンスID VPNコネクション関連 VPNコネクションID 回線の詳細( 種類 キャリア ) http://docs.aws.amazon.com/amazonvpc/latest/networkadminguide/troubleshooting.html の実行 結果
プログラムからサポートへアクセス AWS Support API AWS Support API はサポートのお問い合わせに関する操作や AWS サポートが提供するツール (AWS Trusted Advisor) に対して API アクセスを提供 AWS CLI や各種 SDK から利用可能 IAM によるアクセス制御もサポート 注 )AWS Support API を使用するためにはビジネスサポートプラン以上が必要です
AWS Support API の活用例 サポート問い合わせの自動化や問題管理ツールとの連携 サポート問い合わせのエクスポート Trusted Advisor との自動連携 ( 後述 ) より詳しいご利用方法はこちら! http://docs.aws.amazon.com/awssupport/latest/user/case_life_cycle.html http://docs.aws.amazon.com/awssupport/latest/user/trustedadvisor.html
AWS サポートをこんなことの確認にもご活用ください ドキュメントを見ながらいろいろ試してみたけど 詳しい仕様がどうなっているのか確認したい このサービスを使って実現したいことがあるのだけど どう使うのがベストプラクティスなのだろう
本日のセッションで扱う 3 つのポイント 迅速な対応によるシステムの安定運用 ベストプラクティスを活用したシステム品質向上 コストの可視化と AWS 利用の最適化 Service Health Dashboard Personal Health Dashboard AWS Health API と Git repository AWS サポートの活用 AWS Trusted Advisor AWS Answers AWS サポートナレッジセンター 予算管理機能各種レポートの活用 CostExplorer リザーブドインスタンス一括請求の活用
AWS のご利用に関するベストプラクティス情報 ユーザーの皆様による事例発表や 一般的なブログ / 書籍 AWS が発行するホワイトペーパーや Well-Architected Framework お問い合わせに対してサポートがご紹介するベストプラクティス AWS Trusted Advisor が提供する自動チェック
お客様のセルフレビューを支援 AWS Trusted Advisor プロフェッショナルでも不安になることはある システムのセキュリティ設定は十分に強化されているだろうか? どこかに無駄なコストがかかっていないだろうか? そもそも 自分のシステムは AWS のベストプラクティスに適合しているだろうか? AWS Trusted Advisor がお客様によるセルフレビューをサポート
AWS Trusted Advisor が提供する機能 お客様が使用している AWS リソースのヘルスチェックダッシュボード ヘルスチェック結果の通知 アクションリンク 通知に対する推奨アクションへのダイレクトパス IAM によるアクセス制御と AWS サポート API の提供 注 ) フル機能を使用するためにはビジネスサポートプラン以上が必要です
AWS Trusted Advisor がチェックする項目 カテゴリヘルスチェックチェックする内容例 コスト最適化 セキュリティ 耐障害性 パフォーマンスの向上 コスト最適化の可能性がある項目に対する推奨事項 お客様のシステムのセキュリティ弱体化につながる恐れのある設定 お客様システムのアプリケーションの可用性や冗長性を高めるためのベストプラクティスからの推奨事項 アプリケーションの拡張性や応答性の改善 過剰なキャパシティのチェックなどパフォーマンス最適化のための推奨事項 使用率の低い EC2 インスタンス利用頻度の低い EBS ボリュームなど セキュリティグループ ( 無制限アクセス ) MFA 設定など RDS のマルチ AZ 構成 EBS スナップショット ELB のクロスゾーン設定など サービス制限 高負荷な EC2 インスタンス CloudFront のキャッシュヒット率チェックなど
AWS Trusted Advisor がチェックする項目 ( 詳細 ) コスト削減セキュリティ耐障害性パフォーマンス 使用率の低い Amazon EC2 Instances アイドル状態の Load Balancer 利用頻度の低い Amazon EBS ボリューム 関連付けられていない Elastic IP Address Amazon RDS アイドル状態の DB インスタンス Amazon Route 53 レイテンシーリソースレコードセット EC2 リザーブドインスタンスの最適化 Amazon EC2 リザーブドインスタンスのリース有効期限切れ 使用率の低い Amazon Redshift クラスター チェック項目は 50 以上 セキュリティグループ - 無制限アクセス 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 代替ドメイン名 赤字のものはすべてのお客様が利用可能です これ以外のチェック項目をご利用いただくにはビジネスサポート以上のご契約が必要です
沢山あるけどこれだけはチェック コスト削減 使用率の低い Amazon EC2 Instances CPU や N/W トラフィックから判断 このリストに出てくるインスタンスは全く使われていない可能性もあるため要注意 バッチ用インスタンスなどの場合 SPOT インスタンスなどを活用するとコスト最適化可能 Amazon RDS アイドル状態の DB インスタンス 検証用途などで大きなインスタンスサイズのままの場合はインスタンスサイズ再考 とりあえずデータだけ残したい場合はスナップショット活用 利用頻度の低い Amazon EBS ボリューム インスタンスにアタッチされていないボリュームはスナップショット化するなどを検討
沢山あるけどこれだけはチェック セキュリティ セキュリティグループ設定 EIP を持つインスタンスに不要なポートをグローバルにオープンしているセキュリティグループを使用していないか Amazon S3 バケット許可 想定外のバケットがパブリックアクセスを許可してないか IAM の使用 / ルートアカウントの MFA ルートアカウントの通常時使用は基本的に避けるべき 最低限ルートアカウントは MFA で保護 AWS CloudTrail ロギング 普段使用しないリージョンも有効化されているか
沢山あるけどこれだけはチェック 耐障害性 Amazon S3 バケットロギング S3 バケット操作のログは問題解析で有用 CloudTrail でもバケット操作をログ可能 各種冗長化 RDS のマルチ AZ ELB クロスゾーン分散 Direct Connect 冗長性チェック VPN トンネルの冗長化 Amazon EBS スナップショット 何か取り忘れているものはないですか? 消えて困るものはこまめにスナップショットでバックアップが推奨
沢山あるけどこれだけはチェック パフォーマンス サービス制限 AWS 各サービスが持っているサービス制限値の現在の制限値と実際の利用状況 制限解除には最低でも 2 営業日 Amazon EBS プロビジョンド IOPS ボリュームアタッチ設定 EBS PIOPS ボリュームの本領が発揮できてない可能性を指摘 コンテンツ配信の最適化 (CloudFront) S3 から直接配信するより CloudFront を介したほうがコスト的にもパフォーマンス的にもよい場合が
活用例 )AWS Limit Monitor(AWS Answers) Trusted Advisor や各サービスが提供する API を使用して Limit の設定値と現在の消費状況を自動的に監視し 必要に応じて通知するソリューションを CloudFormation のテンプレートとして提供 https://aws.amazon.com/jp/answers/account-management/limit-monitor/
システム品質向上のためのその他の AWS リソース AWS ホワイトペーパー AWS の技術的なホワイトペーパー AWS Well-Architected Framework やセキュリティベストプラクティスなど多数収録 https://aws.amazon.com/jp/whitepapers/ AWS Answers アマゾンウェブサービスクラウドにおけるアプリケーションのアーキテクチャ設計 構築 実行に関するよくある質問に対する明確な回答 https://aws.amazon.com/jp/answers/ AWS サポートナリッジセンター AWS をご利用のお客様からのよくあるご質問やご要望をご紹介 https://aws.amazon.com/jp/premiumsupport/knowledge-center/
本日のセッションで扱う 3 つのポイント 迅速な対応によるシステムの安定運用 ベストプラクティスを活用したシステム品質向上 コストの可視化と AWS 利用の最適化 Service Health Dashboard Personal Health Dashboard AWS Health API と Git repository AWS サポートの活用 AWS Trusted Advisor AWS Answers AWS サポートナレッジセンター 予算管理機能各種レポートの活用 CostExplorer リザーブドインスタンス一括請求の活用
コスト管理を支援する様々なツール AWS Biling Console 予算管理各種レポート Trusted Advisor Cost Explorer
請求関連の統合コンソール AWS Billing Console サービス別今月の利用料 各種詳細へのリンク 請求関連アラート 実績と予測
予算超過の通知も可能な予算管理機能 開始日 / 終了日 グルーピング方法 通知先などを指定して予算作成 作成した予算に対して実績値との比較や過去の利用状況からの予測値との比較を表示
AWS の利用状況把握をサポートする各種請求レポート 毎月のレポート - 請求書情報を Excel で管理可能 毎月のコスト配分レポート - タグごとの集計にも対応 AWS 使用状況レポート サービス毎の使用量の確認 請求明細レポートと AWS のコストと使用状況レポート - 詳細なコスト分析を自分でやりたい場合
お手軽にコストの可視化を実現する Cost Explorer 例 )2017 年に入ってからの AWS 利用料金をサービス別に月ごとで表示 例 ) 同じ情報を Daily に表示
Cost Explorer でさくっと分析 どのサービスに一番お金がかかっているのか サービスでグループ化
Cost Explorer でさくっと分析 誰が一番そのサービスを使っているのか? Service: RDS でフィルタリング Linked Account でグループ化
Cost Explorer でさくっと分析 いったい何に使用している? Linked Account のフィルタを追加 Usage Type でグルーピング
Cost Explorer でさくっと分析 ところで リザーブドインスタンスちゃんと使っている? Usage Type をフィルタに追加 Purchase Option でグルーピング
Reserved Instance Utilization Report(EC2) 購入済みのリザーブドインスタンスがきちんと活用されているか? を確認できる
Reserved Instance Coverage Report(EC2) リザーブドインスタンスを購入してコスト最適化する余地がどれほどあるか? を確認できる
AWS Organizations の一括請求機能の活用 複数の AWS アカウントに対するご請求を一つの Master アカウントにまとめて一括請求をする仕組み
AWS Organizations の一括請求機能の活用 ボリュームディスカウントは一括請求内のすべてのアカウントの利用料をもとにして適用される
AWS Organizations の一括請求機能の活用 EC2/RDS のリザーブドインスンタスのディスカウントは一括請求アカウント全体でメリットが享受できるように適用される 一括請求ファミリー アカウント A c4.2slarge の RI 3 を購入済 アカウントB c4.2slargeのri 1を購入済 適用される条件や制約などは詳しくは以下のドキュメントを参照 http://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_getting-started_from-consolidatedbilling.html
AWS Organizations 複数アカウントの一元管理 すべての機能を有効化 複数の AWS アカウントに適用するポリシーを集中管理 AWS のサービスへのアクセス制御 一括請求のみを有効化 AWS アカウントの作成と管理の自動化 複数の AWS アカウントへの一括請求
ご利用料金の最適化のため まずは各種レポートや Cost Explorer を定期的にチェックしてコスト構造を可視化 リザーブドインスタンスのようなディスカウントの仕組みを活用しつつ 有効活用されているかをチェック AWS Organization でばらばらのアカウントをまとめて一括請求とすることで RI やボリュームディスカウントを最適化
本日のセッションのまとめ
本日のセッションで扱う 3 つのポイント 迅速な対応によるシステムの安定運用 ベストプラクティスを活用したシステム品質向上 コストの可視化と AWS 利用の最適化 Service Health Dashboard Personal Health Dashboard AWS Health API と Git repository AWS サポートの活用 AWS Trusted Advisor AWS Answers AWS サポートナレッジセンター 予算管理機能各種レポートの活用 CostExplorer リザーブドインスタンス一括請求の活用
Thank you!
本セッションの Feedback をお願いします 受付でお配りしたアンケートに本セッションの満足度やご感想などをご記入くださいアンケートをご提出いただきました方には もれなく素敵な AWS オリジナルグッズをプレゼントさせていただきます アンケートは受付 パミール 3F の EXPO 展示会場内にて回収させて頂きます
パミール 3F AWS サポートブースにて ビジネスサポート お試しキャンペーン実施中 詳細 お申込みはパミール 3F AWS サポートブースへ