FileBeat+ELKインストール

4243 ワード

一、概要
1、开発とテスト环境はログを见るのが少し面倒で、今1つのELKシステムを构筑してログを収集して、検索と统计を便利にします.毎日すべての開発、テストサーバーのログを合わせて200 Mぐらいで、データの正確性の要求はそんなに高くなくて、Logstash、Elasticsearch単ノードは十分です.
2、ELKは現在流行しているログ収集ソリューションであり、ELKはElasticsearch、Logstash、Kibanaの略称であり、この3つはコアキットであるが、すべてではない.
3、ダウンロード https://www.elastic.co/cn/products
4、FileBeat=>を選択 Logstash => Elasticsearch => Kibanaという案
5、以下の内容の経路とIPは実際の状況によって修正する.
二、設置及び起動
1、tarパッケージのインストールを採用し、バージョンfilebeat-6.5.1-linux-x 86_64.tar.gz、logstash-6.5.1.tar.gz、elasticsearch-6.5.1.tar.gz、kibana-6.5.1-linux-x86_64.tar.gz
2、elasticsearchは192.168.18.13の/home/esの下にインストールされ、プロファイルは./configフォルダの下にあり、elasticsearch.ymlはpath.data、path.logs、network.hostを一般的に修正すればよい
jvm.optionsは実際の状況に応じて変更され、他のいくつかのプロファイルは一般的にデフォルトで使用できます.
そして  ./elasticsearch-dを実行します.
注意:elasticsearchはrootで起動できません.useradd es,su es
起動はエラーが発生する可能性があります.プロファイルを変更する必要があります.https://blog.csdn.net/yjclsx/article/details/81302041
閉鎖elasticsearch kill-9(優雅な閉鎖方式は完備されている)
3、kibanaは192.168.18.13の/usr/local/kibanaの下にインストールされ、configフォルダの下のkibana.ymlを変更し、一般的にelasticsearch.urlのみを変更する.http://192.168.18.13:9200「それでいい.
kibanaとelasticsearchのsslの認証は開いていません
起動:nohup./bin/kibana&  
閉鎖:kill-9(優雅な立ち止まりサービスは完備されています)
3、logstashは192.168.18.13の /usr/local/logstashフォルダの下で、logstash-sample.conf、elasticsearch.hosts=192.168.18.13:9200を変更し、filter(ビジネスニーズに応じて)を追加します.
nohup./bin/logstashの起動   -f   ./config/logstash-sample.conf  &
注意:./bin/logstash  -t  ./config/logstash-sample.confはテストプロファイルで、デフォルトのプロファイルテスト時にエラーが表示されますが、起動できます(具体的な原因は調べていませんが、testに問題がある可能性があります)
date{match=>["timestamp","yyyy-MM-dd HH:mm:ss"]}を設定する必要があります. そうでなければ、8時間増加したデータが検出されます(タイムゾーンの理由で、タイムタイムスタンプフィールドはデフォルトで8時間増加します)
デルのビジネスニーズに合わせて修正  ./vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/java(以下、プロジェクトの実際の状況に応じた新規、修正)
新規:BTBS_LOG_LEVEL(INFO|DEBUG|ERROR|WARN|TRACE)新規:BTBS_TOMCAT_DATESTAMP %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}:?%{SECOND}新規:BTBS_TOMCATLOG %{BTBS_TOMCAT_DATESTAMP:btbs_timestamp} %{BTBS_LOG_LEVEL:level}
ピット:timestamp(btbs_timestamp)は使用できません.timestampはシステムのデフォルトのフィールドです.構成後は正則が有効にならない可能性があります.
Multiline機能filebeatは既にあり、logstashはプラグインをインストールする必要はありません.
4、filebeatはログを収集する必要がある各マシンにインストールし、統一的に:/work/filebeatにインストールし、修正する filebeat.yml 
filebeat.inputs.enabled: true、filebeat.inputs.enabled.paths: -/var/log/btbs/*/main.log 、multiline.pattern: ^[^\d] 、multiline.match: after
コメント output.elasticsearch関連構成
開く  output.logstash:hosts: ["192.168.18.13:5044"]
filebeatとlogstashのssl認証が開かれていません
起動:nohup./filebeat-e-c filebeat.yml&
閉じる:kill-9 (優雅な立ち止まりサービスは完備されています)
5、 elasticsearchはイントラネットにインストールされているため、パブリックネットワークサーバにアクセスできず、パブリックネットワークが非固定IPである(elasticsearchがパブリックネットワークにある場合、これは気にしない)
ポートマッピングを追加します.パブリックネットワークの5044ポートを192.168.13の5044ポートにマッピング
192.168.18.10に/home/work/task/filebeat-config-task.shを追加し、crontabタイミングタスクに追加し、5分ごとに実行します.このスクリプトは、パブリックネットワークIPが変更されたかどうかを判断し、変更された場合はリモートの/work/filebeat/start-filebeat.shスクリプトを実行します.
各filebeatノードの/work/filebeat/で追加 start-filebeat.sh
192.168.18.10のjnekinsにタスクstart-one-filebeatを追加し、リモートの/work/filebeat/start-filebeat.shスクリプトを手動で実行できます.
filebeat-config-task.sh
#!/bin/bash

remote_ip_arr=("100.137.151.11" "135.110.67.67")

myip=$(wget -qO - ifconfig.co)

ipconfig="$(cat /home/es/task/ip-address.conf)"

last_ip="${ipconfig[0]}"


if [ "$last_ip" != "$myip" ]
then
  remote_shell='/work/filebeat/start-filebeat.sh '$myip

  for remote_ip in ${remote_ip_arr[@]}
  do
    ssh root@${remote_ip} $remote_shell
  done

  echo "$myip" > /home/es/task/ip-address.conf
else
 echo 'same ip'
fi

start-filebeat.sh
#!/bin/bash

ip_address=$1

param="output.logstash.hosts=["$ip_address:5044"]"

pid=$(ps -ef|grep 'filebeat -e'|grep -v 'grep'|awk '{print $2}')

echo $pid

if [ -n "$pid" ]; then 
    kill -9 $pid
    sleep 1
fi

cd /work/filebeat/
echo "$param"

nohup ./filebeat -e -E "$param" >/dev/null 2>&1 &