Elasticsearch は、Javaで開発されたLuceneベースのオープンソース検索エンジンです。分散型およびマルチテナント型の全文検索エンジンにHTTPダッシュボードWebインターフェイス(Kibana)を提供します。データは、JSONドキュメントスキームを使用してクエリ、取得、および保存されます。 Elasticsearchは、ログファイルを含むすべての種類のテキストドキュメントを検索するために使用できるスケーラブルな検索エンジンです。 Elasticsearchは、「ElasticStack」またはELKスタックの心臓部です。
ログスタッシュ イベントとログを管理するためのオープンソースツールです。データ収集のためのリアルタイムのパイプライン化を提供します。 Logstashはログデータを収集し、データをJSONドキュメントに変換して、Elasticsearchに保存します。
キバナ Elasticsearch用のオープンソースのデータ視覚化ツールです。 Kibanaは、美しいダッシュボードWebインターフェイスを提供します。 Elasticsearchからのデータを管理および視覚化することができます。美しいだけでなく、パワフルです。
このチュートリアルでは、サーバーログを監視するためにCentOS7サーバーにElasticStackをインストールして構成する方法を示します。次に、CentOS7およびUbuntu16.04クライアントオペレーティングシステムに「Elasticbeats」をインストールする方法を説明します。
前提条件
- 4GBのRAMを搭載したCentOS764ビット-elk-master
- CentOS764ビットと1GBのRAM-client1
- Ubuntu16.0464ビットと1GBのRAM-client2
このチュートリアルでは、CentOS7サーバーでSELinuxを無効にします。 SELinux構成ファイルを編集します。
vim /etc/sysconfig/selinux
SELinuxの値を強制から無効に変更します。
SELINUX=disabled
次に、サーバーを再起動します。
reboot
サーバーに再度ログインして、SELinuxの状態を確認します。
getenforce
結果が無効になっていることを確認してください。
ElasticスタックのデプロイメントにはJavaが必要です。 ElasticsearchにはJava8が必要であり、OracleJDK1.8を使用することをお勧めします。公式のOraclerpmパッケージからJava8をインストールします。
wgetコマンドを使用してJava8JDKをダウンロードします。
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"
次に、このrpmコマンドを使用してインストールします;
rpm -ivh jdk-8u77-linux-x64.rpm
最後に、Java JDKのバージョンをチェックして、正しく機能していることを確認します。
java -version
サーバーのJavaバージョンが表示されます。
このステップでは、Elasticsearchをインストールして構成します。 Elastic.coが提供するrpmパッケージからElasticsearchをインストールし、ローカルホストで実行するように構成します(セットアップを安全にし、外部からアクセスできないようにするため)。
Elasticsearchをインストールする前に、elastic.coキーをサーバーに追加してください。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
次に、Elasticsearch5.1をwgetでダウンロードしてインストールします。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm
Elasticsearchがインストールされています。次に、構成ディレクトリに移動して、elasticsaerch.yml構成ファイルを編集します。
cd /etc/elasticsearch/
vim elasticsearch.yml
40行目のコメントを削除して、Elasticsearchのメモリロックを有効にします。これにより、Elasticsearchのメモリスワッピングが無効になります。
bootstrap.memory_lock: true
'Network'ブロックで、network.host行とhttp.port行のコメントを解除します。
network.host: localhost
http.port: 9200
ファイルを保存してエディタを終了します。
次に、メモリロック構成のelasticsearch.serviceファイルを編集します。
vim /usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK行のコメントを外します。
LimitMEMLOCK=infinity
保存して終了します。
Elasticsearchのsysconfig構成ファイルを編集します。
vim /etc/sysconfig/elasticsearch
行60のコメントを解除し、値が「無制限」であることを確認します。
MAX_LOCKED_MEMORY=unlimited
保存して終了します。
Elasticsearchの設定が終了しました。 Elasticsearchはポート9200のローカルホストIPアドレスで実行されます。CentOSサーバーでmlockallを有効にすることで、メモリスワッピングを無効にしました。
systemdをリロードし、Elasticsearchが起動時に開始できるようにしてから、サービスを開始します。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Eelasticsearchが開始するまで少し待ってから、サーバーで開いているポートを確認し、ポート9200の「state」が「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アプリケーションのリバースプロキシとして機能します。
wgetを使用してKibana5.1をダウンロードし、rpmコマンドを使用してインストールします。
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm
次に、Kibana構成ファイルを編集します。
vim /etc/kibana/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は、ノードアプリケーションとしてポート5601で実行されます。
netstat -plntu
Kibanaのインストールが完了しました。次に、Nginxをインストールし、パブリックIPアドレスからKibanaにアクセスできるようにリバースプロキシとして構成する必要があります。
NginxはEpelリポジトリで利用できます。yumを使用してepel-releaseをインストールしてください。
yum -y install epel-release
次に、Nginxとhttpd-toolsパッケージをインストールします。
yum -y install nginx httpd-tools
httpd-toolsパッケージには、Webサーバー用のツールが含まれています。Kibanaにはhtpasswd基本認証を使用します。
Nginx構成ファイルを編集し、'サーバー{}を削除します 'ブロックするので、新しい仮想ホスト構成を追加できます。
cd /etc/nginx/
vim nginx.conf
サーバー{}ブロックを削除します。
ファイルを保存してvimを終了します。
次に、conf.dディレクトリに新しい仮想ホスト構成ファイルを作成する必要があります。 vimで新しいファイル「kibana.conf」を作成します。
vim /etc/nginx/conf.d/kibana.conf
以下の設定を貼り付けてください。
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;
}
}
保存して終了します。
次に、htpasswdコマンドを使用して新しい基本認証ファイルを作成します。
sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD
Nginx構成をテストし、エラーがないことを確認します。次に、起動時に実行するNginxを追加し、Nginxを起動します。
nginx -t
systemctl enable nginx
systemctl start nginx
このステップでは、Logsatashをインストールし、filebeatを使用してクライアントからのサーバーログを一元化するように構成し、Syslogデータをフィルタリングして変換し、スタッシュに移動します(Elasticsearch)。
Logstashをダウンロードし、rpmでインストールします。
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm
クライアントがエラスティックサーバーを識別できるように、新しいSSL証明書ファイルを生成します。
tlsディレクトリに移動し、openssl.cnfファイルを編集します。
cd /etc/pki/tls
vim openssl.cnf
サーバーIDの「[v3_ca]」セクションに新しい行を追加します。
[ v3_ca ]
# Server IP Address
subjectAltName = IP: 10.0.15.10
保存して終了します。
opensslコマンドを使用して証明書ファイルを生成します。
openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt
証明書ファイルは、「/ etc / pki / tls /certs/」および「/etc/ pki / tls /private/」ディレクトリにあります。
次に、Logstashの新しい構成ファイルを作成します。新しい「filebeat-input.conf」ファイルを作成してfilebeatのログソースを構成し、次に「syslog-filter.conf」ファイルを作成してsyslog処理を行い、「output-elasticsearch.conf」ファイルを作成してElasticsearchの出力を定義します。
logstash構成ディレクトリに移動し、「conf.d」サブディレクトリに新しい構成ファイルを作成します。
cd /etc/logstash/
vim conf.d/filebeat-input.conf
入力構成:以下の構成を貼り付けます。
input {
beats {
port => 5443
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.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
Beatsはデータシッパーであり、クライアントノードにインストールしてクライアントマシンからLogstashまたはElasticsearchサーバーに大量のデータを送信できる軽量エージェントです。使用可能なビートは4つあり、「ログファイル」には「Filebeat」、「メトリック」には「Metricbeat」、「ネットワークデータ」には「Packetbeat」、Windowsクライアント「イベントログ」には「Winlogbeat」があります。
このチュートリアルでは、SSL接続を介してデータログファイルをLogstashサーバーに転送するように「Filebeat」をインストールおよび構成する方法を示します。
client1サーバーにログインします。次に、証明書ファイルをエラスティックサーバーからclient1サーバーにコピーします。
ssh [email protected]
scpコマンドを使用して証明書ファイルをコピーします。
scp [email protected]:~/logstash-forwarder.crt .
TYPE elk-server password
新しいディレクトリを作成し、証明書ファイルをそのディレクトリに移動します。
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
次に、client1サーバーにエラスティックキーをインポートします。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Filebeatをダウンロードし、rpmでインストールします。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm
Filebeatがインストールされたら、構成ディレクトリに移動して、ファイル「filebeat.yml」を編集します。
cd /etc/filebeat/
vim filebeat.yml
21行目のパスセクションで、新しいログファイルを追加します。 sshアクティビティ用に「/var/ log / secure」、サーバーログ用に「/ var / log/messages」の2つのファイルを追加します。
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: ["10.0.15.10:5443"]
bulk_max_size: 1024
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
ファイルを保存してvimを終了します。
Filebeatを追加して起動時に開始し、開始します。
sudo systemctl enable filebeat
sudo systemctl start filebeat
sshでサーバーに接続します。
ssh [email protected]
scpコマンドを使用して証明書ファイルをクライアントにコピーします。
scp [email protected]:~/logstash-forwarder.crt .
証明書ファイル用の新しいディレクトリを作成し、ファイルをそのディレクトリに移動します。
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
サーバーにエラスティックキーを追加します。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Filebeat .debパッケージをダウンロードし、dpkgコマンドを使用してインストールします。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb
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: ["10.0.15.10:5443"]
bulk_max_size: 1024
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
template.name: "filebeat"
template.path: "filebeat.template.json"
template.overwrite: false
ファイルを保存してvimを終了します。
Filebeatを追加して起動時に開始し、開始します。
sudo systemctl enable filebeat
sudo systemctl start filebeat
サービスステータスを確認してください。
systemctl status filebeat
ウェブブラウザを開き、Nginx構成で使用したElasticStackドメインにアクセスします。私のものは「elk-stack.co」です。パスワードを使用して管理者ユーザーとしてログインし、Enterキーを押してKibanaダッシュボードにログインします。
新しいデフォルトのインデックス「filebeat-*」を作成し、「作成」ボタンをクリックします。
デフォルトのインデックスが作成されました。エラスティックスタックに複数のビートがある場合は、[スター]ボタンを1回クリックするだけでデフォルトのビートを構成できます。
'検出に移動します 'メニューをクリックすると、elk-client1およびelk-client2サーバーからのすべてのログファイルが表示されます。
無効なsshログインのelk-client1サーバーログからのJSON出力の例。
そして、Kibanaダッシュボードでできることよりもはるかに多くのことがあります。利用可能なオプションを試してみてください。
ElasticStackがCentOS7サーバーにインストールされました。 FilebeatはCentOS7とUbuntuクライアントにインストールされています。