Ubuntu 17.04にエラスティックスタック(Elasticsearch、Logstash、Kibana)をインストールして構成する方法

ITインフラストラクチャがクラウドに移行し、モノのインターネットが普及するにつれて、組織とITプロフェッショナルはパブリッククラウドサービスをより広範囲に使用しています。サーバーで実行されるサーバーとサービスが増加するにつれて、システムで生成されるログの量も増加しています。これらのログの分析は、いくつかの理由でインフラストラクチャで非常に重要です。これには、セキュリティポリシーと規制の遵守、システムのトラブルシューティング、セキュリティ関連のインシデントへの対応、またはユーザーの行動の理解が含まれます。

Elasticsearch、Logstash、Kibanaという3つの非常に人気のあるオープンソースアプリケーションを組み合わせて、Elastic StackまたはELK Stackを作成します。Elastic Stackは、ログとデータを検索、分析、視覚化するための非常に強力なツールです。Elasticsearchは、ログを保存し、ログを検索するための、分散されたリアルタイムのスケーラブルで可用性の高いアプリケーションです。Logstashは、Beatsから送信されたログを収集して拡張し、Elasticsearchに送信します。Kibanaは、ログと実用的な洞察を視覚化するために使用されるWeb UIです。

このチュートリアルでは、最新バージョンのElasticsearch、Logstash、KibanaとX-PackをUbuntu 17.04にインストールします。

前提条件

このチュートリアルを実行するには、4 GB以上のRAMを搭載しVultr 64ビットUbuntu 17.04サーバーインスタンスが必要です。本番環境では、ユーザーとログの数に応じてハードウェア要件が増加します。

このチュートリアルは、sudoユーザーの観点から書かれています。sudoユーザーを設定するには、DebianでのSudoの使用方法ガイドに従ってください

Let's Encrypt CAから証明書を取得するには、サーバーを指すドメインも必要です。

手順1:システムアップデートを実行する

Ubuntuサーバーインスタンスにパッケージをインストールする前に、システムを更新することをお勧めします。sudoユーザーを使用してログインし、次のコマンドを実行してシステムを更新します。

sudo apt update
sudo apt -y upgrade

システムのアップグレードが完了したら、次の手順に進みます。

ステップ2:Javaをインストールする

Elasticsearchが機能するには、Java 8が必要です。Oracle JavaとOpenJDKの両方をサポートしています。チュートリアルのこのセクションでは、Oracle JavaとOpenJDKの両方のインストールについて説明します。

以下のJavaバージョンのいずれかをインストールしてください。ElasticsearchにはOracle Javaのインストールをお勧めします。ただし、好みに応じてOpenJDKのインストールを選択することもできます。

Oracle Javaのインストール

UbuntuシステムにOracle Javaをインストールするには、次のコマンドを実行してOracle Java PPAを追加する必要があります。

sudo add-apt-repository ppa:webupd8team/java

次のコマンドを実行して、リポジトリ情報を更新します。

sudo apt update

次のコマンドを実行することで、最新の安����たバージョンのJava 8を簡単にインストールできます。

sudo apt -y install oracle-java8-installer

プロンプトが表示されたら、使用許諾契約に同意します。インストールが完了したら、次のコマンドを実行してJavaのバージョンを確認できます。

java -version

次のような出力が表示されます。

user@vultr:~$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

JAVA_HOMEインストールして、およびその他のデフォルトを設定することもできoracle-java8-set-defaultます。実行:

sudo apt -y install oracle-java8-set-default

次のコマンドをJAVA_HOME実行して、変数が設定されているかどうかを確認できます。

echo "$JAVA_HOME"

出力は次のようになります。

user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-oracle

上記の出力が得られない場合は、ログアウトしてシェルに再度ログインする必要があります。Oracle Javaがサーバーにインストールされました。これで、チュートリアルのOpenJDKのインストールをスキップするステップ3に進むことができます。

OpenJDKのインストール

OpenJDKのインストールは非常に簡単です。OpenJDKをインストールするには、次のコマンドを実行するだけです。

sudo apt -y install default-jdk

インストールが完了したら、次のコマンドを実行してJavaのバージョンを確認できます。

java -version

次のような出力が表示されます。

user@vultr:~$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.17.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

JAVA_HOME変数を設定するには、次のコマンドを実行します。

sudo echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> /etc/environment

次のコマンドを実行して、環境ファイルをリロードします。

