この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
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シリーズがどんどん生み出されそうですね!