RedisbeatでAmazon ElastiCache(Redis)をモニタリングする

beats-eyecatch

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Developers.IOではこれまでもBeatsシリーズについて様々な記事を書いてきました。

さて、今回はElasticのBlog記事「Weekly Beats: Redisbeat from community | Elastic」で知った、 Redisbeatを使って、Amazon ElastiCache(Redis)をモニタリングする仕組みを構築してみました。

やってみた

今回試した環境は

  • EC2 ... Amazon Linux(2015.09.1.x86_64-gp2)
  • ElastiCache ... Redis(2.8.24)

です。EC2上にElasticsearchとKibanaは導入済みとします。

EC2からElastiCache(Redis)への接続確認

EC2からElastiCache(Redis)への接続確認のために、redisをインストールします。

$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo yum --enablerepo=remi install redis

redis-cliコマンドでElastiCache(Redis)に接続できることを確認します。

$ redis-cli -h redis.hoge.0001.apne1.cache.amazonaws.com
redis.hoge.0001.apne1.cache.amazonaws.com:6379> quit

Golangのインストール

RedisbeatをbuildするためにはGolangが必要です。最新のGolangバイナリを取得して展開します。

$ wget https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf  go1.5.3.linux-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin
$ go version
go version go1.5.3 linux/amd64

Redisbeatの依存ライブラリのインストール

Redisbeatは様々な依存ライブラリがありますので、事前に入手しておきます。この辺、手動で集めなくても、もっと良い方法があるような気がします。ご存知の方は是非お教えください。

$ mkdir ~/src
$ cd ~/src/

$ git clone https://github.com/chrsblck/redisbeat github.com/chrsblck/redisbeat
$ git clone https://github.com/elastic/beats github.com/elastic/beats
$ git clone https://github.com/garyburd/redigo github.com/garyburd/redigo
$ git clone https://github.com/nranchev/go-libGeoIP github.com/nranchev/go-libGeoIP
$ git clone https://github.com/satori/go.uuid github.com/satori/go.uuid
$ git clone https://github.com/stretchr/testify github.com/stretchr/testify
$ GOPATH=~ go get gopkg.in/yaml.v2

Redisbeatのbuildとtest

Redisbeatをbuildし、testします。

$ cd ./github.com/chrsblck/redisbeat

$ export GO15VENDOREXPERIMENT=1
$ GOPATH=~ make
$ GOPATH=~ make unit-tests
$ GOPATH=~ make testsuite

Elasticsearch templateの投入

用意されているElasticsearch templateを投入します。

$ curl -XPUT 'http://localhost:9200/_template/redisbeat' -d@etc/redisbeat.template.json

Redisbeatの設定

設定ファイルを編集し、hosts:にElastiCache(Redis)のEndpointを設定します。

$ vi redisbeat.yml
################### Redisbeat Configuration Example #########################

############################# Input ############################################
input:
  # In seconds, defines how often to read server statistics
  #period: 10

  # Host of redis server, default is localhost
  host: "redis.hoge.0001.apne1.cache.amazonaws.com"

Redisbeatの実行

では実行!

$ ./redisbeat -c redisbeat.yml

動作確認

Kibanaを実行します。

$ cd ~/kibana-4.4.0-linux-x64
$ ./bin/kibana

Kibana画面(http://EC2のIPアドレス:5601)にアクセスします。Index名を「redisbeat-*」とし、[Create]ボタンをクリックします。

Settings_-_Kibana

すると以下のようにRedisbeatが投入したデータが見えます。RedisbeatはRedisのINFOコマンドの結果を取っているので、CPUやメモリといったリソースが取れます。あとはうまいことダッシュボードを作れば素敵なモニタリング画面ができます!

redisbeat-__-_Settings_-_Kibana

さいごに

Beatsはコミュニティがすごく盛り上がっているなぁと思います。今後も新しいBeatsシリーズがどんどん生み出されそうですね!