RedisbeatでAmazon ElastiCache(Redis)をモニタリングする
はじめに
Developers.IOではこれまでもBeatsシリーズについて様々な記事を書いてきました。
- Topbeat + boot2dockerでMacBookのシステムモニタリング
- Filebeat + boot2dockerでMacBookのログモニタリング
- Packetbeatでパケットモニタリング
- Beatsを使ってみた(まとめ編)
- WinlogbeatでWindowsログモニタリング
さて、今回は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]ボタンをクリックします。
すると以下のようにRedisbeatが投入したデータが見えます。RedisbeatはRedisのINFOコマンドの結果を取っているので、CPUやメモリといったリソースが取れます。あとはうまいことダッシュボードを作れば素敵なモニタリング画面ができます!
さいごに
Beatsはコミュニティがすごく盛り上がっているなぁと思います。今後も新しいBeatsシリーズがどんどん生み出されそうですね!