Elasticsearch は、Javaで開発されたLuceneをベースにしたオープンソースの検索エンジンです。分散型およびマルチテナント型の全文検索エンジンに、HTTPダッシュボードWebインターフェイス(Kibana)とJSONドキュメントスキームを提供します。 Elasticsearchは、ログファイルを含むすべてのタイプのドキュメントを検索するために使用できるスケーラブルな検索エンジンです。 Elasticsearchは、「ElasticStack」またはELKスタックの心臓部です。
ログスタッシュ は、システムイベントとログを管理するためのオープンソースツールです。データを収集するためのリアルタイムのパイプライン化を提供します。 Logstashはログまたはデータを収集し、すべてのデータをJSONドキュメントに変換して、Elasticsearchに保存します。
キバナ Elasticsearchのデータ視覚化インターフェースです。 Kibanaは美しいダッシュボード(Webインターフェイス)を提供し、Elasticsearchからのすべてのデータを自分で管理および視覚化することができます。美しいだけでなく、パワフルです。
このチュートリアルでは、サーバーログを監視するために単一のUbuntu16.04サーバーにElasticStackをインストールして構成する方法と、Ubuntu16.04およびCentOS7オペレーティングシステムを搭載したクライアントPCに「Elasticbeats」をインストールする方法を示します。
前提条件
- Ubuntu 16.04 64ビットサーバー、4 GBのRAM、ホスト名-elk-master
- Ubuntu 16.04 64ビットクライアント、1 GBのRAM、ホスト名-elk-client1
- 1GBのRAMを搭載したCentOS764ビットクライアント、ホスト名--elk-client2
ElasticスタックのデプロイメントにはJavaが必要です。 ElasticsearchにはJava8が必要です。OracleJDK1.8を使用することをお勧めします。 PPAリポジトリからJava8をインストールします。
新しいパッケージをインストールします'python-software-properties' そのため、aptコマンドを使用して新しいリポジトリを簡単に追加できます。
sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https
'add-apt-repository'コマンドを使用して新しいJava8PPAリポジトリを追加してから、リポジトリを更新します。
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
PPAwebpub8リポジトリからJava8をインストールします。
sudo apt-get install -y oracle-java8-installer
インストールが完了したら、Javaのバージョンを確認して、Javaがシステムに正しくインストールされていることを確認してください。
java -version
このステップでは、Elasticsearchをインストールして構成します。 ElasticリポジトリからElasticsearchをインストールし、ローカルホストIPで実行するように構成します。
Elasticsearchをインストールする前に、Elasticリポジトリキーをサーバーに追加してください。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Elastic5.xリポジトリを「sources.list.d」ディレクトリに追加します。
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
リポジトリを更新し、以下のaptコマンドを使用してElasticsearch5.1をインストールします。
sudo apt-get update
sudo apt-get install -y elasticsearch
Elasticsearchがインストールされています。次に、構成ディレクトリに移動して、elasticsaerch.yml構成ファイルを編集します。
cd /etc/elasticsearch/
vim elasticsearch.yml
43行目のコメントを削除して、Elasticsearchのメモリロックを有効にします。これは、サーバーの過負荷を回避するために、Elasticsearchのメモリの交換を無効にするために行います。
bootstrap.memory_lock: true
'Network'ブロックで、network.host行とhttp.port行のコメントを解除します。
network.host: localhost
http.port: 9200
ファイルを保存してvimを終了します。
次に、メモリロックmlockall構成のelasticsearchサービスファイルを編集します。
vim /usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK行のコメントを外します。
LimitMEMLOCK=infinity
ファイルを保存して終了します。
/ etc/defaultディレクトリでElasticsearchのデフォルト設定を編集します。
vim /etc/default/elasticsearch
行60のコメントを解除し、値が「無制限」であることを確認します。
MAX_LOCKED_MEMORY=unlimited
保存して終了します。
Elasticsearchの設定が終了しました。 Elasticsearchはポート9200のローカルホストIPアドレスで実行され、Ubuntuサーバーでmlockallを有効にしてスワップメモリを無効にしました。
Elasticsearchサービスファイルをリロードし、起動時に実行できるようにしてから、サービスを開始します。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Elasticsearchが実行されるまで1秒待ってから、サーバーで開いているポートを確認し、ポート9200の「状態」が「LISTEN」であることを確認します。
netstat -plntu
次に、メモリロックをチェックして、mlockallが有効になっていることを確認します。また、Elasticsearchが以下のコマンドで実行されていることを確認してください。
curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'
以下の結果が表示されます。
このステップでは、NginxWebサーバーの背後にKibanaをインストールして構成します。 KibanaはローカルホストのIPアドレスのみをリッスンし、NginxはKibanaアプリケーションのリバースプロキシとして機能します。
次のaptコマンドを使用してKibanaをインストールします:
sudo apt-get install -y kibana
次に、kibana.yml構成ファイルを編集します。
vim /etc/kibana/kibana.yml
server.port、server.hos、elasticsearch.urlの行のコメントを解除します。
server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"
ファイルを保存してvimを終了します。
Kibanaを追加して起動時に実行し、起動します。
sudo systemctl enable kibana
sudo systemctl start kibana
Kibanaは、ノードアプリケーションとしてポート5601で実行されます。
netstat -plntu
Kibanaのインストールが完了しました。次に、Nginxをインストールし、パブリックIPアドレスからKibanaにアクセスできるようにリバースプロキシとして構成する必要があります。
次に、Nginxパッケージとapache2-utilsパッケージをインストールします。
sudo apt-get install -y nginx apache2-utils
Apache2-utilsは、Nginxでも動作するWebサーバー用のツールを含むパッケージです。Kibanaにはhtpasswd基本認証を使用します。
Nginxがインストールされました。次に、Nginxのsites-availableディレクトリに新しい仮想ホスト構成ファイルを作成する必要があります。 vimで新しいファイル「kibana」を作成します。
cd /etc/nginx/
vim sites-available/kibana
以下に構成を貼り付けます。
server {
listen 80;
server_name elk-stack.co;
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;
}
}
ファイルを保存してvimを終了します
htpasswdコマンドを使用して新しい基本認証ファイルを作成します。
sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD
'sites-available'のkibanaファイルから'sites-enabled'ディレクトリへのシンボリックリンクを作成して、kibana仮想ホストをアクティブ化します。
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginxの構成をテストし、エラーがないことを確認してから、nginxを追加して起動時に実行し、nginxを再起動します。
nginx -t
systemctl enable nginx
systemctl restart nginx
このステップでは、Logsatashをインストールして構成し、クライアントソースからのサーバーログをfilebeatで一元化し、すべてのデータをフィルタリングして変換し(Syslog)、それをstashに転送します(Elasticsearch)。
以下のaptコマンドを使用してLogstash5をインストールします。
sudo apt-get install -y logstash
vimでhostsファイルを編集します。
vim /etc/hosts
サーバーのIPアドレスとホスト名を追加します。
10.0.15.10 elk-master
ホストファイルを保存して、エディターを終了します。
次に、OpenSSLを使用して新しいSSL証明書ファイルを生成し、クライアントソースがエラスティックサーバーを識別できるようにします。
cd /etc/logstash/>
openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt
' / CNを変更します 'エラスティックサーバーのホスト名の値。
証明書ファイルは「/etc/logstash/」ディレクトリに作成されます。
次に、logstashの構成ファイルを作成します。 filebeatからの入力ファイルとして構成ファイル「filebeat-input.conf」を作成し、syslog処理用の「syslog-filter.conf」を作成してから、Elasticsearch出力を定義するための「output-elasticsearch.conf」ファイルを作成します。
>logstash構成ディレクトリに移動し、「conf.d」ディレクトリに新しい構成ファイルを作成します。
cd /etc/logstash/
vim conf.d/filebeat-input.conf
構成を入力し、以下に構成を貼り付けます。
input {
beats {
port => 5443
type => syslog
ssl => true
ssl_certificate => "/etc/logstash/logstash.crt"
ssl_key => "/etc/logstash/logstash.key"
}
}
保存して終了します。
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" ]
}
}
}
' grokという名前のフィルタープラグインを使用します 'syslogファイルを解析します。
保存して終了します。
出力構成ファイル'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
sshアカウントを使用してrootとしてサーバーに接続します。
ssh [email protected]
scpコマンドを使用して証明書ファイルをクライアントにコピーします。
scp [email protected]:/etc/logstash/logstash.crt .
ホストファイルを編集し、elk-masterIPアドレスを追加します。
vim /etc/hosts
ファイルの最後に以下の構成を追加します。
10.0.15.10 elk-master
保存して終了します。
次に、elk-client1サーバーにエラスティックキーを追加する必要があります。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
httpsダウンロードトランスポートでエラスティックリポジトリを使用するため、パッケージ「apt-transport-https」をサーバーにインストールする必要があります。
sudo apt-get install -y apt-transport-https
Elasticリポジトリを追加し、すべてのUbuntuリポジトリを更新します。
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update
次に、aptコマンドを使用して「filebeat」をインストールします。
sudo apt-get install -y filebeat
次に、filebeat構成ディレクトリに移動し、vimを使用してファイル「filebeat.yml」を編集します。
cd /etc/filebeat/
vim filebeat.yml
パス構成の下に新しいログファイルを追加します。
paths:
- /var/log/auth.log
- /var/log/syslog
ドキュメントタイプを「syslog」に設定します。
document-type: syslog
行にコメントを追加して、elasticsearchの出力を無効にします。
#-------------------------- Elasticsearch output ------------------------------>
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
logstash出力を有効にし、構成のコメントを解除して、以下のように値を変更します。
output.logstash:
# The Logstash hosts
hosts: ["elk-master:5443"]
bulk_max_size: 2048
ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
保存して終了します。
証明書ファイルをfilebeatディレクトリに移動します。
mv ~/logstash.crt /etc/filebeat/
filebeatを起動し、起動時に実行するように追加します。
sudo systemctl start filebeat
sudo systemctl enable filebeat
サービスステータスを確認してください。
sudo systemctl status filebeat
Beatsはデータシッパーであり、クライアントノードにインストールしてクライアントマシンからLogstashまたはElasticsearchサーバーに大量のデータを送信できる軽量エージェントです。使用可能なビートは4つあり、「ログファイル」には「Filebeat」、「メトリック」には「Metricbeat」、「ネットワークデータ」には「Packetbeat」、Windowsクライアント「イベントログ」には「Winlogbeat」があります。
このチュートリアルでは、「Filebeat」をインストールして構成し、安全なSSL接続を介してログデータをlogstashサーバーに送信する方法を示します。
証明書ファイルをエラスティックサーバーからclient1サーバーにコピーします。 client1サーバーにログインします。
ssh [email protected]
scpコマンドを使用して証明書ファイルをコピーします。
scp [email protected]:/etc/logstash/logstash.crt .
TYPE elk-server password
hostsファイルを編集し、elk-masterサーバーアドレスを追加します。
vim /etc/hosts
elk-masterサーバーアドレスを追加します。
10.0.15.10 elk-master
保存して終了します。
次に、エラスティックキーをelk-client2サーバーにインポートします。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
サーバーにエラスティックリポジトリを追加します。
cd /etc/yum.repos.d/
vim elastic.repo
以下の設定を貼り付けてください。
[elastic-5.x]>
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
保存して終了します。
このyumコマンドを使用してfilebeatをインストールします。
sudo yum -y install filebeat
Filebeatがインストールされました。構成ディレクトリに移動し、ファイル「filebeat.yml」を編集します。
cd /etc/filebeat/
vim filebeat.yml
パスセクションの21行目に、いくつかの新しいログファイルを追加します。ここに2つのファイルを追加します。sshアクティビティの場合は「/ var / log / secure」、サーバーログの場合は「/ var / log/messages」です。
paths:
- /var/log/secure
- /var/log/messages
26行目に新しい構成を追加して、ファイルタイプを「syslog」に定義します。
document-type: syslog
デフォルトでは、filebeatはelasticsearchを出力として使用しています。このチュートリアルでは、logshtashに変更します。 83行目と85行目にコメントを追加してelasticsearchの出力を無効にします。
Elasticsearchの出力を無効にします。
#-------------------------- Elasticsearch output ------------------------------>
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
次に、新しいlogstash出力構成を追加し、logstash出力構成のコメントを解除して、すべての値を以下の構成に示されている値に変更します。
output.logstash:
# The Logstash hosts
hosts: ["elk-master:5443"]
bulk_max_size: 2048
ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
保存して終了します。
filebeatを追加して起動時に開始し、開始します。
sudo systemctl enable filebeat
sudo systemctl start filebeat
これで、filebeatログファイルをチェックして監視し、正しく実行されていることを確認できます。
tail -f /var/log/filebeat/filebeat
Webブラウザーを開き、nginx構成で構成したelasticスタックドメインにアクセスします。私の名前は「elk-stack.co」です。管理者ユーザー名とパスワードを入力し、Enterキーを押してKibanaダッシュボードにログインします。
>
新しいデフォルトのインデックスを作成します'filebeat-* 'をクリックし、'作成をクリックします '。
デフォルトのインデックスが作成されました。エラスティックスタックに複数のビートがある場合は、「スター」をクリックするだけでデフォルトのビートを構成できます。 'ボタン。
'検出に移動します 'そして、elk-client1およびelk-client2サーバーからのすべてのログファイルが表示されます。
無効なsshログインのelk-client1サーバーログからのJSON出力の例。
そして、Kibanaダッシュボードでできることはもっとたくさんあります。試してみてください!
ElasticStackはUbuntu16.04サーバーにインストールされており、filebeatはUbuntuおよびCentOSクライアントサーバーにインストールされています。