DockerインストールElasticsearch+kibana+filebeat(7.3.1)
6787 ワード
elkについての紹介はこちらではあまり言いませんが、前に紹介したことがあります.私のこの文章は現在の私たちの会社の業務量が大きくない状況に対応するために構築されたログ収集システムです.
公式サイトhttps://www.elastic.co
dockerをインストールします.ここでは言いません.
公式サイトからelasticsearchミラーを引く
[root@devon ~]# docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.1
[root@devon ~]# docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"docker.elastic.co/elasticsearch/elasticsearch:7.3.1
kibanaミラーを引く
[root@devon ~]# docker pull docker.elastic.co/kibana/kibana:7.3.1
開始
[root@devon ~]# docker run --name kibana -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.10.8:9200 kibana:7.3.1
[root@devon ~]# docker run --name kibana -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.10.8:9200 kibana:7.3.10e07e9d646fe3e0786e434d2b97a813dac9c17cbd2ea664e0e5151dc4c4d4417[root@devon ~]# docker ps -a
アクセスkibana IP+5601
次にfilebeatを利用してログを収集しましょう
[root@devon ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz
[root@devon ~]# tar -zxf filebeat-6.2.4-linux-x86_64.tar.gz -C/data/
[root@devon ~]# mv/data/filebeat-6.2.4-linux-x86_64//data/filebeat-6.2.4
[root@devon ~]# vim/data/filebeat-6.2.4/filebeat.yml
どのようにfilebeatを利用して複数のインデックスを設定して、ログを検索するのに便利ですか?私はカスタムfilebeatを選択します.ymlファイル
以下は私が簡単に収集した3つのJavaサービスのログです.デフォルトテンプレートを変更することもできます.logstashがインストールされている場合、フォーマットを変更する必要があります.分析ログのフォーマットは一般的に開発されます.彼らは特殊な要求フォーマットがあれば、他のフォーマットもjsonフォーマットファイルや他のフォーマットです.
filebeat.ymlはfilebeatのプライマリプロファイルです
ファイルを開き、multilineを検索します.デフォルトはコメントで、一般的には次の3つの構成があります.
時間形式で始まる行を前の行の末尾にマージしない(正則が悪いので無視)
pattern:正規表現
negate:trueまたはfalse;デフォルトはfalseで、patternに一致する行が前の行にマージされます.true、patternに一致しない行を前の行にマージ
match:afterまたはbefore、前の行の末尾または先頭にマージ
さらに2つの構成があり、デフォルトではコメントされています.特に要求はありません.
max_lines:最大行をマージし、デフォルト500
timeout:1回のマージイベントのタイムアウト時間、デフォルト5 s、マージに多くの時間を費やしたり、詰まったりすることを防止します.elasticsearch-headプラグインを使用してクラスタを管理している場合は、elasticsearch-headデフォルト9100ポートが表示されます.ポートの衝突を避けるために変更しました.オンラインであれば、これを使って管理する必要もありません.自分のニーズを見てみましょう.
kibanaとelasticsearchインデックスを利用して上の図は私の6.8.2バージョンのkinbanaで、今の7.3.1までほとんど違いがありません
次に、ビジュアルグラフィックを作成しましょう.7.3.1バージョンの作成チャートは少し変更されました.自分のニーズに合わせて異なるスタイルのグラフを作成することができます.ここではまずlineグラフを作成して、作成したいインデックスをクリックします.
kibanaの他の機能については自分で検討しましょう.
このようなアーキテクチャが満たされなければelk+kafaka+zookeeperなどに変えることもできます
クラスタモードの場合は、クラスタを管理する2つのプラグインを紹介できます.
Cereboはkopfのes 5上の代替者であり,webインタフェースを介してelasticsearchクラスタ状態情報を管理し監視する
bigdesk統計分析とelasticsearchクラスタ状態情報のグラフ化
ESデータを削除しないと、ESに格納されているデータが多くなり、ディスクがいっぱいになると新しいデータを書き込めなくなります.この場合、スクリプトタイミングを使用して期限切れのデータを削除できます.
個人の状況に応じて保留日数を調整できますが、ここのipとportは同じようにデータを格納しないマシンに設定されています.このスクリプトはESで1台のマシンでタイミングよく実行するだけです.次にcrontab crontab-eを呼び出してタイミングタスクを追加します.
毎日午前1時にインデックスをクリアします.
es-index-clear.shコンテンツは、以下のように、他の優れたコードに変更されます.
次の2つのシナリオはネット上で参考にして、みんなが一緒に研究を学ぶことを歓迎します.
一、Elasticsearchのインストール
公式サイトhttps://www.elastic.co
dockerをインストールします.ここでは言いません.
公式サイトからelasticsearchミラーを引く
[root@devon ~]# docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.1
[root@devon ~]# docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"docker.elastic.co/elasticsearch/elasticsearch:7.3.1
二、kibanaのインストール
kibanaミラーを引く
[root@devon ~]# docker pull docker.elastic.co/kibana/kibana:7.3.1
開始
[root@devon ~]# docker run --name kibana -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.10.8:9200 kibana:7.3.1
[root@devon ~]# docker run --name kibana -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://192.168.10.8:9200 kibana:7.3.10e07e9d646fe3e0786e434d2b97a813dac9c17cbd2ea664e0e5151dc4c4d4417[root@devon ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
0e07e9d646fe kibana:7.3.1 "/usr/local/bin/du..." 8 seconds ago Up 7 seconds
400f07c09c01 docker.elastic.co/elasticsearch/elasticsearch:7.3.1 "/usr/local/bin/do..." 6 hours ago Up 6 hours
アクセスkibana IP+5601
次にfilebeatを利用してログを収集しましょう
[root@devon ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz
[root@devon ~]# tar -zxf filebeat-6.2.4-linux-x86_64.tar.gz -C/data/
[root@devon ~]# mv/data/filebeat-6.2.4-linux-x86_64//data/filebeat-6.2.4
[root@devon ~]# vim/data/filebeat-6.2.4/filebeat.yml
どのようにfilebeatを利用して複数のインデックスを設定して、ログを検索するのに便利ですか?私はカスタムfilebeatを選択します.ymlファイル
以下は私が簡単に収集した3つのJavaサービスのログです.デフォルトテンプレートを変更することもできます.logstashがインストールされている場合、フォーマットを変更する必要があります.分析ログのフォーマットは一般的に開発されます.彼らは特殊な要求フォーマットがあれば、他のフォーマットもjsonフォーマットファイルや他のフォーマットです.
filebeat.prospectors:
- input_type: log
paths:
- /var/java/ivy-byways-service/logs/catalina.out
fields:
type: "byways"
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
multiline.timeout: 10s
- input_type: log
paths:
- /var/java/ivy-gotobus-hotels-web/logs/catalina.out
fields:
type: "gotobus"
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
multiline.timeout: 10s
- input_type: log
paths:
- /var/java/ivy-hotels-service/logs/catalina.out
fields:
type: "hotels"
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
multiline.timeout: 10s
- input_type: log
paths:
- /var/java/ivy-newsletter-service/logs/catalina.out
fields:
type: "newsletter"
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
multiline.timeout: 10s
- input_type: log
paths:
- /var/java/ivy-taketours-hotels-web/logs/catalina.out
fields:
type: "taketours"
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
multiline.timeout: 10s
#json.message_key: log
#json.keys_under_root: true
output.elasticsearch:
hosts: ["172.31.60.50:9200"]
#index: "logs-%{[beat.version]}-%{+yyyy.MM.dd}"
indices:
- index: "byways-service-log"
when.equals:
fields.type: "byways"
- index: "gotobus-hotels-web-log"
when.equals:
fields.type: "gotobus"
- index: "hotels-service-log"
when.equals:
fields.type: "hotels"
- index: "newsletter-service-log"
when.equals:
fields.type: "newsletter"
- index: "taketours-hotels-web-log"
when.equals:
fields.type: "taketours"
filebeat.ymlはfilebeatのプライマリプロファイルです
ファイルを開き、multilineを検索します.デフォルトはコメントで、一般的には次の3つの構成があります.
multiline:
pattern: '^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]'
negate: true
match: after
時間形式で始まる行を前の行の末尾にマージしない(正則が悪いので無視)
pattern:正規表現
negate:trueまたはfalse;デフォルトはfalseで、patternに一致する行が前の行にマージされます.true、patternに一致しない行を前の行にマージ
match:afterまたはbefore、前の行の末尾または先頭にマージ
さらに2つの構成があり、デフォルトではコメントされています.特に要求はありません.
max_lines: 500
timeout: 5s
max_lines:最大行をマージし、デフォルト500
timeout:1回のマージイベントのタイムアウト時間、デフォルト5 s、マージに多くの時間を費やしたり、詰まったりすることを防止します.elasticsearch-headプラグインを使用してクラスタを管理している場合は、elasticsearch-headデフォルト9100ポートが表示されます.ポートの衝突を避けるために変更しました.オンラインであれば、これを使って管理する必要もありません.自分のニーズを見てみましょう.
kibanaとelasticsearchインデックスを利用して上の図は私の6.8.2バージョンのkinbanaで、今の7.3.1までほとんど違いがありません
次に、ビジュアルグラフィックを作成しましょう.7.3.1バージョンの作成チャートは少し変更されました.自分のニーズに合わせて異なるスタイルのグラフを作成することができます.ここではまずlineグラフを作成して、作成したいインデックスをクリックします.
kibanaの他の機能については自分で検討しましょう.
このようなアーキテクチャが満たされなければelk+kafaka+zookeeperなどに変えることもできます
クラスタモードの場合は、クラスタを管理する2つのプラグインを紹介できます.
Cereboはkopfのes 5上の代替者であり,webインタフェースを介してelasticsearchクラスタ状態情報を管理し監視する
bigdesk統計分析とelasticsearchクラスタ状態情報のグラフ化
ESデータ定期削除
ESデータを削除しないと、ESに格納されているデータが多くなり、ディスクがいっぱいになると新しいデータを書き込めなくなります.この場合、スクリプトタイミングを使用して期限切れのデータを削除できます.
#/bin/bash
#es-index-clear
# 7
LAST_DATA=`date -d "-7 days" "+%Y.%m.%d"`
#
curl -XDELETE 'http://ip:port/*-'${LAST_DATA}'*'
個人の状況に応じて保留日数を調整できますが、ここのipとportは同じようにデータを格納しないマシンに設定されています.このスクリプトはESで1台のマシンでタイミングよく実行するだけです.次にcrontab crontab-eを呼び出してタイミングタスクを追加します.
0 1 * * * /root/cron/del_es.sh
毎日午前1時にインデックスをクリアします.
es-index-clear.shコンテンツは、以下のように、他の優れたコードに変更されます.
#!/bin/bash
###################################
# ES
###################################
function delete_indices() {
comp_date=`date -d "10 day ago" +"%Y-%m-%d"`
date1="$1 00:00:00"
date2="$comp_date 00:00:00"
t1=`date -d "$date1" +%s`
t2=`date -d "$date2" +%s`
if [ $t1 -le $t2 ]; then
echo "$1 $comp_date, "
# , 2017-10-01 2017.10.01
format_date=`echo $1| sed 's/-/\./g'`
curl -XDELETE http://127.0.0.1:9200/*$format_date
fi
}
curl -XGET http://127.0.0.1:9200/_cat/indices | awk -F" " '{print $3}' | awk -F"-" '{print $NF}' | egrep "[0-9]*\.[0-9]*\.[0-9]*" | sort | uniq | sed 's/\./-/g' | while read LINE
do
#
delete_indices $LINE
done
次の2つのシナリオはネット上で参考にして、みんなが一緒に研究を学ぶことを歓迎します.