ログ分析は常にシステム管理の重要な部分ですが、特に多くのシステムを扱う場合、これは最も退屈で面倒な作業の1つです。幸い、ELKスタックによって作業が簡単になり、ELKスタックはログの検査/分析に使用されるようになりました。これは、次の3つのオープンソース製品の組み合わせです
- ElasticSearch-情報のインデックスを作成して保存するNo-SQLデータベースです
- Logstash –ログを収集して解析するログパイプラインツールです
- Kibana – GUI(グラフィカルユーザーインターフェース)を提供し、データの視覚化に使用され、elasticsearch上で機能します。
ELKスタックは、beatsクライアントを使用して送信されたbeatsプロトコルを介してクライアントからログを受信します。このチュートリアルでは、Centos 7マシンにELKスタックを作成し、クライアントマシンに「FileBeat」という名前のビートクライアントもインストールします。
- 192.168.0.180 elk-stack(CentOS 7)
- 192.168.0.70クライアント(CentOS 7)
前提条件
ELKをインストールするマシンには、Javaバージョン8がとしてインストールされている必要があります。したがって、javaopen-jdkバージョン1.8.0_*がインストールされて実行されていることを確認し、インストールされていない場合は、以下のyumコマンドを実行してインストールします
[[メール保護]〜]#yum install java-1.8.0-openjdk
[[email protected] ~]# java -version openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-b12) OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode) [[email protected] ~]#
ホスト名を設定し、/ etc/hostsファイルを更新します
[[email protected] ~]# hostnamectl set-hostname "elk-stack.example.com"
/ etc/hostsファイルを更新します
192.168.0.180 elk-stack.example.com elk-stack
ELKスタックのインストール手順
Elasticsearch
まず、elasticsearch用のGPGキーをインポートします。このキーは、logstashおよびkibanaとも共有されます。 Elasticsearchをインストールするには、
を実行します[[メール保護]〜]#rpm –import https://packages.elastic.co/GPG-KEY-elasticsearch
[[メール保護]〜]#
次に、elastic-searchリポジトリのリポジトリを作成します
[[email protected] ~]# vi /etc/yum.repos.d/elasticsearch.repo [elasticsearch] name=Elasticsearch repository baseurl=http://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
リポジトリが追加されたら、yumを使用してelasticsearchをインストールします
[[email protected] ~]# yum install elasticsearch -y
これでサービスが開始され、起動時に開始するように設定されます
[[email protected] ~]# systemctl daemon-reload [[email protected] ~]# systemctl start elasticsearch [[email protected] ~]# systemctl enable elasticsearch
OSファイアウォールで9200tcpポートを許可します。ファイアウォールが実行されている場合
[[email protected] ~]# firewall-cmd --permanent --add-port 9200/tcp
次に、elasticsearchをテストして、クエリに応答することを確認します
[[email protected] ~]# curl -X GET http://localhost:9200
上記のコマンドの出力は、次のようになります。
ログスタッシュ
ここで、logstashリポジトリを追加します
[[email protected] ~]# vi /etc/yum.repos.d/logstash.repo [logstash] name=Logstash baseurl=http://packages.elasticsearch.org/logstash/2.2/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1
ここでlogstashをインストールします
[[email protected] ~]# yum install logstash -y
キバナ
次に、kibanaのリポジトリを作成します
[[email protected] ~]# vi /etc/yum.repos.d/kibana.repo [kibana-4.5] name=Kibana repository for 4.5.x packages baseurl=http://packages.elastic.co/kibana/4.5/centos gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
次に、yumを使用してkibanaをインストールします。
[[email protected] ~]# yum install kibana -y
インストール後、サービスを開始し、起動時に有効にします
[[email protected] ~]# systemctl start kibana [[email protected] ~]# systemctl enable kibana
OSファイアウォールで5601ポートを許可する
[[email protected] ~]# firewall-cmd --permanent --add-port 5601/tcp [[email protected] ~]# firewall-cmd --reload
次に、kibanaのWebページにアクセスして、動作することを確認します。これを行うには、Webブラウザーを開き、次のURLを入力します
http:// IP-Address:5601 /
ELKスタックのインストールが完了しました。必要な構成を行います。
構成
logstashのSSL証明書
logstashのインストール後、logstashとfilebeat(クライアント)間の通信を保護するためのSSL証明書を作成します。サーバーへの接続にはIPアドレスを使用するため、IPSANのSSL証明書を作成します。
SSL証明書を作成する前に、openssl.cnfにIPを入力します。
[[email protected] ~]# vi /etc/pki/tls/openssl.cnf
[v3_ca]セクションで「subjectAltName」のパラメータを探し、サーバーIPを追加します
subjectAltName = IP: 192.168.0.180
次に、ディレクトリを/ etc / sslに変更し、365日の有効期間を持つSSL証明書を作成します。
[[email protected] ~]# cd /etc/ssl/ [[email protected] ssl]# openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash_frwrd.crt Generating a 2048 bit RSA private key .....+++ ...........+++ writing new private key to 'logstash-forwarder.key' ----- [[email protected] ssl]#
証明書の準備ができたら、scpコマンドを使用してこれをすべてのクライアントにコピーする必要があります。
Logstashの構成
次に、「 /etc/logstash/conf.d」フォルダの下にlogstashの構成ファイルを作成します。 ‘。このファイルは、入力、フィルター、出力の3つのセクションに分割されます
[[email protected] ~]# vi /etc/logstash/conf.d/logstash.conf # input section input { beats { port => 5044 ssl => true ssl_certificate => "/etc/ssl/logstash_frwrd.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" congestion_threshold => "40" } }
このセクションでは、logstashがポート5044で着信ログをリッスンし、安全な接続のためのSSL証明書の詳細も提供します。
次のセクション、つまり「フィルターセクション」は、ログをelasticsearchに送信する前に解析します
# Filter section filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
最後のセクションは「出力セクション」であり、ログを保存する場所を定義します。
# output section output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }>
次に、ファイルを保存して終了します。これらのセクションはすべて3つの別々のファイルに分割することもできますが、構成を容易にするために1つのファイルで使用しています。ここで、logstashサービスを開始し、起動時に有効にします。
[[email protected] ~]# systemctl daemon-reload [[email protected] ~]# systemctl start logstash [[email protected] ~]# systemctl enable logstash
Logstashがクライアントからログを取得できるように、次のコマンドでOSファイアウォールに5044tcpポートを許可します
[[email protected] conf.d]# firewall-cmd --permanent --add-port=5044/tcp success [[email protected] conf.d]# firewall-cmd --reload success [[email protected] conf.d]#
クライアントへのFilebeatのインストール
Filebeatは、ログを分析する必要があるすべてのシステムにインストールする必要があります。まず、elk-stackサーバーからクライアントに証明書ファイルをコピーしましょう
[[email protected] ~]# scp /etc/ssl/logstash_frwrd.crt [email protected]:/etc/ssl
filebeatをインストールするには、最初にそのリポジトリを追加します
[[email protected] ~]# vi /etc/yum.repos.d/filebeat.repo [beats] name=Elastic Beats Repository baseurl=https://packages.elastic.co/beats/yum/el/$basearch enabled=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch gpgcheck=1
次に、コマンドの下で実行してfilebeatをインストールします
[[email protected] ~]# yum install filebeat
ここで、構成ファイルに変更を加えて、filebeatクライアントをELKスタックに接続しますが、その前に、logstash構成中に作成した証明書がクライアントの「/ etc/ssl」ディレクトリにコピーされていることを確認してください。それが完了したら、ファイルビートの構成を開始します。
[[メール保護]〜]#vi /etc/filebeat/filebeat.yml
次の3つのセクションに変更を加える必要があります
. . . paths: - /var/log/*.log - /var/log/secure - /var/log/messages . . .
このセクションでは、分析が必要なログを許可できます。デフォルト、つまりすべてのログを残しましたが、1つまたは2つのログファイルのみを送信するように変更できます。次のセクションでは、document_typeを「syslog」に変更します。
. . . document_type: syslog . . .
&最後のセクション、つまり「出力」では、SSL証明書のELKスタックサーバーのIPアドレスと場所を定義します
. . . output: logstash: hosts: ["192.168.0.180:5044"] tls: certificate_authorities: ["/etc/ssl/logstash_frwrd.crt"] . . .
注:elasticsearchの出力を無効にし、有効になっている場合は、エントリ「hosts:["localhost:9200"]」をコメントアウトします。
次に、サービスを開始し、起動時に有効にします。
[[email protected] ~]# systemctl restart filebeat [[email protected] ~]# systemctl enable filebeat
これで、サーバー側とクライアント側の両方での構成が完了しました。これで、kibana Webインターフェースにログインして、分析されたログを探すことができます。
インデックスパターンを作成し、 logstash-*を変更します to filebeat-*
[作成]をクリックします
[検出]をクリックしてから検索すると、次のようなログが表示されます
これでこの記事は終わりです。貴重なフィードバックやコメントを共有してください。