1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ElastiCache nodeのCloudWatchによる死活監視

1
Last updated at Posted at 2018-06-29

AWSは、どのサービスも高い高可用性を誇っており、オンプレ環境とは比較にならないほど運用に手間がかからない。
しかしいくら高い可用性を誇るAWSと言えど、時には物理障害やAWSのVMホストなどの障害に遭ってしまうことはある。
特にRAMメモリを使用したサービスであるElastiCacheは、物理障害が比較的発生しやすいサービスである。
しかし、EC2などと違ってCloudWatchで死活監視を行う仕組みやMetricsは、デフォルトでは用意されていない。
多くの場合は自動復旧するが、障害解析などの目的でElastiCacheに障害が発生したことを検知したい場合がある。
そこで、今回はElastiCache(Redis)のService downを検知する方法を紹介する。

必要なもの

  • AWS CLI(ElastiCacheおよびCloudWatchにアクセスできる権限が付与されていること)
  • redis-cli

Source code

check-redis.sh
# !/bin/bash
export LANG=C
FAIL_COUNT=0
NODES=(`aws elasticache describe-cache-clusters | grep **CLUSTER NAME** | awk '{print $4}'`)
for NODE in ${NODES[*]}
do
	HOST=$NODE.abcd12.0001.apne1.cache.amazonaws.com
	redis-cli -h $HOST ping 2 >/dev/null 2>&1
	if [ $? -ne 0 ]
	then
		FAIL_COUNT=`expr $FAIL_COUNT + 1`
		logger -p 3 "ElastiCache connection failed. Host: $HOST"
	fi
done
aws cloudwatch put-metric-data --namespace "ElastiCache" --value $FAIL_COUNT --metric-name 'Unhealthy node count' --dimensions "Cluster=**CLUSTER NAME**" --unit "Count"

**CLUSTER NAME**HOST変数のエンドポイントは、各自の環境に合わせて読み替えること。

設定方法

  1. 上記のScriptを任意の場所(/usr/local/bin/など)に配置する。
  2. 配置したScriptをCron実行
* * * * *	/usr/local/bin/check-redis >/dev/null 2>&1

これで、ElastiCacheのノードがダウンした場合に、CloudWatchによって検知できるようになる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?