ログサーバーElasticsearch + Logstash + Kibana4 + Beats(windows / linux)。 インストールとセットアップ

LinuxとWindowsをベースにしたサーバーからのログの集中ストレージと処理の問題が発生しました。 私が選んだのは、Elasticの製品です。

Elasticアプリケーションのインストールについて読んだ記事のほとんどは、曖昧で不完全なように思えました。



私が使用した主な唯一の情報源: www.elastic.co/guide/index.html



このマニュアルは完全に網羅されているわけではありませんが、作業ログサーバーelasticsearch + logtash + kibana4 + beats(windows \ linux agents)の初期インストールと構成には十分です。



詳細情報、追加機能、および「本物のカンフー」は、 公式ドキュメントで入手できます



言葉から行為へ。



集めて接着します





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)バージョンをダウンロードします。



 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をダウンロードしてインストールします。



 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インデックスをサーバーにインストールします。



 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では、ファイルシステムに関する情報(ディスクステータス、空き容量など)も表示できます。



インストール(クライアント上):



 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)
以下に示すように、動的ファイルからサーバーに情報を送信します。



インストール:



 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と同じアナロジーで構成されます:



 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を実行し、サービスをインストールします。



 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 '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設定など)は、公式のドキュメントと設定に記載されています。




All Articles