Ubuntu Server 16.04 LTSにOSSのログ分析ツール『Graylog』をインストールする

前回、CentOS 7にGraylogをインストールしたので、今回はUbuntu Server 16.04 LTSにインストールを行う。

1.前提パッケージの導入

1-1.Oracle JDKのインストール

まずは、以下のコマンドでOracle JDKのインストールを行う。

bash
sudo add-apt-repository -y ppa:webupd8team/java sudo apt-get update sudo apt-get -y install oracle-java8-installer
shell
blacknon@BS-PUB-UBUNTU-01:~$ java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

1-2.Elasticsearchのインストール

次に、Elasticsearchのインストールを行う。
以下のコマンドでリポジトリのインストール、設定を行う。

bash
sudo wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch.list sudo apt-get update sudo apt-get install elasticsearch sudo update-rc.d elasticsearch defaults

インストール後、設定ファイルの編集を行いサービス再起動を実施する。

bash
sudo cp /etc/elasticsearch/elasticsearch.yml{,.bk} sudo sh -c 'cat <<EOF >> /etc/elasticsearch/elasticsearch.yml cluster.name: graylog script.inline: false script.indexed: false script.file: false EOF' sudo service elasticsearch restart

最後に、以下のコマンドを実行し正常に返ってくること確認する。

bash
sudo curl -X GET http://localhost:9200 sudo curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
shell
blacknon@BS-PUB-UBUNTU-01:~$ curl -X GET http://localhost:9200 { "status" : 200, "name" : "Gauntlet", "cluster_name" : "graylog", "version" : { "number" : "1.7.5", "build_hash" : "00f95f4ffca6de89d68b7ccaf80d148f1f70e4d4", "build_timestamp" : "2016-02-02T09:55:30Z", "build_snapshot" : false, "lucene_version" : "4.10.4" }, "tagline" : "You Know, for Search" } blacknon@BS-PUB-UBUNTU-01:~$ curl -XGET 'http://localhost:9200/_cluster/health?pretty=true' { "cluster_name" : "graylog", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0 }

1-3.MongoDBのインストール

次に、MongoDBをインストールする。
以下のコマンドでリポジトリの追加、インストールを行う。

bash
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list sudo apt-get update sudo apt-get install mongodb-org

サービスの起動設定などを行う。

bash
sudo systemctl start mongod sudo systemctl enable mongod

2.Graylogのインストール

前提となるパッケージの導入ができたら、Graylogのインストールを行う。
以下のコマンドで、リポジトリの導入とパッケージのインストールを行う。

bash
wget https://packages.graylog2.org/repo/packages/graylog-2.0-repository_latest.deb sudo dpkg -i graylog-2.0-repository_latest.deb sudo apt-get install -y apt-transport-https sudo apt-get update sudo apt-get install -y graylog-server

次に、Graylogの設定ファイルを編集する。

bash
sudo apt-get install pwgen sudo \ sed -e "/^password_secret/c password_secret = $(pwgen -N 1 -s 96)" \ -e "/^root_password_sha2 /c root_password_sha2 = $(echo -n P@ssw0rd | sha256sum | awk '{print $1}')" \ -e "/^#root_email/c root_email = メールアドレス" \ -e "/^root_timezone/c root_timezone = Japan" \ -e "/elasticsearch_discovery_zen_ping_unicast_hosts/c elasticsearch_discovery_zen_ping_unicast_hosts = $(hostname -I | xargs -n 1 | xargs -I{} echo {}:9300 | tr '\n' ',' | sed 's/,$//g')" \ -e "/elasticsearch_shards/c elasticsearch_shards = 1" \ -e "/elasticsearch_replicas/c elasticsearch_replicas = 0" \ -e "/^rest_listen_uri/c rest_listen_uri = http://IPアドレス:12900/" \ -e "/#web_listen_uri/c web_listen_uri = http://IPアドレス:9000/" \ -i.bk /etc/graylog/server/server.conf

設定ファイルを編集したら、以下のコマンドでサービスの起動設定を行う。

bash
sudo systemctl daemon-reload sudo systemctl restart graylog-server sudo systemctl enable graylog-server sudo systemctl enable elasticsearch

3.WebブラウザからGraylogにアクセスする

サービス起動後、Webブラウザから「http://IPアドレス:9000」へアクセスする。

無事、ログインできた。
Syslogの設定については、以前仮想アプライアンスを利用した際に記述したのでそちらを参照してもらいたい。

なお、その際に注意したいのがポート番号。仮想アプライアンスと違って一般ユーザを作って動かしているため、1024番以下のポートを開くことができない。
(setcapで「setcap 'cap_net_bind_service=+ep' PATH」をしてもダメだった)
そのため、514以外の適当なポート(10514とか)を開いてやるといいだろう。