それなりに適当にやってます

なんとなくそれっぽいメモとか備忘録とか適当に。 2018年5月にブログ移転しました。 古い記事は未整理です。

CentOS7 で elasticsearch+kibana4(+logstash) を動かす


少し前に logstash だけ動かしていた ので、その続きで Elasticsearch+Kibana4 まで試した。

参考URL
インストール
  1. 事前準備(OS環境の設定)
    firewalld,SELinux を無効にし、@development グループのパッケージをインストール、アップデートを適用しサーバ再起動を行う。
    $ sudo systemctl disable firewalld
    $ sudo sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
    $ sudo yum install -y @development
    $ sudo yum upgrade -y && shutdown -r now
  2. Elasticsearch のインストール
    Java 8 に依存しているらしいので、先にOpenJDKを導入した後、Elasticsearch をインストールする。
    $ sudo yum install -y java-1.8.0-openjdk
    $ sudo yum install -y https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.1.1/elasticsearch-2.1.1.rpm
  3. elasticsearchの設定
    適当に既定でコメントアウトされていたものを有効化
    $ cd /etc/syscofig/
    $ sudo cp elasticsearch{,.`date +%Y%m%d`}
    $ sudo vi elasticsearch
    ...
    ES_HEAP_SIZE=2g
    MAX_OPEN_FILES=65535
    MAX_LOCKED_MEMORY=unlimited
    MAX_MAP_COUNT=262144
  4. 自動起動の有効化と起動
    自動起動の有効化と、"Elasticsearch" の起動
    $ sudo systemctl enable elasticsearch
    $ sudo service elasticsearch start
  5. Kibana4 の入手と展開
    公式サイトで提供されている tar.gz をダウンロード、展開・配置を行う。
    $ sudo mkdir /usr/local/src/kibana ; cd $_
    $ sudo curl -L -O https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
    $ sudo tar zxvf kibana-4.3.1-linux-x64.tar.gz
    $ sudo chown -R root:root kibana-4.3.1-linux-x64
    $ sudo mv kibana-4.3.1-linux-x64 /usr/local
    $ sudo ln -s /usr/local/kibana-4.3.1-linux-x64 /usr/local/kibana
    起動スクリプトを作成する。
    $ sudo vi /etc/systemd/system/kibana4.service
    ...
    [Service]
    ExecStart=/usr/local/kibana/bin/kibana
    Restart=always
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=kibana4
    User=root
    Group=root
    Environment=NODE_ENV=production

    [Install]
    WantedBy=multi-user.target
    systemd のリロード、自動起動の有効化と "kibana4" の起動
    $ sudo systemctl daemon-reload
    $ sudo systemctl enable kibana4
    $ sudo systemctl start kibana4
    http://"IPADDRESS":5601/ へアクセスし、kibana4 の画面が見れる事を確認
  6. logstash のインストールと設定
    logstash の導入と設定については 以前に書いたのを参照 テストでローカルのログファイルを、ローカルの elasticsearch に放り込む感じで。
設定
  1. Geoip用の下準備
    $ cd /etc/logstash
    $ sudo curl -O "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz"
    $ sudo gunzip GeoLiteCity.dat.gz
  2. logstach の設定
    "underboob_access.log" を読み込んでフィルターにて処理を行い、アウトプットでElasticsearchに投げる設定を行う。
    $ cd /etc/logstash/conf.d
    $ sudo vi underboob_access_log.conf
    ...
    input {
    file {
    path => "underboob_access.log"
    start_position => "beginning"
    #sincedb_path => "/dev/null"
    }
    }

    filter {
    grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
    break_on_match => false
    tag_on_failure => ["_message_parse_failure"]
    }
    date {
    match => ["timestamp", "dd/MMM/YYYY:HH:mm:ss Z"]
    locale => en
    }
    geoip {
    source => "clientip"
    target => "geoip"
    database => "/etc/logstash/GeoLiteCity.dat"
    add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
    add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
    }
    grok {
    match => { "request" => "^/%{WORD:first_path}/%{GREEDYDATA}$" }
    tag_on_failure => ["_request_parse_failure"]
    }
    useragent {
    source => "agent"
    target => "useragent"
    }
    }

    output {
    elasticsearch {
    hosts => "127.0.0.1:9200"
    index => "underboob_access_log-%{year}"
    }
    }
  3. logstash の実行
    サービスを再起動するか、コマンドで実行してログを取り込む
    $ sudo service logstash restart
    または
    $ sudo /opt/logstash/bin/logstash -f underboob_access_log.conf
  4. Kibana4 にて設定
    Kibanaにアクセスし、インデックス " underboob_access_log-* " を作成、データが取り込まれている事を確認して設定するだけ。
小ネタ
  1. elasticsearch の初期化
    下記で全部消える(要注意)
    $ curl -XDELETE 'http://localhost:9200/*'
  2. ログの再取り込み
    再度ログの取り込みをしたい場合は、ホームディレクトリにできた .sinzedb_* を消してやる
    $ sudo rm ~/.sincedb_*
    テスト目的で暫くのあいだ初期化&ログ取り込みを繰り返す場合は、設定で "sincedb_path" を /dev/null にしとくとよさ気
    $ sudo vi /etc/logstash/conf.d/underboob_access_log.conf
    ...
    sincedb_path => \"/dev/null\"

    以上、適当に。