
awsには便利なリソースやソフトウェアが揃っていますが、オープンソースのデータベースもサポートしています。awsでデータベースとしてredisを利用したいとき、どうすればしっかり監視できるのでしょうか。
まずインメモリキャッシングシステムのAmazon ElastiCacheと、awsを監視するAmazon CloudWatchについて解説します。その後、CloudWatchでredis用のElastiCacheを使って監視をする方法をお伝えします。
合わせて読む:aws glueでできることと監視の必要性やその方法
awsの概要
awsは、Amazon Web Servicesの頭文字をとった略語です。2006年に「アマゾンウェブサービス」としてAmazonがサービスを開始し、現在では世界でもっとも利用されているクラウドコンピューティングシステムとなりました。
クラウドコンピューティングシステムは、インターネットに必要なサーバーなどの機材やソフトウェアなどのほとんどのものを、インターネット端末を通じて利用できるサービスです。オンプレミスで会社に機材を設置すると、高額な初期費用が必要です。
管理や運用の手間や、電気代などのランニングコストもかかります。しかしクラウドコンピューティングシステムを利用すれば、これらのコストを大幅に削減できます。awsは課金制ですが、一部に無料枠も設けられているので試してから使うことも可能です。
拡張性に優れたオンデマンドで、必要なものを必要なだけ使えるメリットもあります。セキュリティーも確かです。awsは120以上ものサービスを持つパブリッククラウドなので、一般ユーザーや企業が自由に使うことができます。
クラウドサービスプロバイダーであるawsが機材やソフトウェアなどのすべてを所有しているため、最新のインターネットサービスを受けられ維持管理の手間や費用もかからない仕組みです。
合わせて読む:awsでのプロセス監視はなぜ必要か?利用するメリットや料金も紹介
インメモリデータベースのredisとは
redisは、REmote DIctionary Serverの大文字の部分をとった略語です。
しかしオープンソースのため、読み方については世界でも物議をかもしています。日本では、「レディス」または「レディース」と読まれることが多いようです。
redisは、Key-Value型の非リレーショナルデータベース(NoSQL)です。Key-Valueとはデータの保存方法の1つで、Value(値:保存したいデータ)に対応する固有のKey(標識)を設けてペアにして保存します。
redisは複数のデータ型を持っており、一般のKey-Value型とは異なる複雑なデータ型の操作と保存が可能です。データ型を利用することで、種類の異なるコンピューター言語のデータを利用することもできます。
リレーショナルデータベースは、複数に分割されたデータ同士に関連性を持たせて保存します。
それ以外のものを非リレーショナルデータベースと呼び、リレーショナルデータベースが苦手な大量のデータの高速処理などに使われます。redisはメモリ上で動作する、インメモリデータベースです。CPUから直接アクセスできるので、データの高速処理ができます。
各種アプリケーションからのアクセスも高速です。しかし、利用可能なストレージの容量は少なくなります。通常、インメモリデータベースのデータは時間が経つと消えてしまいますが、redisはデータを永続的に保持する機能を備えています。
保存の方法はスナップショットとして保存するRDBと、コマンドを記録するAOFの2つです。もう1つの特徴は、マスター・スレーブ型のレプリケーションです。レプリケーションによって、スレーブはマスターデータの複製を作ります。
これによりマスターサーバーの負荷を軽減し、手順を簡素化することができます。
インメモリキャッシングシステムのAmazon ElastiCache(エラスティキャッシュ)
ElastiCacheは、awsが提供するインメモリデータ構造サービスです。redis用のElastiCacheは、データストアやキャッシュとして使えます。通常キャッシュのデータは、RAM (ランダムアクセスメモリ) などの高速にアクセスできるメモリに保存されます。
キャッシュがあれば、一度取得したデータを効率的に再利用できるようになります。ElastiCacheを利用することでredis本来の能力がさらにパワーアップされ、分散インメモリーデータストアやキャッシュ環境のセットアップや拡張、管理などが簡単に行えるようになります。
アプリケーションのキャッシュとしても利用できるので、動作の遅いアプリケーションの高速化も可能です。セキュリティー面でも優れています。Webやモバイルのアプリケーション、ゲームや金融アプリケーションなど高速で使いたいシーンに最適です。
ElastiCacheは、redisに障害が発生すると自動的に検出して復旧してくれます。ElastiCacheには、redisと同じオープンソースのインメモリーデータストアMemcached(メムキャッシュド)に対応しているタイプもあります。
Memcachedはredisよりもシンプルな使い方に向いているので、自身のニーズに合わせて選びましょう。
awsの監視に適したAmazon CloudWatch(クラウドウォッチ)

CloudWatchは、awsを監視するために作られたシステムです。CloudWatchを利用すると、aws仮想サーバーなどのリソースとアプリケーションをリアルタイムで監視することができます。
CloudWatchでは、システムの稼働状況に関するデータをメトリクスと呼びます。メトリクスは統計の種類などを設定することができるので、ユーザーが監視したい情報を得られます。異常が発生した場合には、設定することでアラーム通知が可能です。
SNSと連携すれば、Eメールやチャットツールなどにも直接通知されます。通知するだけでなく、異常を自ら復旧することも可能です。もともとaws用のシステムなので設定することなく使え、監視対象が増えても自動的に監視されるようになります。
ダッシュボード機能によって情報を1つにまとめ、折れ線グラフなどの形で監視できることもCloudWatchの特徴です。
合わせて読む:awsの監視サービスAmazon CloudWatch(クラウドウォッチ)でメール通知を設定するには?
CloudWatchでredis用のElastiCacheを監視する方法とは
CloudWatchを利用していれば、redis用のElastiCacheを追加しただけで自動的に監視が開始されます。
ElastiCacheはPush型のため、なにもしなくてもCloudWatchに対してホストレベルのメトリクスとキャッシュエンジンソフトウェア(redis)固有のメトリクスの両方を提供します。
ホストレベルのメトリクスとは、ホストで使用可能な空きメモリの量などを指します。redis固有のメトリクスとは、キー検索の取得や失敗の数などです。ホストレベルのメトリクスであるCPUUtilizationやredisのメトリクスであるEngineCPUUtilizationなど、必要なメトリクスにはアラームを設定すると最適な状態でredisを使うことができます。
オープンソースのredisはawsのElastiCacheを使うことでCloudWatchで監視できる
オープンソースのインメモリデータベースredisをawsで使うなら、ElastiCacheでマネージメントすることで拡張性が増したり、キャッシュ環境のセットアップが簡単になったりします。安全性も確保されます。
redisに障害が発生しても、自動的に検出して復旧することが可能です。aws用の監視システムCloudWatchを利用していれば、redis用のElastiCacheを追加するだけで自動的に監視が始まります。