GNU/Linux >> Linux の 問題 >  >> Linux

Debian8にELKスタックをインストールする方法

はじめに

ELKスタックは、Elasticsearch、Logstash、およびKibanaで構成される人気のあるツールセットです。これらの3つのツールは、非常に強力な集中型ネットワークデータ分析およびサーバーログ視覚化ツールとして機能できるソフトウェアスタックを形成します。 ELKスタックは、負荷分散のために複数のサーバー間でスケールアウトできるようにも設計されています。このハウツーでは、ELKスタックのすべてのコンポーネントを単一のサーバーにインストールします。

前提条件

  • Debian 8を実行しているサーバー。サーバーがまだない場合、Atlantic.netは、30秒以内に起動できる信頼性の高いVPSホスティングサーバーを提供します。

他のオペレーティングシステムもサポートされていますが、この記事ではDebian8に焦点を当てています。

Debian8へのELKスタックのインストール

Sudo

rootユーザーとして作業を行うことは、セキュリティの観点から一般的に推奨されていません。 sudoを使用する root以外のユーザーからのroot権限を必要とするコマンドを実行できます。デフォルトでは、Debianにはsudoは含まれていません パッケージなので、インストールします。

apt-get install sudo

次に、標準のユーザーアカウントをsudoに追加する必要があります ルート権限コマンドを実行できるようにするグループ。 <username>を置き換えます アカウントのユーザー名を使用します。

adduser <username> sudo

ログアウトして、新しいユーザーで再度ログインすると、続行できます。

初めてsudoを使用するとき セッションでは、現在のユーザーのパスワードの入力を求められます。

Elasticsearchのインストール

サーバーにJavaをインストールして、プロセスを開始しましょう。

ELKスタックのデータインデックス作成および検索コンポーネントであるElasticsearchを実行するには、Javaが必要です。 OpenJDK 7リリースをインストールしますが、Elasticsearchのサポートマトリックスにリストされている任意のJREをインストールできます。

まず、サーバー上のパッケージリストを更新する必要があります。

sudo apt-get update

これで、JREをインストールできます。

sudo apt-get install openjdk-7-jre

APTがソートするための依存関係がたくさんあるため、このインストールには時間がかかる場合があります。

それが完了したら、Elasticsearchをインストールできます。公式のDebianリポジトリにあるElasticsearchのバージョンは非常に古く、新しいバージョンのKibanaではサポートされていないため、elastic.coリポジトリをサーバーに追加し、そこからElasticsearchをインストールします。

Elastic.coのリポジトリ署名キーをダウンロードしてインストールします。

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

次に、リポジトリを/etc/apt/sources.list.d/に追加できます。 ディレクトリ。

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/Elasticsearch-2.x.list

この時点で、パッケージリストを再度更新する必要があります。これにより、Elasticsearchの新しいバージョンがelastic.coリポジトリからパッケージリストに追加されます。

sudo apt-get update

これで、Elasticsearchをインストールできます。

sudo apt-get install elasticsearch

また、システムの起動時に起動するようにElasticsearchサービスを構成する必要があります。

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service

それでおしまい!これで、Elasticsearchサービスを開始できます。

sudo systemctl start elasticsearch.service

そして、それがアクティブであることを確認してください。

systemctl status elasticsearch.service

Elasticsearchの構成

この場合は必要ありませんが、KibanaとElasticsearchを異なるサーバーで実行する場合(多くのELKデプロイメントと同様)、Elasticsearch構成ファイル/etc/elasticsearch/elasticsearch.yml Elasticsearchサーバーで、ファイルの任意の場所に次の2行を追加します。

http.cors.allow-origin: "/.*/"
http.cors.enabled: true

同じファイルに、Elasticsearchクラスターに名前を付ける行を追加します。デフォルト名はelasticsearchです。

cluster.name: elasticcluster

Elasticsearch構成ファイルの編集

YAMLファイルは空白に敏感であるため、構成ファイルに空白行やスペースを追加しないでください。

次に、Elasticsearchデーモンを再起動します。

sudo systemctl restart elasticsearch.service

もう一度、デーモンが正常に実行されていることを確認します。

systemctl status elasticsearch.service

Elasticsearchサービスのステータス

Logstashのインストール

Elasticsearchとほぼ同じ方法で、ELKスタックのログ配布および変換コンポーネントであるLogstashをインストールできます。

このハウツーに従っている場合は、Elastic.coパッケージ署名キーがすでに追加されています。したがって、その部分をスキップして、Elastic.cologstashリポジトリを/etc/apt/sources.list.d/にすぐに追加できます。 。

echo "deb http://packages.elastic.co/logstash/2.0/debian stable main" | sudo tee -a /etc/apt/sources.list

