ELKスタックはElasticスタックとも呼ばれ、Elasticsearch、Logstash、Kibana、Beatsの4つのオープンソースプロジェクトで構成されています。すべてのログを1つの場所に保存するのに役立ち、特定の時間のイベントを相互に関連付けることで、データや問題を分析および視覚化する機能を提供します。
このガイドは、RHEL8にELKスタックをインストールするのに役立ちます。
コンポーネント
Elasticsearch –オープンソースの全文検索エンジン。 Logstashからの受信ログを保存し、ログ/データをリアルタイムで検索する機能を提供します
Logstash –ビート(フォワーダー)によって送信された受信ログのデータ処理(収集、強化、変換)を行い、Elasticsearchに送信します
Kibana –Elasticsearchからのデータまたはログの視覚化を提供します。
Beats –クライアントマシンにインストールされ、Beatsプロトコルを介してログを収集してLogstashに送信します。
環境
フル機能のELKスタックを使用するには、ログの収集をテストするために2台のマシンが必要になります。
ホスト名 | OS | IPアドレス | 目的 |
---|---|---|---|
elk.itzgeek.local | RHEL 8 | 192.168.1.10 | ELKスタック |
client.itzgeek.local | CentOS 7 | 192.168.1.20 | クライアントマシン(Filebeat) |
前提条件
Javaのインストール
ElasticsearchはJavaに基づいているため、OpenJDKまたはOracleJDKのいずれかをマシンにインストールする必要があります。
読む: RHEL8にJavaをインストールする方法
ここでは、OpenJDK1.8を使用しています。
yum -y install java
Javaのバージョンを確認してください。
java -version
出力:
openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
Elastic署名キーをインポートします。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
ELKサーバーとクライアントの両方でElasticsearchリポジトリをセットアップします。
cat << EOF > /etc/yum.repos.d/elastic.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Elasticsearchのインストールと設定
Elasticsearchはオープンソースであり、フルテキスト検索エンジンは、RESTfulWebインターフェースを使用してリアルタイムの分散検索と分析を提供します。 Elasticsearchは、Logstashによって送信されたすべてのデータを保存し、ユーザーの要求に応じてWebインターフェイス(Kibana)を介して表示します。
Elasticsearchをインストールします。
yum install -y elasticsearch-oss
Elasticsearchの構成ファイルを編集して
vi /etc/elasticsearch/elasticsearch.yml
ご使用の環境に応じて、クラスター名、ノード名、リスニングIPアドレスを設定します。
cluster.name: elkstack node.name: elk.itzgeek.local network.host: 192.168.1.10
リスニングIPアドレスを設定する場合は、シードホストと初期マスターノードを定義する必要があります。
discovery.seed_hosts: ["elk.itzgeek.local"] cluster.initial_master_nodes: ["elk.itzgeek.local"]
システムの起動中に開始するようにElasticsearchを構成します。
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
CURLを使用して、Elasticsearchがクエリに応答しているかどうかを確認します。
curl -X GET http://192.168.1.10:9200
出力:
{ "name" : "elk.itzgeek.local", "cluster_name" : "elkstack", "cluster_uuid" : "yws_6oYKS965bZ7GTh0e6g", "version" : { "number" : "7.2.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "508c38a", "build_date" : "2019-06-20T15:54:18.811730Z", "build_snapshot" : false, "lucene_version" : "8.0.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
以下のコマンドを実行して、クラスターの状態を確認します。
curl -XGET '192.168.1.10:9200/_cluster/health?pretty'
出力:クラスターのステータスは緑色である必要があります。
{ "cluster_name" : "elkstack", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
Logstashのインストールと構成
Logstashは、ログを管理するためのオープンソースツールです。ログを収集して解析し、Elasticsearchに保存します。 Logstashでは160以上のプラグインを利用でき、追加の作業なしでさまざまな種類のイベントを処理する機能を提供します。
Logstashパッケージをインストールします。
yum -y install logstash-oss
Logstashの構成は、/etc/logstash/conf.d/
にあります。 。
Logstash構成ファイルは、入力、フィルター、および出力の3つのセクションで構成されています。 3つのセクションはすべて、1つのファイルにあるか、.confで終わる個別のファイルにあります。
入力、フィルター、出力セクションの配置には1つのファイルを使用することをお勧めします。
vi /etc/logstash/conf.d/beats.conf
入力セクションでは、クライアントマシンにインストールされているビート(フォワーダー)からの着信ログをポート5044でリッスンするようにLogstashを構成します。
input { beats { port => 5044 } }
フィルタセクションでは、Grokを使用してログを解析してからElasticsearchに送信します。
次のgrokフィルターは、 syslogを検索します ログにラベルを付け、それらを解析して構造化インデックスを作成しようとします。このフィルターは、syslog(/ var / log / messages)メッセージを監視するためだけに非常に役立ちます。
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
その他のフィルターパターンについては、grokdebuggerページにアクセスしてください。
出力セクションでは、ログを保存する場所、明らかにElasticsearchノードを定義します。
output { elasticsearch { hosts => ["192.168.1.10:9200"] index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } }
次に、Logstashサービスを開始して有効にします。
systemctl start logstash systemctl enable logstash
Logstashが起動するまで1分待ってから、以下のコマンドを実行して、ポート5044でリッスンしているかどうかを確認します。
netstat -antup | grep -i 5044
出力:
tcp6 0 0 :::5044 :::* LISTEN 31014/java
ログを使用してLogstashのトラブルシューティングを行うことができます。
cat /var/log/logstash/logstash-plain.log
Kibanaのインストールと構成
Kibanaは、Elasticsearchに保存されているログの視覚化を提供します。次のコマンドを使用してKibanaをインストールします。
yum -y install kibana-oss
kibana.ymlファイルを編集します。
vi /etc/kibana/kibana.yml
デフォルトでは、Kibanaはローカルホストでリッスンします。つまり、外部マシンからKibanaにアクセスすることはできません。許可するには、以下の行を編集して、ELKサーバーのIPを記載してください。
server.host: "0.0.0.0"
次の行のコメントを解除し、ElasticsearchインスタンスのURLで更新します。
elasticsearch.hosts: ["http://192.168.1.10:9200"]
システムの起動時にkibanaを起動して有効にします。
systemctl start kibana systemctl enable kibana
Kibanaがポート5601でリッスンしているかどうかを確認します。
netstat -antup | grep -i 5601
出力:
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 3631/node
ファイアウォール
クライアントマシンからログを受信するようにELKサーバーにファイアウォールを構成します。
5044 –Logstashがログを受信するための
5061 –外部マシンからKibanaにアクセスするため。
firewall-cmd --permanent --add-port=5044/tcp firewall-cmd --permanent --add-port=5601/tcp firewall-cmd --reload
次に、ログをLogstashサーバーに送信するようにビートを構成します。
Filebeatのインストールと構成
利用可能な4つのビートクライアントがあります
- パケットビート –ネットワークパケットデータを分析します。
- ファイルビート –ログデータへのリアルタイムの洞察。
- トップビート –インフラストラクチャデータから洞察を得る。
- メトリックビート –メトリックをElasticsearchに送信します。
Filebeatパッケージを取得するには、クライアントマシンにElasticリポジトリを設定します。
次のコマンドを使用してFilebeatをインストールします。
yum -y install filebeat
Filebeat構成ファイルはYAML形式であるため、インデントが非常に重要です。ガイドで使用されているのと同じ数のスペースを使用していることを確認してください。
filebeat構成ファイルを編集します。
vi /etc/filebeat/filebeat.yml
セクションoutput.elasticsearch:をコメントアウトします ログをElasticsearchに直接保存することはないためです。
#-------------------------- Elasticsearch output ------------------------------ #output.elasticsearch: # Array of hosts to connect to. #hosts: ["localhost:9200"] # Optional protocol and basic auth credentials. #protocol: "https" #username: "elastic" #password: "changeme"
ここで、 output.logstashという行を見つけます。 以下のようにエントリを変更します。このセクションでは、ログをLogstashサーバー 192.168.1.10に送信するためのfilebeatを定義します。 ポート5044 。
. . . #----------------------------- Logstash output -------------------------------- output.logstash: # The Logstash hosts hosts: ["192.168.1.10:5044"] . . .
/etc/filebeat/filebeat.yml
の上に 、プロスペクターセクションが表示されます。ここでは、Logstashに送信するログを指定する必要があります。
各プロスペクターは–で始まります キャラクター。
ここでは、システムログを送信するようにfilebeatを構成します/var/log/messages
Logstashサーバーへ。これを行うには、パスの下にある既存のプロスペクターを変更します 以下に示すセクション。
. . . filebeat.inputs: # Each - is an input. Most options can be set at the input level, so # you can use different inputs for various configurations. # Below are the input specific configurations. - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - /var/log/messages #- c:\programdata\elasticsearch\logs\* . . .
サービスを再開します。
systemctl restart filebeat systemctl enable filebeat
アクセスキバナ
次のURLを使用してKibanaにアクセスします。
http:// your-ip-addr-ess:5601 /Kibanaのホームページが表示されます。 自分で探索をクリックします 。
最初のアクセス時に、ファイルビートインデックスをマップする必要があります。 管理に移動します>>インデックスパターン>>インデックスパターンの作成 。
インデックスパターンに次のように入力します ボックス。
filebeat-*以下のようなファイルビートインデックスが少なくとも1つ表示されます。 次のステップをクリックします 。
@timestampを選択します 次に、インデックスパターンの作成をクリックします。 。
@timestamp
インデックスパターンとそのマッピングを確認します。
次に、[検出]をクリックします ログを表示して検索クエリを実行します。
結論
それで全部です。 RHEL8にELKStackをインストールする方法を正常に学習しました。コメントセクションでフィードバックを共有してください。