Amazon CloudWatch
概要と関連記事
CloudWatch はAWS上で実行されるアプリケーションの「フルマネージド運用監視サービス」です。
EC2やRDSなどのAWSリソースを監視し、設定に応じてアラーム等のアクションを実行します。
Amazon CloudWatch(リソースとアプリケーションの監視と管理)| AWS
実機学習の際にも料金アラートの設定のみはしていました。
が、ほんとにほんとに始めたばかりに使ったきりだったのでサービスを使用しているという意識もないまま設定を行っていた気がします。
・機能の構成
機能名 | 機能概要 |
---|---|
CloudWatch | システム監視サービス |
CloudWatch Logs | ログ管理サービス |
CloudWatch Events | リソースの状態監視サービス |
基本機能
■サービス監視
CloudWatchではAWSの各サービスの監視をサポートしています。
監視対象のサービスではメトリクス(パフォーマンス項目)の収集を行う。
監視対象は70種以上のサービスをサポートしておりそれぞれがデフォルトの標準メトリクスが設定され自動で収集が行われている。
任意の項目をメトリクスにしたい場合はカスタムマトリクスを設定する。
標準メトリクスとカスタムメトリクスは覚えないとダメなんだろうか??
■EC2インスタンスの監視
EC2インスタンスでは、標準メトリクスで監視可能なサービスとCloudWatchエージェントをEC2にインストールすることで取得可能なメトリクスが存在する。これによりカスタムメトリクスの設定が行えるようになる。
EC2インスタンスの監視は5分間隔のモニタリングがデフォルトになっている。
1分間隔のモニタリングは有償サービスになっている。
・標準メトリクス
CPU使用率、DISK I/O、ネットワーク I/O、EC2ステータス
・カスタムメトリクス(CloudWatchエージェント)
CPU詳細、DISK詳細、メモリ使用率、ネットワーク詳細、プロセス詳細
■メトリクスの解像度
メトリクスのおける解像度は、メトリクスを収集する間隔のこと。
標準メトリクスでは最小で1分間隔の取得が設定できる。必要に応じて5分間隔などの設定も可能で、一般に取得間隔が短くなるほど有効保存期間は短くなる。
CloudWatchアラーム
CloudWatchアラームはその名の通り、通知機能である。
個人で軽く利用している場合にも請求アラームで活用する場面はあるだろう。
具体的にはCloudWatchで収集しているメトリクスに対して閾値を設定し、その閾値に対しての状態変化で通知を設定する。
請求アラームなどでは閾値を超えた場合にアクションを行う場合が多いが、他のメトリクスを監視する場合には閾値を超えた状態から正常状態に変化した場合にアクションを設定することも可能である。
アラームといってしまうとメールなどによる通知機能のイメージが強くなるが、実際にはアクションを設定することができ、EC2の停止や再起動、Auto Scalingを定義することができる。メール通知はそのアクションのうちの一つである。
メール通知を行う場合には、CloudWatch単体では実現できず、メールなどの配信サービスであるAmazon SNSと連携することによと実現する。
CloudWatch Logs
CloudWatch Logsはログの収集サービスです。
ログはAWSの特定のサービスより収集することができ、保存期間は無制限か、1日から10年の期間が設定する。
その他、特定の文字列に該当するもののみを抽出したり、Amazon Elasticsearch Serviceと連携することで収集結果を可視化することもできる。
他のサービスとの連携が重要になると思われる。
■監視対象のサービス
・CloudTrail
・Route 53
・Lamda
・VPC
・SNS
・EC2
・RDS
有効な活用はできていないが実際に使用したことがあるのはLamdaとの連携。
Lamda関数の実行ログを出力できるので比較的使い方をイメージしやすい。
CloudWatch Events
CloudWatch EventsはAWSリソースの変化をトリガーとして、アクションを実行するサービス。
AWSサービスをCloudWatch Eventsで監視してLamda関数やSNSによりアクションを実行するというと通常のCloudWatchとの違いがやや分かりにくい。
CloudWatchではメトリクスに基づいてアクションを実行するのに対して、こちらはEventsに基づいて実行を行う。
つまり、トリガーが異なり、AWSリソースの状態変化であるため、サービスの停止や起動(たぶん・・)、ログインなどをトリガーとして定義されたアクションを実行することができる。
管理サービス
AWS CloudTrail
AWS CloudTrail は、AWS アカウントのガバナンス、コンプライアンス、運用監査、リスク監査を行うためのサービスです。
引用元:AWS CloudTrail(ユーザーアクティビティと API 使用状況の追跡)| AWS
AWSサービスの操作状況やアカウントの使用状況(アクティビティ)を主にガバナンス、コンプライアンスの観点で監視を行う。
機能としては、全リージョンで有効化するあるいはリージョン単位で有効化することをそれぞれ設定できる。
アクティビティはCloudTrailで収集保管を行うが、デフォルトでは保存期間が90日であるため、長期保存の用途には別途S3バケットへの保存設定を行うことができる。
■S3バケットへの連携
CloudTrailからS3バケットへの連携は、CloudTrail側の設定で「証跡」を有効化することで機能する。
S3バケットへの連携(証跡)についても、全リージョンかリージョン単位の設定を行うことができる。
■CloudWatch Logsへの連携
CloudTrailではCloudWatch Logsへの連携も行うことができる。
これによってAWS上の操作をCloudWatch上で確認し、アクションを設定することができる。
CloudWatch Eventsにて同じような話がありましたが、CloudWatch EventsにてAWSリソースの構成変化を監視する場合にCloudTrailからの連携を行うことが必須のようです。
AWS Config
AWS Config は、AWS リソースの設定を評価、監査、審査できるサービスです。Config では、AWS リソースの設定が継続的にモニタリングおよび記録され、望まれる設定に対する記録された設定の評価を自動的に実行できます。Config を使用すると、AWS リソース間の設定や関連性の変更を確認し、詳細なリソース設定履歴を調べ、社内ガイドラインで指定された設定に対する全体的なコンプライアンスを確認できます。これにより、コンプライアンス監査、セキュリティ分析、変更管理、運用上のトラブルシューティングを簡素化できます。
引用元:AWS Config(リソースのインベントリと変更の追跡)| AWS
ConfigはAWSリソースの構成管理や変更の履歴を監査するためのマネージドサービスです。
構成の変更はS3に蓄積することも可能で、変更が発生した際にSNSによって通知も可能となる。
CloudTrailと似た感じのサービスにも思えるが、CloudTrailはリソースに関する操作、Configでは構成の変更が監視対象となっている。
■Configルール
ConfigではAWSの構成をコンプライアンス準拠としてConfigルールとして定義して、現在の構成がルールに準拠しているかどうかを評価する。
AWSが用意しているAWSマネージドルールはセキュリティ監査の視点でよく利用される構成が定義されている。
ユーザが独自に設定する場合は、カスタムルールを使用するが、その評価はLamda関数により実施する。
※Lamda関数で評価するというのがいまいちイメージがつかない・・
■Configアグリゲータ
Configアグリゲータでは、複数のアカウントやリージョンでのConfigの評価結果を一つのアカウントに集約できる。
組織で使用する場合には、一定のルールを複数のアカウントに対して適用し集約、一元的に管理を行うことができる。
AWS Trusted Advisor
AWS 環境を最適化することで、コスト削減、パフォーマンスの向上、セキュリティの向上に役立つオンラインリソースです。Trusted Advisor では、AWS ベストプラクティスに従ってリソースをプロビジョニングするのに役立つ、リアルタイムガイダンスを提供しています。
引用元:AWS Trusted Advisor(パフォーマンスとセキュリティの最適化)| AWS
Trusted AdvisorはAWS環境をリアルタイム分析してベストプラクティスに沿った推奨アクションをユーザに通知することができます。
観点としてはコスト最適化、パフォーマンス、セキュリティ、耐障害性、サービスの制限の観点でアドバイスを行う。
特に設定もすることなく、開けば推奨項目が表示されるようです。
■コスト最適化
未使用やアイドル状態のリソース関連などコストを節約するための項目が表示される。
■パフォーマンス
パフォーマンス低下につながる使用方法や利用率が高すぎるインスタンスの監視などの項目が表示される。
■セキュリティ
セキュリティリスクのある設定やセキュリティ向上につながる項目を表示する。
■耐障害性
Auto Scalingやバックアップ等の耐障害性につながる項目を表示する。
■サービス制限
特定のAWSサービスに対して使用率が80%を超えていないかをチェックする。
AWS CloudFormation
AWS CloudFormation は、クラウド環境で AWS とサードパーティ製アプリケーションリソースのモデリングおよびプロビジョニングをする際の、共通的な手法を提供します。AWS CloudFormation では、プログラミング言語またはシンプルなテキストファイルを使用して、あらゆるリージョンとアカウントでアプリケーションに必要とされるすべてのリソースを、自動化された安全な方法でモデル化し、プロビジョニングできます。これは、AWS とサードパーティ製のリソースに真に単一のソースを与えます。
引用元:AWS CloudFormation(テンプレートを使ったリソースのモデル化と管理)| AWS
CloudFormationはAWSリソースのテンプレート化による自動デプロイサービスです。
インフラストラクチャのコード化によりインフラタスクの自動化を行うことができる。
■CloudFormationテンプレート
テンプレートはJSON形式またはYAML形式で記述する。
テキスト上で記述を行い、CloudFormationによりネットワーク構成、Webアプリケーション、管理機能を構築することができる。
AWS Elastic Beanstalk
AWS Elastic Beanstalk は、Java、.NET、PHP、Node.js、Python、Ruby、Go および Docker を使用して開発されたウェブアプリケーションやサービスを、Apache、Nginx、Passenger、IIS など使い慣れたサーバーでデプロイおよびスケーリングするための、使いやすいサービスです。
引用元:AWS Elastic Beanstalk(ウェブアプリの実行と管理)| AWS
構築したWebアプリケーションを容易にアプリケーションサーバにデプロイすることができる。
自動的に適切な容量のプロビジョニング、負荷分散、アプリケーション状態のモニタリングを行い、開発者はアプリケーションの開発自体に集中することができる。
AWSサービスでいえば、EC2やRDSなどのアプリケーションに直結する部分に加え、Auto ScalingやCloudWatch、IAMロールなどアプリケーションに必要な環境が提供できるようになる。
アプリケーションのコードデプロイやプラットフォームについてはバージョン管理が行われ、以前のバージョンに戻すことも可能。
AWS OpsWorks
AWS OpsWorks は、Chef や Puppet のマネージド型インスタンスを利用できるようになる構成管理サービスです。Chef や Puppet は、コードを使用してサーバーの構成を自動化できるようにするためのオートメーションプラットフォームです。OpsWorks では、Chef や Puppet を使用して、Amazon EC2 インスタンスやオンプレミスのコンピューティング環境でのサーバーの設定、デプロイ、管理を自動化できます。OpsWorks には、AWS Opsworks for Chef Automate、AWS OpsWorks for Puppet Enterprise、AWS OpsWorks Stacks の 3 つのバージョンがあります。
引用元:AWS OpsWorks(Chef や Puppet を使って運用を自動化する)| AWS
OpsWorksは構成管理を自動化するサービス。
ChefやPuppetはサーバなどの構成をコード化し自動構築するツール。使ったことはなく知らなかった。
Chefサーバを利用し、オンプレで使用していたChefクックブックやレシピを使用できるらしいがいまいちイメージがわかない。
ちょっとまとめ
■監視系サービス
■自動構築系サービス
・AWS CloudFormation
全AWSサービスを対象としたテンプレートによるインフラ自動構築。
・ AWS Elastic Beanstalk
アプリの実行環境の自動構築に特化している。バージョン管理も行う。
・AWS OpsWorks
Chefによるサーバの構成管理。