そしてもちろん、パッケージリストを更新します。

sudo apt-get update

次に、Logstashをインストールできます。

sudo apt-get install logstash

Elasticsearchと同様に、システムの起動時にLogstashを有効にする必要があります。

sudo systemctl daemon-reload
sudo systemctl enable logstash.service

これで、Logstashを開始できます。

sudo systemctl start logstash.service

そして、それが実行されていることを確認してください。

systemctl status logstash.service

これで、構成に進むことができます!

ログスタッシュ構成

Logstashは、/etc/logstash/conf.dにある構成ファイルを使用します 。デフォルト設定がないため、そのディレクトリに3つの新しいファイルを作成する必要があります。

cd /etc/logstash/conf.d
sudo touch 01-input.conf 10-syslog.conf 30-lumberjack-output.conf

最初のファイル01-input.confを使用します 、Lumberjackが着信ログをリッスンする方法を指定します。

編集用にファイルを開きます(必要に応じて、必要に応じてテキストエディタに置き換えます)。

sudo editor 01-input.conf

次のブロックを追加します:

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/ssl/certs/logstash-forwarder.crt"
    ssl_key => "/etc/ssl/logstash-forwarder.key"
  }
}

ファイルを保存して閉じます。

まだSSL証明書について心配する必要はありません。間もなく生成されます。

次に、フィルター構成を10-syslog.confに追加する必要があります。 。フィルタは、着信メッセージ(ログ)と照合し、Elasticsearchでインデックスを作成する前にデータに変換を適用できます。

エディターでファイルを開きます

sudo editor 10-syslog.conf

そして、以下を追加します:

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

このフィルターは、標準のsyslog形式に一致するすべての着信ログをインターセプトし、タイムスタンプとホスト名のフィールドを各メッセージに追加します。また、メッセージを生成したプログラムであるsyslogPIDやsyslogメッセージ自体などの情報をログメッセージから抽出します。

Logstash/Elasticsearchで使用する新しいタイプのログごとに新しいフィルターを作成する必要があります。

最後に、出力構成ファイル30-lumberjack-output.confに移動できます。 。このファイルには、インデックス付きメッセージをElasticsearchに送信するように指定する単純な出力ブロックとクラスター名が含まれます。

エディターでファイルを開きます。

sudo editor 30-lumberjack-output.conf

次のブロックを追加します:

output {
  elasticsearch {
    hosts => ["localhost"]
  }
}

次に、ELKスタックのSSL証明書を生成します。

SSL証明書を生成する

Logstashがログメッセージの通信に使用するLumberjackプロトコルは、エンドツーエンドで安全になるように設計されており、SSLは厳しい要件です。ただし、証明書を生成するのは非常に簡単です。

serversにホスト名ではなくIPアドレスを使用しているため /etc/logstash-forwarder.confのディレクティブ 、生成されたSSL証明書にIPSANフィールドを追加する必要があります。 subjectAltNameを追加して1つ含めます OpenSSL構成ファイル/etc/ssl/openssl.cnfへの行 。

sudo editor /etc/ssl/openssl.cnf

[ v3_ca ]を含む行を見つけます 、その下に次の行を挿入します。 (127.0.0.1を置き換えます Logstashが別のサーバーにインストールされている場合は、LogstashサーバーのIPアドレスを使用します。)

[ v3_ca ]
subjectAltName = IP:127.0.0.1

ファイルを保存して閉じます。これでSSL証明書を生成できます。

sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout /etc/ssl/logstash-forwarder.key -out /etc/ssl/certs/logstash-forwarder.crt

sudo chown logstash:logstash /etc/ssl/logstash-forwarder.key
sudo chmod 600 /etc/ssl/logstash-forwarder.key

ここで、logstashを再起動し、正しく起動したかどうかを確認します。

sudo systemctl restart logstash.service
systemctl status logstash.service

Logstashサービスのステータス

起動している場合でも、/var/log/logstash/logstash.*にあるログファイルを確認してください。 起動時にエラーが発生しないようにします。

Logstash-Forwarderのインストール

Logstashのサーバー側コンポーネントをインストールしたので、ログを監視するすべてのサーバーにLogstash-Forwarderクライアントをインストールする必要があります。

このチュートリアルでは、残りのELKを実行している同じサーバーにLogstash-Forwarderをインストールしますが、通常はLogstash-Forwarderを他のサーバーで実行します。

まず、システムに新しいリポジトリをもう一度追加する必要があります。

echo "deb http://packages.elasticsearch.org/logstashforwarder/debian stable main" | sudo tee -a /etc/apt/sources.list.d/logstash-forwarder.list

