Elasticsearchは、Javaで開発されたLuceneをベースにしたオープンソースの検索エンジンです。分散型およびマルチテナント型の全文検索エンジンにHTTPダッシュボードWebインターフェイス(Kibana)を提供します。データはクエリされ、取得され、JSONドキュメントスキームに保存されます。 Elasticsearchは、ログファイルを含むすべての種類のテキストドキュメントを検索するために使用できるスケーラブルな検索エンジンです。 Elasticsearchは、「ElasticStack」またはELKスタックの心臓部です。
Logstashは、イベントとログを管理するためのオープンソースツールです。データ収集のためのリアルタイムのパイプライン化を提供します。 Logstashはログデータを収集し、データをJSONドキュメントに変換して、Elasticsearchに保存します。
Kibanaは、Elasticsearch用のオープンソースのデータ視覚化ツールです。 Kibanaは、美しいダッシュボードWebインターフェイスを提供します。 Elasticsearchからのデータを管理および視覚化することができます。美しいだけでなく、パワフルです。
このチュートリアルでは、サーバーログを監視するためにUbuntu18.04サーバーにElasticStackをインストールして構成する方法を示します。次に、Ubuntu18.04およびCentOS7クライアントサーバーに「Elasticbeats」をインストールして構成する方法を説明します。
- 3台のサーバー
- 「elk-master」として4GBのRAM/メモリを搭載したUbuntu18.04-10.0.15.10
- 'elk-client01'として512MB/1GBのRAM/メモリを搭載したUbuntu18.04-10.0.15.21
- 'elk-client02'として512MB/1GBのRAM/メモリを搭載したCentOS7.5-10.0.15.22
- root権限
何をしますか?
- ElasticStackをインストールする
- Javaをインストールする
- ElasticSearchのインストールと設定
- Kibanaのインストールと構成
- KibanaのリバースプロキシとしてNginxをインストールして構成する
- Logstashのインストールと構成
- Ubuntu18.04にFilebeatをインストールして構成する
- CentOS7.5にFilebeatをインストールして構成する
- テスト
この最初のステップでは、「elastic Stack」を「elk-master」サーバーにインストールして構成するため、このステップのすべてのコマンドとステージを「elk-master」サーバーでのみ実行します。 Elasticsearch、Logstashシッパー、Nginxウェブサーバーを備えたKibanaダッシュボードなど、Elasticスタックの各コンポーネントをインストールして構成します。
ElasticスタックのデプロイメントにはJavaが必要です。 ElasticsearchにはJava8が必要です。OracleJDK1.8を使用することをお勧めします。これにより、PPAリポジトリからJava8をインストールします。
'software-properties-common'および'apt-transport-https'パッケージをインストールしてから、PPA'webupd8team'Javaリポジトリを追加します。以下の「aptinstall」および「add-apt-repository」コマンドを実行します。
sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:webupd8team/java -y
次に、java8-installerをインストールします。
sudo apt install oracle-java8-installer -y
インストールが完了したら、Javaのバージョンを確認してください。
java -version
システムにインストールされているJava1.8。
次に、Java環境を構成します。以下のコマンドを使用して、Javaバイナリファイルを確認してください。
update-alternatives --config java
そして、Javaバイナリファイルは' / usr / lib / jvm / java-8-oracleにあります。 'ディレクトリ。
次に、「profile.d」ディレクトリの下にプロファイルファイル「java.sh」を作成します。
vim /etc/profile.d/java.sh
以下にJava環境構成を貼り付けます。
#Set JAVA_HOME JAVA_HOME="/usr/lib/jvm/java-8-oracle" export JAVA_HOME PATH=$PATH:$JAVA_HOME export PATH
保存して終了します。
ファイルを実行可能にして、構成ファイルをロードします。
chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh
次に、以下のコマンドを使用してJava環境を確認します。
echo $JAVA_HOME
そして、Javaディレクトリは' / usr / lib / jvm / java-8-oracleにあります。 'ディレクトリ。
Javaをインストールした後、Elastic Stackの最初のコンポーネントをインストールし、elasticsearchをインストールします。
エラスティックスタックキーを追加し、エラスティックリポジトリをシステムに追加します。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
次に、リポジトリを更新し、以下のコマンドを使用してelasticsearchパッケージをインストールします。
sudo apt update
sudo apt install elasticsearch -y
インストールが完了したら、「/ etc/elasticsearch」ディレクトリに移動して構成ファイル「elasticsearch.yml」を編集します。
cd /etc/elasticsearch/
vim elasticsearch.yml
「network.host」行のコメントを解除して値を「localhost」に変更し、elasticsearchポート構成の「http.port」行のコメントを解除します。
network.host: localhost http.port: 9200
保存して終了します。
次に、elasticsearchサービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl start elasticsearch
systemctl enable elasticsearch
これでelasticsearchが起動して実行されます。以下のnetstatコマンドnetstatおよびcurlコマンドを使用して確認してください。
netstat -plntu
curl -XGET 'localhost:9200/?pretty'
これで、elasticsearchバージョン「6.2.4」がデフォルトのポート「9200」で実行されます。
Elasticsearchのインストールが完了しました。
Kibanaダッシュボードのインストールと構成
2番目のコンポーネントはkibanaダッシュボードです。 ElasticリポジトリからKibanaダッシュボードをインストールし、ローカルホストアドレスで実行するようにkibanaサービスを構成します。
以下のaptコマンドを使用してKibanaダッシュボードをインストールします。
sudo apt install kibana -y
次に、「/ etc / kibana」ディレクトリに移動し、構成ファイル「kibana.yml」を編集します。
cd /etc/kibana/
vim kibana.yml
これらの行「server.port」、「server.host」、および「elasticsearch.url」のコメントを解除します。
server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200"
保存して終了します。
次に、kibanaサービスを開始し、システムの起動時に毎回起動できるようにします。
sudo systemctl enable kibana
sudo systemctl start kibana
これで、kibanaダッシュボードが「localhost」アドレスとデフォルトポート「5601」で稼働しています。以下のnetstatコマンドを使用して確認してください。
netstat -plntu
Kibanaダッシュボードのインストールが完了しました。
NginxをKibanaのリバースプロキシとしてインストールおよび構成する
このチュートリアルでは、NginxWebサーバーをKibanaダッシュボードのリバースプロキシとして使用します。
Nginxと「apache2-utils」パッケージをシステムにインストールします。
sudo apt install nginx apache2-utils -y
インストールが完了したら、「/ etc / nginx」構成ディレクトリに移動し、「kibana」という名前の新しい仮想ホストファイルを作成します。
cd /etc/nginx/
vim sites-available/kibana
以下にNginx仮想ホスト構成を貼り付けます。
server { listen 80; server_name elastic-stack.io; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.kibana-user; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
保存して終了します。
次に、Kibanaダッシュボードにアクセスするための新しい基本認証Webサーバーを作成します。以下のように、htpasswdコマンドを使用して基本認証を作成します。
sudo htpasswd -c /etc/nginx/.kibana-user elastic
Type the elastic user password
kibana仮想ホストをアクティブ化し、すべてのnginx構成をテストします。
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginx -t
エラーがないことを確認してから、Nginxサービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl enable nginx
systemctl restart nginx
KibanaダッシュボードのリバースプロキシとしてのNginxのインストールと構成が完了しました。
Logstashのインストールと構成
このガイドのElasticStackの最後のコンポーネントは、「Logstash」です。 Logsatashをインストールして構成し、クライアントソースからのサーバーログをfilebeatで一元化し、すべてのデータをフィルタリングして変換し(Syslog)、それをstashに転送します(Elasticsearch)。
logstashをインストールする前に、サーバーのOpenSSLバージョンを確認してください。
openssl version -a
このガイドでは、OpenSSL「1.0.2o」を使用します。 OpenSSLバージョン1.1.2をまだ使用している場合は、logstashおよびfilebeatSSL接続でエラーが発生します。
以下のaptコマンドを使用してlogstashをインストールします。
sudo apt install logstash -y
インストールが完了したら、SSL証明書キーを生成して、クライアントファイルビートからlogstashサーバーへのログデータ転送を保護します。
vimを使用して「/etc/hosts」ファイルを編集します。
vim /etc/hosts
以下に構成を追加します。
10.0.15.10 elk-master elk-master
保存して終了します。
次に、logstash構成ディレクトリ'/ etc / logstash'の下に新しいSSLディレクトリを作成し、そのディレクトリに移動します。
mkdir -p /etc/logstash/ssl
cd /etc/logstash/
以下のopensslコマンドを使用して、LogstashのSSL証明書を生成します。
openssl req -subj '/CN=elk-master/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt
LogstashのSSL証明書ファイルは、「/ etc / logstash/ssl」ディレクトリに作成されています。
次に、logstashの新しい構成ファイルを作成します。 filebeatからの入力ファイルとして構成ファイル「filebeat-input.conf」を作成し、syslog処理用の「syslog-filter.conf」を作成してから、Elasticsearch出力を定義するための「output-elasticsearch.conf」ファイルを作成します。
>logstash構成ディレクトリに移動し、「conf.d」ディレクトリに新しい構成ファイル「filebeat-input.conf」を作成します。
cd /etc/logstash/
vim conf.d/filebeat-input.conf
次の構成をそこに貼り付けます。
input { beats { port => 5443 type => syslog ssl => true ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt" ssl_key => "/etc/logstash/ssl/logstash-forwarder.key" } }
保存して終了します。
syslog処理ログデータについては、「grok」という名前のフィルタープラグインを使用してsyslogファイルを解析しています。
新しい構成「syslog-filter.conf」を作成します。
vim conf.d/syslog-filter.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}" ] } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
保存して終了します。
また、elasticsearchの出力には、「output-elasticsearch.conf」という名前の構成ファイルを作成します。
vim conf.d/output-elasticsearch.conf
次の構成をそこに貼り付けます。
output { elasticsearch { hosts => ["localhost:9200"] hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
保存して終了します。
これが完了したら、logstashサービスを開始し、システムの起動時に毎回起動できるようにします。
sudo systemctl enable logstash
sudo systemctl start logstash
以下のnetstatおよびsystemctlコマンドを使用してlogstashサービスを確認してください。
netstat -plntu
systemctl status logstash
そして、logstashサービスが稼働しています。ポート「5443」のパブリックIPアドレスで実行されています。
ElasticStackのインストールが完了しました。
このステップでは、ElasticBeatsデータシッパー「Filebeat」をインストールしてUbuntu18.04クライアント「elk-client01」を構成します。
filebeatをシステムにインストールする前に、「/ etc / hosts」を編集し、logstash証明書ファイル「logstash-forwarder.crt」ファイルを「elk-client01」サーバーにダウンロードする必要があります。
vimエディターを使用して「/etc/hosts」ファイルを編集します。
vim /etc/hosts
次の構成をそこに貼り付けます。
10.0.15.10 elk-master elk-master
保存して終了します。
scpコマンドを使用してlogstash証明書ファイル'logstash-forwarder.crt'をコピーします。
scp [email protected]:/etc/logstash/ssl/logstash-forwarder.crt .
次に、Elastic Keyを追加してElasticBeatsの「Filebeat」をインストールし、Elasticリポジトリを追加します。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
リポジトリを更新し、以下のaptコマンドを使用して「filebeat」パッケージをインストールします。
sudo apt update
sudo apt install filebeat -y
インストールが完了したら、「/ etc / filebeat」ディレクトリに移動し、構成ファイル「filebeat.yml」を編集します。
cd /etc/filebeat/
vim filebeat.yml
次に、「enabled」行の値を「true」に変更して、ファイルビートプロスペクターを有効にします。
enabled: true
logstashサーバーに送信するシステムログファイルを定義します。このガイドでは、sshログファイル「auth.log」とsyslogファイルを追加します。
paths: - /var/log/auth.log - /var/log/syslog
デフォルトの「elasticsearch」出力にコメントを付けて出力をlogstashに設定し、以下のようにlogstash出力行のコメントを解除します。
output.logstash: # The Logstash hosts hosts: ["elk-master:5443"] ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]
保存して終了します。
次に、「filebeat.reference.yml」ファイルを編集してfilebeatモジュールを有効にする必要があり、「syslog」モジュールを有効にします。
vim filebeat.reference.yml
以下のように、filebeatのsyslogシステムモジュールを有効にします。
- module: system # Syslog syslog: enabled: true
保存して終了します。
logstash証明書ファイル「logstash-forwarder.crt」を「/etc/filebeat」ディレクトリにコピーします。
cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt
Filebeatのインストールと構成が完了しました。次に、filebeatサービスを開始し、システムの起動時に毎回起動できるようにします。
systemctl start filebeat
systemctl enable filebeat
以下のコマンドを使用して、filebeatサービスを確認してください。
systemctl status filebeat
tail -f /var/log/filebeat/filebeat
filebeatの配送業者は、Ubuntu18.04サーバーで稼働しています。
このステップでは、ElasticBeatsデータシッパー「Filebeat」をインストールしてCentOS7.5クライアント「elk-client02」を構成します。
Filebeatをシステムにインストールする前に、「/ etc / hosts」を編集し、logstash証明書ファイル「logstash-forwarder.crt」ファイルを「elk-client02」サーバーにダウンロードする必要があります。
vimを使用して「/etc/hosts」ファイルを編集します。
vim /etc/hosts
以下に構成を貼り付けます。
10.0.15.10 elk-master elk-master
保存して終了します。
scpコマンドを使用してlogstash証明書ファイル'logstash-forwarder.crt'をコピーします。
scp [email protected]:/etc/logstash/ssl/logstash-forwarder.crt .
次に、Elastic Keyを追加してElasticBeatsの「Filebeat」をインストールし、Elasticリポジトリを追加します。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat <<EOF > /etc/yum.repos.d/elastic.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
以下のyumコマンドを使用してfilebeatをインストールします。
yum install filebeat -y
インストールが完了したら、「/ etc / filebeat」ディレクトリに移動し、構成ファイル「filebeat.yml」を編集します。
cd /etc/filebeat/
vim filebeat.yml
次に、「enabled」行の値を「true」に変更して、ファイルビートプロスペクターを有効にします。
enabled: true
logstashサーバーに送信するシステムログファイルを定義します。このガイドでは、sshログファイル「auth.log」とsyslogファイルを追加します。
paths: - /var/log/secure - /var/log/messages
デフォルトの「elasticsearch」出力にコメントを付けて出力をlogstashに設定し、以下のようにlogstash出力行のコメントを解除します。
output.logstash: # The Logstash hosts hosts: ["elk-master:5443"] ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]
保存して終了します。
次に、「filebeat.reference.yml」ファイルを編集してfilebeatモジュールを有効にする必要があり、「syslog」モジュールを有効にします。
vim filebeat.reference.yml
以下のように、filebeatのsyslogシステムモジュールを有効にします。
- module: system # Syslog syslog: enabled: true
保存して終了します。
logstash証明書ファイル「logstash-forwarder.crt」を「/etc/filebeat」ディレクトリにコピーします。
cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt
Filebeatのインストールと構成が完了しました。次に、filebeatサービスを開始し、起動時間に追加します。
systemctl start filebeat
systemctl enable filebeat
以下のコマンドを使用して、filebeatサービスを確認してください。
systemctl status filebeat
tail -f /var/log/filebeat/filebeat
ファイルビートの配送業者は、CentOS7.5サーバーで稼働しています。
Webブラウザーを開き、エラスティックスタックのドメイン名を入力します。私の名前は「elastic-stack.io」です。
基本認証からKibanaダッシュボードへのユーザー名とパスワードの入力を求められます。
ユーザー名「elastic」とパスワードを入力します。
これで、美しいkibanaダッシュボードが表示されます。右側にある、[インデックスパターンの設定]ボタンをクリックしてください。
「filebeat-*」インデックスパターンを定義し、「次のステップ」ボタンをクリックします。
「時間フィルターフィールド名」には、「@ timestamp」を選択し、「インデックスパターンの作成」をクリックします。
そして、ファイルビートインデックスパターンが作成されました。
次に、各クライアントサーバーの「elk-client01」Ubuntuシステムと「elk-client02」CentOSシステムで失敗したSSHログインのログ情報を取得しようとします。
Kibanaダッシュボード内で、[検出]メニューをクリックして、すべてのサーバーログを取得します。
「beat.hostname」を「elk-client01」サーバーに設定します。「source」は「/var/log/auth.log」ファイルであり、次のような結果が得られます。
以下は、「auth.log」ファイルからのSSH失敗パスワードのサンプルログの詳細です。
「elk-client02」CentOSサーバーの場合、「beat.hostname」を「elk-client02」サーバーに設定します。「source」は「/ var / log / secure」ファイルであり、次のような結果が得られます。以下。
以下は、「セキュア」ファイルからのSSH失敗パスワードのサンプルログの詳細です。
ElasticStackとElasticBeatの「Filebeat」のインストールと構成が正常に完了しました。