sudo source /etc/environment

次のコマンドをJAVA_HOME実行して、変数が設定されているかどうかを確認できます。

echo "$JAVA_HOME"

出力は次のようになります。

user@vultr:~$ echo "$JAVA_HOME"
/usr/lib/jvm/java-8-openjdk-amd64/

ステップ3:Elasticsearchをインストールする

Elasticsearchは、超高速、分散、高可用性、RESTful検索エンジンです。次のコマンドを実行して、Elasticsearch APTリポジトリを追加します。

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

上記のコマンドは、Elasticsearchの新しいリポジトリファイルを作成し、そこにソースエントリを追加します。次に、パッケージの署名に使用するPGP鍵をインポートします。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

次のコマンドを実行して、APTリポジトリメタデータを更新します。

sudo apt update

次のコマンドを実行してElasticsearchをインストールします。

sudo apt -y install elasticsearch

上記のコマンドは、システムにElasticsearchの最新バージョンをインストールします。Elasticsearchがインストールされたら、次を実行してSystemdサービスデーモンをリロードします。

sudo systemctl daemon-reload

Elasticsearchを起動して、起動時に自動的に起動するようにします。

sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Elasticsearchを停止するには、次を実行します。

sudo systemctl stop elasticsearch

実行できるサービスのステータスを確認するには:

sudo systemctl status elasticsearch

Elasticsearchがポートで実行されています9200。次のコマンドを実行することにより、それが機能しており、結果を生成しているかどうかを確認できます。

curl -XGET 'localhost:9200/?pretty'

次のようなメッセージが出力されます。

user@vultr:~$ curl -XGET 'localhost:9200/?pretty'
{
  "name" : "wDaVa1K",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "71drjJ8PTyCcbai33Esy3Q",
  "version" : {
    "number" : "5.5.1",
    "build_hash" : "19c13d0",
    "build_date" : "2017-07-18T20:44:24.823Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

Elasticsearch用のX-Packをインストールする

X-Packは、セキュリティ、アラート、モニタリング、レポート、グラフ機能などの多くのアドオン機能を提供するElastic Stackプラグインです。X-Packは、ElasticsearchとKibanaのユーザー認証、およびKibanaのさまざまなノードの監視も提供します。X-PackとElasticsearchが同じバージョンでインストールされていることが重要です。

次のコマンドを実行して、Elasticsearch用のX-Packを直接インストールできます。

cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install x-pack

インストールを続行するには、yプロンプトが表示されたらEnter を押します。このコマンドは、X-Packプラグインをシステムにインストールします。X-Packをインストールすると、Elasticsearchの認証が有効になります。デフォルトのユーザー名はelastic、パスワードはchangemeです。Elasticsearchが機能しているかどうかを確認するために実行したのと同じコマンドを実行して、認証が有効になっているかどうかを確認できます。

curl -XGET 'localhost:9200/?pretty'

これで、出力に認証が失敗したことが表示されます。

user@vultr:~# curl -XGET 'localhost:9200/?pretty'
{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "missing authentication token for REST request [/?pretty]",
        "header" : {
          "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
        }
      }
    ],
    "type" : "security_exception",
    "reason" : "missing authentication token for REST request [/?pretty]",
    "header" : {
      "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
    }
  },
  "status" : 401
}

changeme次のコマンドを実行して、デフォルトのパスワードを変更します。

curl -XPUT -u elastic:changeme 'localhost:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
  "password": "NewElasticPassword"
}
'

NewPassword使用する実際のパスワードに置き換えます。新しいパスワードが設定されていて、Elasticsearchが機能しているかどうかを確認するには、次のコマンドを実行します。

curl -XGET -u elastic:NewElasticPassword 'localhost:9200/?pretty'    

クエリが正常に実行されたことを示す出力が表示されます。

さらに、次を実行してElasticsearch構成ファイルを編集します。

sudo nano /etc/elasticsearch/elasticsearch.yml

次の行を見つけ、コメントを外して、提供された指示に従って変更します。

#cluster.name: my-application    #Provide the name of your cluster
#node.name: node-1               #Provide the name of your node
#network.host: 192.168.0.1

の場合network.host、システムに割り当てられたプライベートIPアドレスを入力します。次のコマンドを実行して、Elasticsearchインスタンスを再起動します。

sudo systemctl restart elasticsearch

