Elasticアプリケーションのインストールについて読んだ記事のほとんどは、曖昧で不完全なように思えました。
私が使用した主な唯一の情報源: www.elastic.co/guide/index.html
このマニュアルは完全に網羅されているわけではありませんが、作業ログサーバーelasticsearch + logtash + kibana4 + beats(windows \ linux agents)の初期インストールと構成には十分です。
詳細情報、追加機能、および「本物のカンフー」は、 公式ドキュメントで入手できます 。
言葉から行為へ。
集めて接着します
- Logstash-2.2.0-受信ログの処理
- Elasticsearch-2.2.0-ログストレージ
- Kibana-4.2.2-ウェブベースのインターフェース
- Topbeat 1.1.0 -Linuxシステムインフラストラクチャデータの取得
- Filebeat 1.1.0-リアルタイムLinuxシステムでログを表示する
- Packetbeat 1.1.0 -Linuxシステムのネットワーク内のパケットデータの分析
- Winlogbeat 1.1.0 -Windowsシステムログの分析。
- オペレーティングシステム-Ubuntu Server 14.04(信頼できる)x86_x64
Ubuntu Serverのインストールについては説明しません。これについては、ネットワーク上で包括的な情報を入手できます 。
準備する
更新された:
sudo apt-get update && apt-get upgrade
ホストとホスト名の編集:
sudo vi /etc/hosts
127.0.0.1 localhost 10.0.10.33 elk-server.ss.lu elk-server
sudo echo “elk-server.ss.lu” > /etc/hostname sudo service hostname restart && /etc/init.d/networking restart
Java 8をインストールします。
sudo add-apt-repository -y ppa:webupd8team/java sudo apt-get update sudo apt-get -y install oracle-java8-installer
パッケージをパッケージ化するために必要なカタログを作成します。
sudo mkdir -p ~/ELK/releases/beats/filebeat/ sudo mkdir -p ~/ELK/releases/beats/packetbeat/ sudo mkdir -p ~/ELK/releases/beats/topbeat/ sudo mkdir -p ~/ELK/releases/beats/winlogbeat
Elasticsearchをインストールします。
Webサイトwww.elastic.co/downloads/elasticsearchにアクセスし、現在の(2.2.0)バージョンをダウンロードします。
インストール:
構成/etc/elasticsearch/elasticsearch.ymlを編集します。
cluster.nameとnode.nameのドレインのコメントを外して編集します。
(「elk-server.ss.lu」と「mynodename」の代わりに、値を挿入できます)
次のようになります。
スタートアップに追加:
以下を開始します。
私たちはチェックします:
正しい結論:
sudo cd ~/ELK/releases/ sudo wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.2.0/elasticsearch-2.2.0.deb
インストール:
sudo dpkg –i elasticsearch-2.2.0.deb
構成/etc/elasticsearch/elasticsearch.ymlを編集します。
cluster.nameとnode.nameのドレインのコメントを外して編集します。
sudo sed -i "s|# cluster.name: my-application|cluster.name: elk-server.ss.lu|" /etc/elasticsearch/elasticsearch.yml sudo sed -i "s|# node.name: node-1| node.name: mynodename|" /etc/elasticsearch/elasticsearch.yml
(「elk-server.ss.lu」と「mynodename」の代わりに、値を挿入できます)
次のようになります。
cluster.name: elk-server.ss.lu
node.name: mynodename
スタートアップに追加:
sudo update-rc.d elasticsearch defaults 95 10
以下を開始します。
sudo /etc/init.d/elasticsearch start
私たちはチェックします:
sudo curl http://localhost:9200
正しい結論:
{ "name" : "qq", "cluster_name" : "elk-server.qq.qu", "version" : { "number" : "2.2.0", "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe", "build_timestamp" : "2016-01-27T13:32:39Z", "build_snapshot" : false, "lucene_version" : "5.4.1" }, "tagline" : "You Know, for Search"
Logstashをインストールします。
Logstashの最新(2.2.0)バージョンwww.elastic.co/downloads/logstashをダウンロードしてインストールします。
「ビット」用のINPUTファイルを作成します...
...そしてそこにコードをコピーします:
これは、logstashがポート5044のリッスンを開始することを意味します。このポートはこのバージョンのデフォルトであり、デフォルトでビット単位で登録されます。 他に尋ねることができます。
OUTPUTファイルを作成する...
...そこにコードをコピーしてelasticsearchと通信します。
エラーの構成を確認し、実行して、自動実行に追加します。
ポートを確認してください:
成功例:
sudo cd ~/ELK/releases/ sudo wget https://download.elastic.co/logstash/logstash/packages/debian/logstash_2.2.0-1_all.deb sudo dpkg –i logstash_2.2.0-1_all.deb
「ビット」用のINPUTファイルを作成します...
sudo vi /etc/logstash/conf.d/input-beats.conf
...そしてそこにコードをコピーします:
input { beats { port => 5044 } }
これは、logstashがポート5044のリッスンを開始することを意味します。このポートはこのバージョンのデフォルトであり、デフォルトでビット単位で登録されます。 他に尋ねることができます。
OUTPUTファイルを作成する...
sudo vi /etc/logstash/conf.d/output-elasticsearch.conf
...そこにコードをコピーしてelasticsearchと通信します。
output { elasticsearch { hosts => ["localhost:9200"] sniffing => true manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
エラーの構成を確認し、実行して、自動実行に追加します。
sudo service logstash configtest sudo service logstash restart sudo update-rc.d logstash defaults 96 9
ポートを確認してください:
netstat -a | grep 5044
成功例:
tcp6 0 0 [::]:5044 [::]:* LISTEN
Kibanaをインストールする
公開鍵をダウンロードしてインストールします。
リポジトリを追加:
リポジトリを更新してインストールします。
以下を開始します。
接続します:
最初のインデックスを作成するよう求められますが、今のところはすべてをそのままにして、クライアントのセットアップに進みます。
sudo wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
リポジトリを追加:
sudo echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list
リポジトリを更新してインストールします。
sudo apt-get update && sudo apt-get install kibana
sudo update-rc.d kibana defaults 95 10
以下を開始します。
sudo service kibana start
接続します:
http://ip_elk-server.ss.lu:5601

最初のインデックスを作成するよう求められますが、今のところはすべてをそのままにして、クライアントのセットアップに進みます。
ビート
私たちは顧客を置きます。 開始するには、いくつかの既製のKibanaダッシュボードをダウンロードして、Beatsインデックスをサーバーにインストールします。
Webにアクセスします。
そして、Beatsインデックスを備えたKibanaダッシュボードが追加されたことがわかります。
cd ~/ELK/releases/beats/ sudo curl -L -O http://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip sudo unzip beats-dashboards-1.1.0.zip cd beats-dashboards-1.1.0/ ./load.sh
Webにアクセスします。
http://ip_elk-server.ss.lu:5601
そして、Beatsインデックスを備えたKibanaダッシュボードが追加されたことがわかります。

Topbeat 1.1.0(Linux)
サーバーインフラストラクチャデータの取得。
プロセッサ、メモリ使用量に関する情報を送信します。 各プロセスについて、親、pid、ステータスなどに関する情報が表示されます。 Topbeatでは、ファイルシステムに関する情報(ディスクステータス、空き容量など)も表示できます。
インストール(クライアント上):
Elasticsearchが入力情報を正しく分析できるように、サーバーにTopbeatインデックステンプレートを追加する必要があります。
ダウンロードが成功すると、次のように表示されます。
topbeat.template.jsonファイルは、Topbeatのインストール時に作成され、デフォルトの場所は/etc/topbeat/topbeat.template.jsonです。 したがって、何らかの理由でELKサーバーにBeatsクライアントをインストールしない場合、このテンプレートをクライアントからサーバーにコピーするか、このファイルをサーバーに作成してその内容を(クライアントから)コピーする必要があります。 そして、それをダウンロードしますcurl -XPUT 'server_server_elk_address:9200 / _template / topbeat' -d@/PATH/topbeat.template.json
ただし、ビットはサーバーにインストールされ、次の場所/etc/topbeat/topbeat.template.jsonがあると想定しています。
構成を編集します(クライアント上):
出力ブロックでは、logstashを使用するため、elasticsearchの呼び出しについてコメントする必要があります。
Logstashでブロックのコメントを解除し、IPアドレスとポートを指定します。
重要:設定内でカーソルを移動するためにタブを使用しないでください! スペースのみ。 そうでない場合、エラーが発生します。
Logstashサーバーが外部ネットワークにある場合、リモートサーバーのファイアウォール(この場合は5044(tcp / udp))で転送サーバーポートを構成する必要があります。
追加のログオプションは、構成で詳しく説明されています。
サービスを開始します。
Kibanaインターフェースを開き、着信情報を確認します。
プロセッサ、メモリ使用量に関する情報を送信します。 各プロセスについて、親、pid、ステータスなどに関する情報が表示されます。 Topbeatでは、ファイルシステムに関する情報(ディスクステータス、空き容量など)も表示できます。
インストール(クライアント上):
cd ~/ELK/releases/beats/topbeat/ sudo curl -L -O https://download.elastic.co/beats/topbeat/topbeat_1.1.0_amd64.deb sudo dpkg -i topbeat_1.1.0_amd64.deb
Elasticsearchが入力情報を正しく分析できるように、サーバーにTopbeatインデックステンプレートを追加する必要があります。
sudo curl -XPUT 'http://localhost:9200/_template/topbeat' -d@/etc/topbeat/topbeat.template.json
ダウンロードが成功すると、次のように表示されます。
{"acknowledged":true}
topbeat.template.jsonファイルは、Topbeatのインストール時に作成され、デフォルトの場所は/etc/topbeat/topbeat.template.jsonです。 したがって、何らかの理由でELKサーバーにBeatsクライアントをインストールしない場合、このテンプレートをクライアントからサーバーにコピーするか、このファイルをサーバーに作成してその内容を(クライアントから)コピーする必要があります。 そして、それをダウンロードしますcurl -XPUT 'server_server_elk_address:9200 / _template / topbeat' -d@/PATH/topbeat.template.json
ただし、ビットはサーバーにインストールされ、次の場所/etc/topbeat/topbeat.template.jsonがあると想定しています。
構成を編集します(クライアント上):
sudo vi /etc/topbeat/topbeat.yml
出力ブロックでは、logstashを使用するため、elasticsearchの呼び出しについてコメントする必要があります。
### Elasticsearch as output #elasticsearch: #hosts: ["localhost:9200"]
Logstashでブロックのコメントを解除し、IPアドレスとポートを指定します。
logstash: hosts: ["ip_elk-server.ss.lu:5044"]
重要:設定内でカーソルを移動するためにタブを使用しないでください! スペースのみ。 そうでない場合、エラーが発生します。
Loading config file error: YAML config parsing failed on /etc/topbeat /topbeat.yml: yaml: line 14: found character that cannot start any token. Exiting.
Logstashサーバーが外部ネットワークにある場合、リモートサーバーのファイアウォール(この場合は5044(tcp / udp))で転送サーバーポートを構成する必要があります。
追加のログオプションは、構成で詳しく説明されています。
サービスを開始します。
sudo /etc/ini.d/topbeat start
Kibanaインターフェースを開き、着信情報を確認します。

Filebeat 1.1.0(LINUX)
以下に示すように、動的ファイルからサーバーに情報を送信します。
インストール:
サーバーにインデックスを追加します(Topbeatの構成と同様です。つまり、サーバーにテンプレートがない場合は作成します)。
設定を開きます:
どのファイルから情報を収集するかを指定します(デフォルトでは、/ var / logの拡張子が.logのすべてのファイルがインストールされます)。
このクライアントで必要なものを示します。例えば:
コードにタブがないことを忘れないでください!
また、logstashを使用してインデックスを処理します。
実行:
Filebeatの情報を確認します。
インストール:
cd ~/ELK/releases/beats/filebeat/ sudo curl -L -O https://download.elastic.co/beats/filebeat/filebeat_1.1.0_amd64.deb sudo dpkg -i filebeat_1.1.0_amd64.deb
サーバーにインデックスを追加します(Topbeatの構成と同様です。つまり、サーバーにテンプレートがない場合は作成します)。
sudo curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@/etc/filebeat/filebeat.template.json
設定を開きます:
sudo vi /etc/filebeat/filebeat.yml
どのファイルから情報を収集するかを指定します(デフォルトでは、/ var / logの拡張子が.logのすべてのファイルがインストールされます)。
prospectors: paths: - /var/log/*.log
このクライアントで必要なものを示します。例えば:
paths: # - /var/log/*.log - /var/log/elasticsearch/*.log - /var/log/syslog - /var/log/nginx/*.log # - c:\programdata\elasticsearch\logs\*
コードにタブがないことを忘れないでください!
また、logstashを使用してインデックスを処理します。
### Elasticsearch as output #elasticsearch: # Array of hosts to connect to. # Scheme and port can be left out and will be set to the default (http and 9200) # In case you specify and additional path, the scheme is required: http://localhost:9200/path # IPv6 addresses should always be defined as: https://[2001:db8::1]:9200 #hosts: ["localhost:9200"] ... ### Logstash as output logstash: # The Logstash hosts hosts: ["ip_elk-server.ss.lu:5044"]
実行:
sudo /etc/init.d/filebeat start
Filebeatの情報を確認します。

Packetbeat 1.1.0(Linux)
非常に便利なツール。 サーバー間のトラフィックを分析します。 エラーを即座に識別します。 DNS、HTTP、MySQL、PostgreSQL、GLC、Memcacheなどのプロトコルを分析します。
Topbeat / Filebeatと同じアナロジーで構成されます:
kofigを編集します(Elasticsearchについてコメントし、Logstashを構成します)
出力:
サーバーにアクセスして、Packetbeatのインデックスを追加します。
以下を開始します。
Topbeat / Filebeatと同じアナロジーで構成されます:
sudo apt-get install libpcap0.8 sudo curl -L -O https://download.elastic.co/beats/packetbeat/packetbeat_1.1.0_amd64.deb sudo dpkg -i packetbeat_1.1.0_amd64.deb
kofigを編集します(Elasticsearchについてコメントし、Logstashを構成します)
出力:
#elasticsearch: #hosts: ["localhost:9200"] logstash: hosts: ["ip_elk-server.ss.lu:5044""]
サーバーにアクセスして、Packetbeatのインデックスを追加します。
sudo curl -XPUT 'http://localhost:9200/_template/packetbeat' -d@/etc/packetbeat/packetbeat.template.json
以下を開始します。
sudo /etc/ini.d/packetbeat start
Winlogbeat(Windows)
www.elastic.co/downloads/beats/winlogbeatをダウンロードします 。 C:\に展開し、Winlogbeatに名前を変更します。 管理者からPowerShellを実行し、サービスをインストールします。
システムでスクリプトがデフォルトで無効になっていることを示すメッセージが表示された場合(および無効になります)、Winlogbeatのポリシーを作成します。
サービスを開始する前に、設定を編集します-C:\ Winlogbeat \ winlogbeat.yml。
event_logsブロックには、Logstashに転送する必要があるメインシステムログがリストされます。
他のログはevent_logsに追加できます。そのリストは次のように表示できます。
システムがVistaよりも高い場合、チャネルを指定できます。
次に、toplog、filebeat、packetbeatの場合と同様に、winlogbeatのインデックスをサーバーにアップロードする必要があります。 これはリモートで実行できます。
この方法には問題があるため、次のことができます。
サーバーにwinlogbeat.template.jsonインデックスファイルを作成します。
sudo vi〜/ ELK / releases / beats / winlogbeat / winlogbeat.template.json。 Windowsクライアントで、ファイルC:\ winlogbeat \ winlogbeat.template.jsonを開き 、その内容を〜/ ELK / releases / beats / winlogbeat / winlogbeat.template.jsonファイルにコピーします。
次に(サーバー上で)このインデックスをelasticsearchにロードして、情報を正しく分析し、通常の形式で提供できるようにします。
winlogbeat.template.jsonファイルを作成したディレクトリに移動します。
出力は次のようになります。
クライアントにアクセスして、winlogbeatサービスを開始します。 その後、Kibanaを介してデータの監視を開始し、読み込まれたインデックスによって表示を決定します。
ダッシュボードを見ます:
PS C:\Users\Administrator> cd 'C:\Winlogbeat' PS C:\Winlogbeat> .\install-service-winlogbeat.ps1
システムでスクリプトがデフォルトで無効になっていることを示すメッセージが表示された場合(および無効になります)、Winlogbeatのポリシーを作成します。
PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-winlogbeat.ps1
Security warning Run only scripts that you trust. While scripts from the internet can be useful, this script can potentially harm your computer. If you trust this script, use the Unblock-File cmdlet to allow the script to run without this warning message. Do you want to run C:\Program Files\Winlogbeat\install-service-winlogbeat.ps1? [D] Do not run [R] Run once [S] Suspend [?] Help (default is "D"): R Status Name DisplayName ------ ---- ----------- Stopped winlogbeat winlogbeat
サービスを開始する前に、設定を編集します-C:\ Winlogbeat \ winlogbeat.yml。
output: #elasticsearch: # hosts: localhost:9200 logstash: hosts: ["ip_elk-server.ss.lu:5044"]
event_logsブロックには、Logstashに転送する必要があるメインシステムログがリストされます。
winlogbeat: registry_file: C:/ProgramData/winlogbeat/.winlogbeat.yml event_logs: - name: Application - name: Security - name: System logging: to_files: true files: path: C:/winlogbeat/winlogbeat/Logs level: info
他のログはevent_logsに追加できます。そのリストは次のように表示できます。
PS C:\Users\Administrator> Get-EventLog *
システムがVistaよりも高い場合、チャネルを指定できます。
PS C:\Users\Administrator> Get-WinEvent -ListLog * | Format-List -Property LogName
次に、toplog、filebeat、packetbeatの場合と同様に、winlogbeatのインデックスをサーバーにアップロードする必要があります。 これはリモートで実行できます。
PS C:\Winlogbeat> Invoke-WebRequest -Method Put -InFile winlogbeat.template.json -Uri http://IP_address_elk-server:9200/_template/winlogbeat?pretty
この方法には問題があるため、次のことができます。
サーバーにwinlogbeat.template.jsonインデックスファイルを作成します。
sudo vi〜/ ELK / releases / beats / winlogbeat / winlogbeat.template.json。 Windowsクライアントで、ファイルC:\ winlogbeat \ winlogbeat.template.jsonを開き 、その内容を〜/ ELK / releases / beats / winlogbeat / winlogbeat.template.jsonファイルにコピーします。
{ "mappings": { "_default_": { "_all": { "enabled": true, "norms": { "enabled": false } }, "dynamic_templates": [ { "template1": { "mapping": { "doc_values": true, "ignore_above": 1024, "index": "not_analyzed", "type": "{dynamic_type}" }, "match": "*" } } ], "properties": { "@timestamp": { "type": "date" }, "message": { "index": "analyzed", "type": "string" } } } }, "settings": { "index.refresh_interval": "5s" }, "template": "winlogbeat-*" }
次に(サーバー上で)このインデックスをelasticsearchにロードして、情報を正しく分析し、通常の形式で提供できるようにします。
winlogbeat.template.jsonファイルを作成したディレクトリに移動します。
cd ~/ELK/releases/beats/winlogbeat ll 12 drwxr-xr-x 2 root root 4096 . 8 23:10 ./ drwxr-xr-x 7 root root 4096 . 8 16:00 ../ -rw-r--r-- 1 root root 729 . 8 23:10 winlogbeat.template.json # sudo curl -XPUT 'http://localhost:9200/_template/winlogbeat' -d@winlogbeat.template.json
出力は次のようになります。
{"acknowledged":true}
クライアントにアクセスして、winlogbeatサービスを開始します。 その後、Kibanaを介してデータの監視を開始し、読み込まれたインデックスによって表示を決定します。

ダッシュボードを見ます:

Idexeとログ
インデックスを表示:
すべてのインデックスの削除:
*の代わりに、たとえば次のような好ましくないインデックスを指定できます。
curl -XDELETE 'localhost:9200 / winlogbeat-2016.02.10'
古いログを削除するには、「Python」モジュールをインストールする必要があります。
pipがインストールされていない場合、インストールします:
Cronを構成します。
ノードの表示:
Elasticsearchのステータスを確認します。
それだけです
これは、本格的なログサーバーを実行し、トランスポーターをクライアントに分散させ、原則を理解するのに十分です。
追加の設定(最適化、geoip設定など)は、公式のドキュメントと設定に記載されています。
curl 'localhost:9200/_cat/indices?v'
すべてのインデックスの削除:
curl -XDELETE 'localhost:9200/*'
*の代わりに、たとえば次のような好ましくないインデックスを指定できます。
curl -XDELETE 'localhost:9200 / winlogbeat-2016.02.10'
古いログを削除するには、「Python」モジュールをインストールする必要があります。
pip install elasticsearch-curator
pipがインストールされていない場合、インストールします:
apt-get install python-pip
Cronを構成します。
crontab -e
# 5 : 20 0 20 0 * * * root /usr/local/bin/curator --host localhost delete --disk-space 5 >/dev/null # , , 30 : 20 0 * * * root /usr/local/bin/curator --host localhost delete --older-than 30 >/dev/null
ノードの表示:
curl 'localhost:9200/_cat/nodes?v'
Elasticsearchのステータスを確認します。
curl 'localhost:9200/_cat/health?v'
それだけです
これは、本格的なログサーバーを実行し、トランスポーターをクライアントに分散させ、原則を理解するのに十分です。
追加の設定(最適化、geoip設定など)は、公式のドキュメントと設定に記載されています。