
ずーっと記事にしたかった、elasticsearch関連。
まだ、Alpha版のelasticsearch ver.5 を使って環境を構築したのでメモです!
もくじ
- 構築環境
- 注意点
- EC2立ち上げるのは割愛
- elasticsearch 5.0
- Java8のインストール(OpenJDK)
- Java7削除 or alternativesでコマンドの既定変更など
- elasticsearchのrepo設定
- elasticsearchインストール
- 設定
- elasticsearch 起動・自動起動
- kibana のインストール
- ログを送る方 filebeat のインストール・設定
- beatsのrepo設定
- filebeatインストール
- filebeatでApacheのログを転送する設定
- 「/etc/filebeat/filebeat.yml」 の編集
- filebeat 起動・自動起動
- elasticsearch側で、データ受付の確認
- kibanaでデータ表示
- まとめ・感想
- 課題
- 参考
構築環境
OS | Amazon Linux |
---|---|
agent | filebeat 1.2.3 |
backend | elasticsearch 5.0.0-aplha3 |
visualization | kibana 5.0.0-aplha3 |
今回は、agent(1台)、elasticsearch + kinbana 同居(1台)の2台で構成します。
クラスタは今回は使いません!(あとでハマるので1台構成は注意)
Logstashは今回使わなかったのですが。
訳があったので、記しておきます。
- ログが存在するサーバーにJava8(JRE)を入れる必要があった
(入れたくなかった、環境をできるだけいじりたくなかった) - beatsがなかなか軽量で、Javaも必要無く要件を満たした。
- 検証サーバーのインスタンスサイズ「t2.micro」だとlogstash入れて動かしたら、ハングアップした・・・。
- 収集先でfilter要素で logstash 使えそうだったが、今回はそこまでの要件がなかった。
- 同様にfilter要件で、 td-agent も入れてみたがうまくelasticsearch5.0にデータが入れられなかった。
注意点
- kibana 5.0を使うにはelasticsearchも 5.0が必要
- elasticsearch 5.0はkibana 4.5からも使えます。
- elasticsearchの待ち受けインターフェイスを変更します。
(新規インストールだと「localhost」からのみ受け付け) - Swapファイルを作るか、最低でも4GBのメモリが必要でした。
(kibanaが気が付いたら落ちているとかあって。)
EC2立ち上げるのは割愛
要らないですよねw
elasticsearch 5.0
全て、yumでインストールできるようにします。- Java8のインストール(OpenJDK)
- Java7削除 or alternativesでコマンドの既定変更など
- elasticsearchのrepo設定
- elasticsearchインストール
Java8のインストール(OpenJDK)
1 | sudo yum install java-1.8.0-openjdk |
Java7削除 or alternativesでコマンドの既定変更など
今回はelasticsearch専用機なので、alternativesコマンドで設定変更1 | sudo alternatives -- set java /usr/lib/jvm/jre-1 .8.0-openjdk.x86_64 /bin/java |
他にも「/etc/sysconfig/elasticsearch」で、変更する方法もあります!
elasticsearchのrepo設定
本家のdocよりInstall Elasticsearch with RPM | Elasticsearch Reference [master] | Elastic
elasticsearch.repo in the /etc/yum.repos.d/
1 2 3 4 5 6 7 8 | [elasticsearch-5.x] name=Elasticsearch repository for 5.x packages baseurl=https: //packages .elastic.co /elasticsearch/5 .x /centos gpgcheck=1 gpgkey=https: //packages .elastic.co /GPG-KEY-elasticsearch enabled=1 autorefresh=1 type =rpm-md |
elasticsearchインストール
1 2 | sudo rpm -- import https: //packages .elastic.co /GPG-KEY-elasticsearch sudo yum install elasticsearch |
設定
通信を待ち受ける設定をします。デフォルトでelasticsearchは「localhost」からしか通信を受け付けないようになっています。
また、これに伴ってクラスタの設定も必要になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | --- /etc/elasticsearch/elasticsearch.yml.dist 2016-06-20 18:27:40.561676161 +0900 +++ /etc/elasticsearch/elasticsearch.yml 2016-06-14 12:07:55.209848692 +0900 @@ -53,6 +53,7 @@ # Set the bind address to a specific IP (IPv4 or IPv6): # # network.host: 192.168.0.1 +network.host: ["_site_", "_local_"] # # Set a custom port for HTTP: # @@ -71,6 +72,7 @@ # Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1): # # discovery.zen.minimum_master_nodes: 3 +discovery.zen.minimum_master_nodes: 1 # # For more information, see the documentation at: # <http: current="" elasticsearch="" en="" guide="" modules-discovery.html="" reference="" www.elastic.co=""> </http:> |
elasticsearch 起動・自動起動
1 2 | sudo service elasticsearch start sudo chkconfig --add elasticsearch |
kibana のインストール
kibanaも入れておいちゃいます!同じく。全て、yumでインストールできるようにします。
- kibanaのrepo設定
- kibanaインストール
kibanaのrepo設定
本家のdocよりkibana.repo in the /etc/yum.repos.d/
1 2 3 4 5 6 | [kibana-5.0.0-alpha] name=Kibana repository for 5.0.0-alpha.x packages baseurl=https: //packages .elastic.co /kibana/5 .0.0-alpha /centos gpgcheck=1 gpgkey=https: //packages .elastic.co /GPG-KEY-elasticsearch enabled=1 |
kibanaインストール
1 2 | sudo rpm -- import https: //packages .elastic.co /GPG-KEY-elasticsearch # (elasticsearchのインストールで一度やっているので割愛可能) sudo yum install kibana |
kibana 起動・自動起動
1 2 | sudo service kibana start sudo chkconfig --add kibana |
ログを送る方 filebeat のインストール・設定
今回は安定板で!本家のdocより
全て、yumでインストールできるようにします。
- beatsのrepo設定
- filebeatインストール
beatsのrepo設定
beats.repo in your /etc/yum.repos.d/1 2 3 4 5 6 | [beats] name=Elastic Beats Repository baseurl=https: //packages .elastic.co /beats/yum/el/ $basearch enabled=1 gpgkey=https: //packages .elastic.co /GPG-KEY-elasticsearch gpgcheck=1 |
filebeatインストール
1 2 | sudo rpm -- import https: //packages .elastic.co /GPG-KEY-elasticsearch # (elasticsearchのインストールで一度やっているので割愛可能) sudo yum install filebeat |
filebeatでApacheのログを転送する設定
filebeatはroot権限で動いてしまうので、 logディレクトリ(/var/log/httpd)の権限設定はいりません。「/etc/filebeat/filebeat.yml」 の編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | --- /etc/filebeat/filebeat.yml.dist 2016-06-20 18:48:02.717938545 +0900 +++ /etc/filebeat/filebeat.yml 2016-06-20 18:47:40.209652293 +0900 @@ -12,6 +12,7 @@ # For each file found under this path, a harvester is started. # Make sure not file is defined twice as this can lead to unexpected behaviour. paths: + - /var/log/httpd/*_log #- /var/log/*.log #- c:\programdata\elasticsearch\logs\* @@ -185,6 +186,7 @@ # Scheme and port can be left out and will be set to the default (http and 9200) # In case you specify and additional path, the scheme is required: http://localhost:9200/path # IPv6 addresses should always be defined as: https://[2001:db8::1]:9200 + hosts: ["elasticsearch:9200"] #hosts: ["localhost:9200"] # Optional protocol and basic auth credentials. |
- 取得するファイルパス(ワイルドカード指定可能)
- 送り先のサーバー指定
indexやmapの設定が必要な方は、設定も可能みたいでした~
filebeat 起動・自動起動
1 2 | sudo service filebeat start sudo chkconfig --add filebeat |
elasticsearch側で、データ受付の確認
1 2 3 4 | # curl 'localhost:9200/_cat/indices?v' health status index pri rep docs.count docs.deleted store.size pri.store.size yellow open .kibana 1 1 5 0 19.2kb 19.2kb yellow open filebeat-2016.06.13 5 1 27311 0 4mb 4mb |
念のため、elasticsearchが稼働しているか確認する方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 | # curl 'localhost:9200' { "name" : "Golden Archer" , "cluster_name" : "elasticsearch" , "version" : { "number" : "5.0.0-alpha3" , "build_hash" : "cad959b" , "build_date" : "2016-05-26T08:25:57.564Z" , "build_snapshot" : false , "lucene_version" : "6.0.0" }, "tagline" : "You Know, for Search" } |
kibanaでデータ表示
ブラウザで、http://インストールしたサーバー:5601/にアクセス「filebeat-*」 という indexにアクセスするための設定が必要です!
無かったら、作ってくださーい!

左上の「Discover」から、データの検索・表示ができるようになりました!

まとめ・感想
ここまで、意外にサラッと出来たかのように書いていますが。ちょこちょこ、ハマりポイントに引っかかっては対応していました。
勉強になりました!w (上部で書いている「注意点」大事)
これで、思った通りの「ログ外出し」ができたわけですが。
Apache httpd だったら、こういう要素分けしてほしいな~(ClientIPやUser-Agentなど)と
いうのには、現時点での設定では対応できていません。。。
これから、調整が必要ですね。
課題
- AnsibleのPlaybook作る
- httpd用のmappingを調整する