目次
2. elasticsearch をノード 1 およびノード 2 ノードにインストールします
4. elasticsearch-head プラグインをノード 1 にインストールします。
6. logstash をノード 1 サーバーにインストールします
7. Logstash ログ収集ファイルの形式 (デフォルトでは /etc/logstash/conf.d に保存されます)
8.node1 ノードに kibana をインストールします
序文
ELK は、Elasticsearch、Logstash、Kibana の組み合わせを指します。これらは、ログ データを集中管理および分析するためによく使用される、一連のオープン ソースのログ収集、保存、検索および視覚化システムです。
1. Elasticsearch: 分散型リアルタイム検索および分析エンジン。大規模なデータを処理でき、高速な検索、集計、データ分析機能を提供します。
2. Logstash: ログの収集、処理、送信のためのツール。複数のソースからのログ データの収集をサポートし、データのクリーニング、変換、フィルタリングを実行して、Elasticsearch などのターゲット ストレージにデータを送信できます。
3. Kibana: データの視覚化と分析のためのツール。チャート、ダッシュボード、レポートを通じて Elasticsearch のデータを視覚的に表示し、ユーザーがログを理解して分析できるようにします。
ELK ログ収集システムのワークフローは次のとおりです。
1. Logstash の構成: Logstash で入力プラグインを構成し、ファイル、ネットワーク、メッセージ キューなどのログ データのソースを指定します。
2. データ処理: Logstash フィルター プラグインを使用して、ニーズを満たすようにログ データをクリーンアップ、変換、フィルターし、処理されたデータを Elasticsearch に送信します。
3. データ ストレージ: Elasticsearch では、受信したログ データにインデックスを付けて保存し、高速な検索と分析を可能にします。
4. データの視覚化: Kibana を使用して、グラフ、ダッシュボード、レポートなどの視覚的なコンポーネントを作成し、データを検索および集計することでログ データの統計情報や傾向を表示します。
5. リアルタイムの検索と分析: Kibana が提供する検索機能を通じて、ログ データをリアルタイムで検索および分析し、問題の発見、システムの監視、パフォーマンスの最適化に役立てることができます。
ELK ログ収集システムの利点は次のとおりです。
- 大規模なログ データの効率的な処理: Elasticsearch は、ストレージおよび検索エンジンとして大規模なログ データを処理できます。
- 柔軟なデータ処理とフィルタリング: Logstash は、ログ データを柔軟に処理および変換するための豊富なプラグインとフィルタを提供します。
- 直感的なデータ視覚化: Kibana は、ログ データの統計と傾向を直感的な方法で表示するためのグラフィカル インターフェイスを提供します。
- リアルタイムの検索と分析: ELK システムはリアルタイムの検索と分析をサポートしており、問題を迅速に特定して解決するのに役立ちます。
つまり、ELK ログ収集システムは、企業が大量のログ データを一元的に管理、保存、検索、視覚化し、システムの監視とトラブルシューティングの機能を向上させるのに役立つツールを強力に組み合わせたものです。
I. 概要
1. ELK は、Elasticsearch、Logstash、Kibana の 3 つのコンポーネントで構成されます。
ログ収集 | ログスタッシュ |
ログ分析 | エラスティックサーチ |
ログの可視化 | キバナ |
2. なぜ使用するのですか?
ログはシステムやアプリケーションの状態を分析するために非常に重要ですが、一般にログの量は比較的多く、分散しています。
管理するサーバーやプログラムの数が比較的少ない場合は、各サーバーに 1 つずつログインして表示および分析することもできます。ただし、サーバーやプログラムの数が多い場合、この方法では不十分になります。これに基づいて、いくつかの集中ログ システムが適用されています。現在、より有名で成熟したものには、Splunk (商用)、FaceBook の Scribe、Apache の Chukwa Cloudera の Fluentd、ELK などが含まれます。
2. コンポーネントの紹介
1、弾性検索
機能: ログ分析、オープンソースログ収集、分析、ストレージプログラム
特徴:
分散、
ゼロ構成、
自動検出
、自動インデックス シャーディング、インデックス
コピー メカニズム、
Restful スタイル インターフェイス、
複数のデータ ソース、
自動検索ロード
2、ログスタッシュ
機能:ログ収集・収集・分析・ログフィルタリングツール
作業工程:
一般的な作業方法は c/s アーキテクチャです. クライアントはログを収集する必要があるサーバーにインストールされます. サーバーは各ノードの受信したログをフィルタリングおよび変更する責任を負い, その後入力 → フィルター → とともに Elasticsearch に送信します
出力
. -->フィルタリング -->出力
ファイル: tail -f コマンドと同様に、ファイル システム内のファイルから読み取ります。 |
Syslog: ポート 514 でシステム ログ メッセージをリッスンし、RFC3164 標準に従ってそれらを解析します。 |
Redis: Redis サービスからの読み取り |
Beats: ファイルビートから読み取る |
Grok: 任意のテキスト データを解析します。Grok は Logstash の最も重要なプラグインです。その主な機能は、テキスト形式の文字列を特定の構造化データに変換し、それを正規表現で使用することです。 |
公式に提供されている grok 式: logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub |
Grok オンライン デバッグ: Grok デバッガー |
変更: フィールドを変換します。たとえば、フィールドの削除、置換、変更、名前変更などです。 |
ドロップ: 一部のイベントを処理せずにドロップします。 |
クローン: イベントをコピーします。このプロセス中にフィールドを追加または削除することもできます。 |
Geoip: 地理情報を追加します (フロントエンド kibana のグラフィック表示に使用されます) |
Elasticsearch: データを効率的に保存し、便利かつ簡単にクエリを実行できます。 |
ファイル: イベント データをファイルに保存します。 |
Graphite: イベント データをグラフィカル コンポーネントに送信し、グラフィカル表示を保存するために現在人気のあるオープン ソース コンポーネントを実装します。 |
3、キバナ
機能:ログの可視化
Logstash と ElasticSearch が収集および保存されたログに基づいて分析するための使いやすい Web インターフェイス。重要なデータ ログの要約、分析、検索に役立ちます。
3. アーキテクチャの種類
1、ELK
es
logstash
kibana
2、ELKK
es
logstash
カフカ
キバナ
3. ELFK
es
logstash は重量があり、より多くのシステム リソースを消費しますが、
filebeat は軽量で、より少ないシステム リソースを消費します
。
4、ELFKK
es
logstash
ファイルビート
カフカ
キバナ
4. ELKログ収集クラスタ実験
1. 実験的なトポロジー
この実験を行う場合、各ホストには少なくとも 2 つのコア 4G が用意されます。そうでなければふふ~~わかりますね。
ダウンロードアドレス https://elasticsearch.cn/download/
ノード1とノード2にホスト名を設定します。
####分别修改主机名#####
###node1
hostnamectl set-hostname node1
echo "192.168.115.131 node1" "192.168.115.136 node2" >> /etc/hosts
scp /etc/hosts 192.168.115.136:/etc/hosts
bash
###node2
hostnamectl set-hostname node2
bash
######测试通联#######
###node1
ping node2
###node2
ping node1
2. elasticsearch をノード 1 およびノード 2 ノードにインストールします
2.1. まず Java 環境の Java バージョンを確認し、そうでない場合は yum install -y java-1.8.0-openjdk をインストールします。
2.2. elasticsearch のインストール
以下に示すように、これはこの実験で使用したインストール パッケージです。
##安装elasticsearch
rpm -ivh elasticsearch-5.5.0.rpm
##配置
vim /etc/elasticsearch/elasticsearch.yml
###进去解开注释
cluster.name:my-elk-cluster #集群名称
node.name:node1 #节点名字
path.data: /var/lib/elasticsearch #数据存放路径
path.logs:/var/log/elasticsearch/ #日志存放路径
bootstrap.memory_lock:false #在启动的时候不锁定内存
network.host:192.168.115.131 #提供服务绑定的IP地址,0.0.0.0代表所有地址
http.port:9200 #侦听端口为9200
discovery.zen.ping.unicast.hosts:["node1","node2"] #群集发现通过单播实现
###同理安装node2的elasticsearch
###把这份配置文件传输给node2,修改一下节点名字和IP就好了
scp /etc/elasticsearch/elasticsearch.yml 192.168.115.136:/etc/elasticsearch/elasticsearch.yml
3. elasticsearch サービスを開始します
3.1. コマンド systemctl start elasticsearch.service を開始します。
ノード1
ノード2
3.2. ノード情報を表示するためのブラウザアクセス
192.168.115.131:9200
192.168.115.136
:9200
クラスターの健全性ステータスを確認します: 192.168.115.131:9200/cluster/health
192.168.115.136:9200/クラスター/ヘルス
緑色の健全性 黄色の警告 赤 クラスターが利用不可、重大なエラー
4. elasticsearch-head プラグインをノード 1 にインストールします。
####编译安装
cd elk
tar xf node-v8.2.1.tar.gz
cd node-v8.2.1
./configure && make && make install
###等待安装完毕。安装完毕后会生成命令:npm
###拷贝命令
cd elk
tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
##安装elasticsearch-head
cd elk
tar xf elasticsearch-head.tar.gz
cd elasticsearch-head
npm install
###修改elasticsearch配置文件node1、2都要改
vim /etc/elasticsearch/elasticsearch.yml
# Require explicit names when deleting indices:
#
#action.destructive_requires_name:true
http.cors.enabled: true //开启跨域访问支持,默认为false
http.cors.allow-origin: "*" //跨域访问允许的域名地址
4.1. サービスを再起動します: systemctl restart elasticsearch 両方のノードでポート 9200 が稼働しているかどうかを確認します。
###启动elasticsearch-head
cd /root/elk/elasticsearch-head
npm run start &
##查看监听: netstat -anput | grep :9100
4.2. 192.168.115.136:9100 にアクセスしてください
5. テスト入力
5.1、curl -XPUT '192.168.115.131:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"hy","mesg":"こんにちは"}
テストデータを確認するには、192.168.115.131:9100 にアクセスしてください。
6. logstash をノード 1 サーバーにインストールします
cd elk
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
In -s /usr/share/logstash/bin/logstash /usr/local/bin/
テスト 1: 標準入出力 logstash -e 'input{ stdin{} }output { stdout{} }'
テスト 2: Rubydebug を使用して logstash -e 'input { stdin{} } Output { stdout{ codec=>rubydebug }}' をデコードする
テスト 3: elasticsearch への出力
logstash -e '入力 { stdin{} } 出力 { elasticsearch{ hosts=>["192.168.115.131:9200"]} }'
OK、テストは終わりました。192.168.115.131:9100 で確認しましょう。
Elasticsearch はすでに分析を行っており、これは測定されたコンテンツであり、追加のインデックスがあります。
7. Logstash ログ収集ファイルの形式 (デフォルトでは /etc/logstash/conf.d に保存されます)
7.1. はじめに
Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。标准的配置文件格式如下:
input (...) 输入
filter {...} 过滤
output {...} 输出
在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:
input {
file{path =>"/var/log/messages" type =>"syslog"}
file { path =>"/var/log/apache/access.log" type =>"apache"}
}
7.2. 設定
logstash を使用してシステム情報ログを収集する
##因为要收集日志,root用户可以操作,其他用户是没权限的,所以加个读取的权限,否则是收集不到日志的
chmod o+r /var/log/messages
vim /etc/logstash/conf.d/system.conf
##system.conf是自定义的因为我搜集的是系统日志,若其他的应用的话可以取对应的名字来作为区分
##插入
input {
file{ ##类型:文件
path =>"/var/log/messages" ##系统日志文件路径
type => "system" ##类型自定义
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.115.131:9200"] ##给谁处理
index => "system-%{+YYYY.MM.dd}" ##自定义索引
}
}
ログ サービスを再起動します: systemctl restart logstash
ブラウザビュー 192.168.115.131:9100
8.node1 ノードに kibana をインストールします
8.1. インストールと設定
####安装kibana
cd elk
rpm -ivh kibana-5.5.1-x86_64.rpm
##配置kibana
vim /etc/kibana/kibana.yml
server.port:5601 #Kibana打开的端口
server.host:"0.0.0.0" #Kibana侦听的地址
elasticsearch.url: "http://192.168.115.131:9200" #和Elasticsearch 建立连接
kibana.index:".kibana" #在Elasticsearch中添加.kibana索引
##启动kibana
systemctl start kibana
8.2. kibanaへのアクセス
192.168.115.131:9100 にアクセスしてください
インデックスを追加するには、192.168.115.131:5601 にアクセスしてください。上の図でインデックスを追加できます。
ここでシステムインデックスを追加します
5. http ノードの構成
1. 192.168.115.140のhttpサービスを設定します。
yum -y install httpd
systemctl start httpd
netstat -anput | grep 80
httpd にアクセス
2. http サーバーのアクセス ログを収集するように、このノードで logstash を構成します。
http アクセス ログ パス/var/log/httpd/access_log
##安装logstash
rpm -ivh logstash-5.5.1.rpm
3. 設定ファイルを変更する
vim /etc/logstash/conf.d/httpd.conf
###插入
input {
file{ ##类型:文件
path =>"/var/log/httpd/access_log" ##系统日志文件路径
type => "access" ##类型自定义
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.115.131:9200"] ##给谁处理
index => "httpd-%{+YYYY.MM.dd}" ##自定义索引
}
}
ログ収集の開始 systemctl start logstash.service
logstash コマンドを使用して構成をインポートします。
-s /usr/share/logstash/bin/logstash /usr/local/bin/ でソフト接続を作成します。
logstash をインポートします -f /etc/logstash/conf.d/httpd.conf
4. 192.168.115.131:9200 にアクセスしてください。
キバナ 192.168.115.131:5601
httpdのアクセスログを確認する
はい、これで実験は終わりです