これで、の代わりにlocalhost、IPアドレスを使用して、を使用してクエリを実行する必要がありますcurl

curl -XGET -u elastic:NewElasticPassword '192.168.0.1:9200/?pretty'

192.168.0.1サーバーの実際のプライベートIPアドレスに置き換えます。Elasticsearchをインストールしたので、さらに進んでKibanaをインストールします。

ステップ4:Kibanaをインストールする

Kibanaは、Webインターフェースを使用してログと実用的な洞察を視覚化するために使用されます。Elasticsearchの管理にも使用できます。Elasticsearchと同じバージョンのKibanaをインストールすることをお勧めします。

ElasticsearchリポジトリとPGPキーをすでに追加しているので、次のコマンドを実行してKibanaを直接インストールできます。

sudo apt -y install kibana

前のコマンドは、システムに最新バージョンのKibanaをインストールします。Kibanaをインストールしたら、次のコマンドを実行してSystemdサービスデーモンをリロードします。

sudo systemctl daemon-reload

次のコマンドを実行することで、Kibanaを起動し、起動時に自動的に起動するようにできます。

sudo systemctl enable kibana
sudo systemctl start kibana

X-Pack for Kibanaをインストールする

次のコマンドを実行すると、X-Pack for Kibanaを直接インストールできます。

cd /usr/share/kibana
sudo bin/kibana-plugin install x-pack

X-Pack for Kibanaでは、グラフ、機械学習、モニタリングがデフォルトで有効になっています。X-Packは、Kibanaの認証も可能にします。デフォルトのユーザー名はkibana、パスワードはchangemeです。Kibanaユーザーのデフォルトのパスワードを変更することが重要です。次のコマンドを実行してパスワードを変更します。

curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/kibana/_password?pretty' -H 'Content-Type: application/json' -d'
{
  "password": "NewKibanaPassword"
}
'

192.168.0.1サーバーの実際のプライベートIPアドレスと、NewKibanaPasswordKibanaユーザーの新しいパスワードに置き換えます。

次のコマンドを実行して、Kibana構成ファイルを編集します。

sudo nano /etc/kibana/kibana.yml

次の行を見つけ、提供された指示に従って値を変更します。

#elasticsearch.url: "http://localhost:9200"
#elasticsearch.username: "user"
#elasticsearch.password: "password"

上記の行のコメントを外し、elasticsearch.urlElasticsearchインスタンスのURLを提供します。IPアドレスは、で使用されたものと同じIPでなければなりませんelasticsearch.yml。さらに、ユーザー名をからuserelastic設定し、以前に設定したエラスティックユーザーのパスワードも提供します。

次のコマンドを実行して、Kibanaインスタンスを再起動します。

sudo systemctl restart kibana

NginxをKibanaのリバースプロキシとしてインストールする

localhostポート5601でKibanaを実行しているため、ローカルネットワークの外部からKibanaにアクセスするには、ApacheまたはNginxでリバースプロキシをセットアップすることをお勧めします。このチュートリアルでは、NginxをKibanaのリバースプロキシとして設定します。Let's Encryptの無料SSL証明書でNginxインスタンスを保護します。

次のコマンドを実行して、Nginxをインストールします。

sudo apt -y install nginx

Nginxを起動して有効にし、起動時に自動的に起動するようにします。

sudo systemctl start nginx
sudo systemctl enable nginx

Nginxウェブサーバーがインストールされて実行されたので、Certbotのインストールに進むことができます。これは、公式の自動Let's Encrypt証明書クライアントです。次のコマンドを実行して、Certbot PPAをシステムに追加します。

sudo add-apt-repository ppa:certbot/certbot

リポジトリのメタ情報を更新します。

sudo apt update

次のコマンドを実行することで、最新バージョンのCertbotを簡単にインストールできます。

sudo apt -y install python-certbot-nginx 

前のコマンドは、Certbotパッケージと共に必要な依存関係を解決してインストールします。

Certbotがインストールされたので、次のコマンドを実行してドメインの証明書を生成します。

sudo certbot certonly --webroot -w /var/www/html/ -d kibana.example.com

kibana.example.com実際のドメイン名で変更することを忘れないでください。前のコマンドはCertbotクライアントを使用します。このcertonlyパラメーターは、証明書のみを生成するようにCertbotクライアントに指示します。このオプションを使用すると、証明書が自動的にインストールされず、Nginxの構成が変更されません。確認は、指定されたwebrootディレクトリにチャレンジファイルを配置することによって行われます。

