CentOS 7にOSSのログ分析ツール『Graylog』をインストールする

以前、Syslogサーバとして利用できるログ分析ツール『Graylog』について仮想アプライアンスとして触ってみたのだけど、今回はこれをCentOS 7にインストールしてみる。
仮想アプライアンスと違い、ある程度カスタマイズできるので仕事で導入するときはこっちのほうがいいかな?とりあえず、やっていこう。

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

1-1.OracleJDKのインストール

まずは、前に書いたようにこちらからOracle JDKのrpmパッケージのURLを確認して、以下のようにコマンドを実行しOracleJDKをインストールする。

bash
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-linux-x64.rpm rpm -ihv jdk-8u101-linux-x64.rpm
shell
[root@BS-PUB-CENT7-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
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-2.x] name=Elasticsearch repository for 2.x packages baseurl=https://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch enabled=1 EOF

で、以下のコマンドでElasticsearchのインストールを行う。

bash
yum -y install elasticsearch

サービスの起動回りについて設定を行う。

bash
systemctl daemon-reload systemctl enable elasticsearch

Elasticsearchの設定ファイルを編集し、サービス再起動を行う。

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

以下のコマンドを実行して、ちゃんと設定できていることを確認する。
無事設定できていれば、赤字になっているとこは同じステータスになってるはずだ。

bash
curl -X GET http://localhost:9200 curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
shell
[root@BS-PUB-CENT7-01 ~]# curl -X GET http://localhost:9200 { "name" : "Spymaster", "cluster_name" : "graylog", "version" : { "number" : "2.3.5", "build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4", "build_timestamp" : "2016-07-27T10:36:52Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" } [root@BS-PUB-CENT7-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, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }

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

次に、MongoDB 3.2をインストールする。
以下のコマンドでリポジトリ設定、パッケージインストールを実施する。

bash
cat <<"EOF" > /etc/yum.repos.d/mongodb-org-3.2.repo [mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc EOF yum install -y mongodb-org

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

bash
systemctl start mongod systemctl enable mongod

2.Graylogのインストール

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

bash
rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-2.0-repository_latest.rpm yum -y install graylog-server

次に、Graylog自体の設定ファイルを編集する。
(以下のコマンドではEpelとpwgenをインストールしている)

bash
yum -y install epel-release yum -y install pwgen 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 = root@localhost" \ -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_max_docs_per_index/c elasticsearch_max_docs_per_index = 20000000" \ -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
systemctl daemon-reload systemctl restart graylog-server systemctl enable graylog-server systemctl enable elasticsearch

最後に、Firewalldのポート開放を行う。

bash
firewall-cmd --permanent --zone=public --add-port=9000/tcp firewall-cmd --permanent --zone=public --add-port=12900/tcp firewall-cmd --permanent --zone=public --add-port=1514/tcp firewall-cmd --reload

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

さて、それではWebブラウザからGraylogにアクセスしよう。
「http://IPアドレス:9000」にアクセスする。IDは「admin」、パスワードはroot_password_sha2で指定したものでログインできる。

無事、ログインすることができた。
あとは、以前書いた内容のようにSyslogの設定もろもろを行うだけだ。

なお、今回は一般ユーザで構築しているため、1024番ポート以下のポートを開けることができない。
そのため、rsyslogのデフォルトポートである514ではなく、10514とかその辺を指定して開けてやるといいだろう。