2019-06-26Elasticsearchの最新版は7.xであることに、どういうわけか前回の記事を公開してから気づいたので、大慌てで書き直しをした。本家のインストールガイドをきちんと読まないといけないよな、ということで改めてFlutentdでsyslogを集めてKibana7で閲覧する環境を整えてみる。全体の構成はこんな感じだ。構成イメージ受信サーバのインストール受信サーバはCPU2コア、4GBメモリ、20GBディスクのサーバを用意した。どれぐらいのスペックが適切なのかよくわからなかったので、適当に準備してみたというのが正直なところだ。これにCentOS7.xを新規に入れて、最新状態にupdateしたところから始める。Elasticsearch7のインストール最初にyumのrepoファイルを作成する。手動で作成することになるので、コピペ用にバッチ風のテキストを用意しておこう。elasticsearch続いて設定ファイルを書く。するだけで認証機能を利用できる。この行がないと、xpackをONにしたときにElasticsearchが起動しなくなってしまうので必ず追記する。サーバのメモリ容量に応じて、下記の部分を調整する。設定ファイルができたら、Elasticsearchを起動する。elasticsearch次にElasticsearchの予約ユーザのパスワードを設定する。Elasticsearch7には6つの予約ユーザがあって、それぞれ任意のパスワードが設定できるが、一つずつ設定するのは面倒なので、autoモードでランダムパスワードを割り当て、利用するものだけ自分の都合のよいパスワードに付け替えるか、Kibanaログイン用のスーパーユーザーを自分の名前で新規作成することをオススメする。ランダムパスワードをつけてみよう。5hmeFXwZ3w8N4TxVusVe表示されたパスワードは忘れないようにメモしておく。Kibana7のインストール続いてKibana7をインストールする。こちらもyumで簡単にインストールできる。インストール直後は、デフォルト値を示すコメントばかりなので、ファイルの末尾に以下のように記述するとよい。true3行目のパスワードは、先ほど割り当てたelasticのパスワードを指定しておく。4行目のオプションは、エラー以外の余計なログを抑制するもので、ぜひとも指定しておくことをオススメする。次にファイアウォールを設定する。Kibanaにアクセスするだけなら、5601ポートを開ければよい。--reload最後にKibanaを起動する。kibanaこれでKibanaにアクセス可能になった。アクセスして確かめてみよう。次のように表示されれば成功だ。ログイン画面ユーザ名にelastic、パスワードに割り当て済みのパスワードを指定してログインすると、このような画面になる。無事にログインできたら、最初にやるべきはログイン用のユーザを作ることだ。ユーザの追加手順するとユーザ作成のダイアログが表示されるので、諸情報を入力してボタンを押せばよい。ログインしやすい名前とパスワードを設定し、ロールはSuperuserにしておく。Kibanaの普段使いにはそちらを利用すればよい。Fluentdのインストール(受信サーバ)さて、続いてFluentdのインストールだ。sh次にElasticsearch用のプラグインを追加する。fluent-plugin-elasticsearchFluentdは24224ポートを使ってアクセスするので、これを開けておく。単純にアクセスを開放してしまうと色々心配なので、監視対象にするサーバのIPアドレスを指定して開けるようにする。--reload次にFluentdの設定ファイルを用意する。インストールするとデフォルトのファイルがすでにあるので、以下のように追記する。途中にelasticのパスワードがあるので、上記で設定したものをコピペする。</store></match>この設定ファイルは2つのディレクティブから成る。sourceはポート5140からsyslogメッセージを受信して解析することを指示する部分、matchは内外から受信するFluentdのメッセージをElasticsearchへ突っ込む設定だ。できたらFluentdを起動する。Fluentdがログを送信する方法はいくつかある。ログファイルを直接パースして送信することもできる(実際は/var/log/messagesのファイル権限の都合でうまくいかない)。syslogを扱うなら本家のドキュメントが示す手段を使うのがよさそうだ。5140にsyslogを送るようにするFluentdでそれを捕まえて受信サーバへ送る2のFluentdで捕まえるほうは、すでにtd-agent.confに記述済みなので、1のrsyslogの設定を行う。末尾に、次の1行を追加する。@127.0.0.1:5140設定はお好みに合わせて変えていただきたい。同程度でよいと思うなら、次のようにするとよい。@127.0.0.1:5140設定できたら、rsyslogを再起動する。rsyslogこれで、まずは受信サーバ自身のログが溜まりはじめるはずだ。送信サーバでは、既存の設定にFluentdを追加する形になる。rsyslogにログを出力する設定を施し、Fluentdで送信するわけだ。Fluentdをインストールする。sh次にFluentdの設定ファイルを書く。</server></match>hostのところに、先ほど作成した受信サーバのホスト名またはIPアドレスを指定する。設定ファイルができたら起動する。td-agent最後にrsyslogを設定する。@127.0.0.1:5140としておき、再起動して設定を有効化する。rsyslogKibanaのセットアップ設定が完了したら、改めてKibanaにアクセスしてみよう。Patternsをクリックする。インデックスパターンの作成(1)ここで、Elasticsearchに溜まったデータから、インデックスを頼りにどのデータを閲覧するかを選択できる。本稿の通りに設定していれば、Fluentdで収集したログには「logstash-日付」というインデックスが付与されていて、すでにログが集まってきていると思う。インデックスが見つからないというメッセージが表示されていたら、対象サーバがsyslogを出力していないか、設定のどこかに間違いがあるかのいずれかだ。syslogに明示的にログを出力したいなら次のようにする。チェックして、エラーがないかを見てほしい。stepボタンを押す。インデックスパターンの作成(2)次の画面では時刻を示すフィールドを指定する。