そして、もう一度、パッケージリストを更新します。

sudo apt-get update

これで、Logstash-Forwarderをインストールできます。

sudo apt-get install logstash-forwarder

インストールが完了したら、Logstash-Forwarderの構成ファイルを開きます。

sudo editor /etc/logstash-forwarder.conf

既存のデフォルト構成を消去し、次のブロックを追加します。

{
  "network": {
    "servers": [ "127.0.0.1:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/ssl/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [ "/var/log/syslog", "/var/log/auth.log" ],
      "fields": { "type": "syslog" }
    }
  ]
}

この構成では、/var/log/syslogがチェックされます。 および/var/log/auth.log 新しいエントリの場合は、それらのファイルからの各送信メッセージにsyslogのタグを付けます。 typeで フィールド。

Logstash-Forwarderを別のホストにインストールする場合は、必ずserversを変更してください。 リモートサーバーのIPアドレスを含めるディレクティブ。また、SSL証明書ファイルをリモートサーバーの正しい場所にコピーしてください。

次に、起動時にLogstash-Forwarderを有効にします。

sudo systemctl daemon-reload
sudo systemctl enable logstash-forwarder.service

最後に、Logstash-Forwarderサービスを再起動して、構成の変更を適用できます。

sudo systemctl restart logstash-forwarder.service

デーモンが正常に起動したら、Kibanaのセットアップに進み、完全なELKスタックを起動して実行できます。

systemctl status logstash-forwarder.service

Logstash-forwarderサービスのステータス

logstash-forwarderが機能しているかどうかを確認するには、ログファイルで処理中のイベントを監視します。

tail -f /var/log/logstash-forwarder/*

Logstash-フォワーダーログファイル

Kibanaのインストール

残念ながら、この記事の執筆時点では、elastic.coはKibanaのパッケージバージョンを提供しておらず、デーモン管理はユーザーに任されています。 systemdサービスファイルを作成し、Kibanaを手動でインストールする必要があります。

/optに移動します ディレクトリを作成してKibanaをダウンロードします。

cd /opt
wget -qO - https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz | sudo tar -xzf -

Kibanaを実行するための新しいユーザーを作成し、プログラムディレクトリの所有権を設定する必要があります。

sudo useradd kibana
sudo chown kibana:kibana kibana-4.3.0-linux-x64/ -R

この手順に従って、systemdサービスファイルを作成できます。

sudo touch /usr/lib/systemd/system/kibana.service

ファイルにサービス定義を追加します。

sudo editor /usr/lib/systemd/system/kibana.service

[Unit]
Description=kibana
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
User=kibana
Group=kibana
ExecStart=/opt/kibana-4.3.0-linux-x64/bin/kibana
Restart=always
StandardOutput=null
# Connects standard error to journal
StandardError=journal

[Install]
WantedBy=multi-user.target
に接続します

ここで、すべてのsystemdユニットをリロードしてから、Kibanaサービスを有効にする必要があります。

sudo systemctl daemon-reload
sudo systemctl enable kibana.service

これで、Kibanaを起動できます。

sudo systemctl start kibana.service

実行されていることを再確認してください。オフになっています。

systemctl status kibana.service

Kibanaサービスステータス

Kibanaの構成

メインのKibana構成ファイルは、/opt/kibana-4.3.0-linux-x64/config/kibana.ymlにあります。 。このハウツーにはデフォルトのオプションで十分ですが、構成の必要に応じて設定を変更できます。

Webブラウザのポート5601でサーバーのIPアドレスに移動し、Kibana初期化ページにアクセスします。 Kibanaは、インデックスパターンを構成するように要求します。 received_atを選択します 時間フィールド名を入力し、Createを押します。 。

Kibanaでインデックスパターンを作成する

それでおしまい! ELKスタックコンポーネント(Elasticsearch、Logstash、Kibana)がインストールされ、操作可能です。

次のステップ

Debian 8へのELKスタックのインストールに関するこのチュートリアルを続けていただき、ありがとうございます。関連記事をもう一度確認し、超高速VPSサーバーの1つを試乗してください。


Linux
  1. Debian9にElasticsearchをインストールする方法

  2. Ubuntu16.04にELKスタックをインストールする方法

  3. Debian 11 に MongoDB をインストールする方法

  1. Debian10にElasticsearchをインストールする方法

  2. RHEL8にELKスタックをインストールする方法

  3. Debian 10 /Debian9でELKスタックをセットアップする方法

  1. Debian10にLEMPスタックをインストールする方法

  2. Ubuntu18.04にELKスタックをインストールする方法

  3. UbuntuとDebianにELKスタックをインストールして設定する方法