Certbotは、更新通知を送信するためにメールアドレスを提供するように求めます。また、使用許諾契約に同意する必要があります。

Let's Encrypt CAから証明書を取得するには、証明書を生成するドメインがサーバーに向けられていることを確認する必要があります。そうでない場合は、ドメインのDNSレコードに必要な変更を加え、DNSが伝播するのを待ってから、証明書要求を再度行ってください。証明書ボットは、証明書を提供する前にドメイン認証局をチェックします。

生成された証明書は、/etc/letsencrypt/live/kibana.example.com/ディレクトリに格納される可能性があります。SSL証明書はとして保存されfullchain.pem、秘密鍵はとして保存されprivkey.pemます。

Let's Encrypt証明書の有効期限は90日です。そのため、cronjobsを使用して証明書の自動更新をセットアップすることをお勧めします。Cronは、定期的なタスクを実行するために使用されるシステムサービスです。

次のコマンドを実行して、cronジョブファイルを開きます。

sudo crontab -e

ファイルの最後に次の行を追加します。

30 5 * * 1 /usr/bin/certbot renew -a nginx --quiet

上記のcronジョブは、毎週月曜日の午前5時30分に実行されます。証明書の有効期限が切れる場合は、自動的に更新されます。

次のコマンドを実行して、Nginxのデフォルトの仮想ホストファイルを編集します。

sudo nano /etc/nginx/sites-available/default

既存のコンテンツを次のコンテンツに置き換えます。

server {
    listen 80 default_server;
    server_name kibana.example.com
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 default_server ssl http2;

    server_name kibana.example.com;

    ssl_certificate           /etc/letsencrypt/live/kibana.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/kibana.example.com/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

kibana.example.com実際のドメイン名で更新していることを確認し、SSL証明書と秘密鍵へのパスも確認してください。

次のコマンドを実行して、Nginx Webサーバーを再起動します。

sudo systemctl restart nginx

すべてが正しく設定されている場合、Kibanaログイン画面が表示されます。kibana設定したユーザー名とパスワードでログインします。ログインに成功し、Kibanaダッシュボードを表示できるはずです。ダッシュボードから離れます。今のところ、後で設定します。

Logstashをインストールする

Logstashは、前に追加した公式のElasticsearchリポジトリからもインストールできます。以下を実行してLogstashをインストールします。

sudo apt -y install logstash

上記のコマンドは、システムに最新バージョンのLogstashをインストールします。Logstashがインストールされたら、次を実行してSystemdサービスデーモンをリロードします。

sudo systemctl daemon-reload

Logstashを起動して、起動時に自動的に起動するようにします。

sudo systemctl enable logstash
sudo systemctl start logstash

Logstash用のX-Packをインストールする

次のコマンドを実行して、Logstash用のX-Packを直接インストールできます。

cd /usr/share/logstash
sudo bin/logstash-plugin install x-pack

X-Pack for Logstashにはデフォルトのユーザーが付属していますlogstash_system。次のコマンドを実行してパスワードをリセットできます。

curl -XPUT -u elastic '192.168.0.1:9200/_xpack/security/user/logstash_system/_password?pretty' -H 'Content-Type: application/json' -d'
{
  "password": "NewLogstashPassword"
}
'

置き換え192.168.0.1、サーバの実際のプライベートIPアドレスを持つとNewLogstashPasswordLogstashユーザーの新しいパスワードを。

次のコマンドを実行して、Logstashサービスを再起動します。

sudo systemctl restart logstash

次のコマンドを実行して、Logstash構成ファイルを編集します。

sudo nano /etc/logstash/logstash.yml

ファイルの最後に次の行を追加して、Logstashインスタンスの監視を有効にします。

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.url: http://192.168.0.1:9200
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: NewLogstashPassword

設定に応じてElasticsearch URLとLogstashパスワードを置き換えます。

これで、さまざまなビートを使用してデータを受信するようにLogstashを構成できます。使用可能なビートには、Packetbeat、Metricbeat、Filebeat、Winlogbeat、Heartbeatのいくつかのタイプがあります。各ビートを個別にインストールする必要があります。

結論

このチュートリアルでは、Ubuntu 17.04にX-Packを使用してElastic Stackをインストールしました。基本的なELKスタックがサーバーにインストールされました。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。