著者はhttps://www.brightfunds.org/organizations/computer-history-museum[Computer History Museum]を選択して、https://do.co/w4do-cta [Write for DOnations]の一部として寄付を受け取りましたプログラム。

前書き

Metricbeat。これは、さまざまなタイプのサーバーデータをサーバーに送信するのに役立ついくつかのhttps://www.elastic.co/products/beats[Beats]の1つです。 Elastic Stackサーバーは、サーバーにインストールされると、システム全体およびプロセスごとのCPUおよびメモリの統計を定期的に収集し、データを直接送信する軽量データシッパーです。 Elasticsearchデプロイメント。 この配送業者は、Elastic Stackバージョン5.0の以前のhttps://www.elastic.co/guide/en/beats/topbeat/current/_overview.html[Topbeat]を置き換えます。

現在Elasticから入手できるその他のビートは次のとおりです。

  • Filebeat:ログファイルを収集して出荷します。

  • Packetbeat:ネットワークデータを収集して分析します。

  • Winlogbeat:Windowsイベントログを収集します。

  • Auditbeat:Linux監査フレームワークデータを収集し、ファイルの整合性を監視します。

  • Heartbeat:アクティブなプロービングでサービスの可用性を監視します。

このチュートリアルでは、Metricbeatを使用して、CPU /メモリ/ディスクの使用率やネットワーク使用率などのローカルシステムメトリックをUbuntu 18.04サーバーからElastic Stackがインストールされている同種の別のサーバーに転送します。 この配送業者を使用して、サーバーの現在の状態を取得するために必要な基本的なメトリックを収集します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • Ubuntu 18.04の初期サーバーセットアップガイドに従って、2台のUbuntu 18.04サーバーをセットアップしました。 sudo特権を持つrootユーザーと `+ ufw +`で設定されたファイアウォール。 1つのサーバーで、Elastic Stackをダウンロードします。このチュートリアルでは、これを「Elastic Stackサーバー」と呼びます。ElasticStackサーバーは2番目のサーバーを監視します。この2番目のサーバーは「2番目のUbuntuサーバー」と呼ばれます。

  • チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elastic-stack-on-ubuntu-18に従ってElastic StackサーバーにインストールされたElastic Stack -04 [Ubuntu 18.04にElasticsearch、Logstash、Kibana(Elastic Stack)をインストールする方法]。

ステップ1-外部IPでトラフィックをリッスンするためのElasticsearchの構成

チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elastic-stack-on-ubuntu-18-04[Elasticsearch、Logstash、およびUbuntu 18.04のKibana(Elastic Stack)は、Elasticsearchのアクセスをローカルホストのみに制限しました。 多くのホストを監視する必要があることが多いため、実際にはこれはまれです。 このステップでは、外部IPアドレスとやり取りするようにElastic Stackコンポーネントを構成します。

非ルートユーザーとしてElastic Stackサーバーにログインします。

ssh @

任意のテキストエディターを使用して、Elasticsearchのメイン設定ファイルである `+ elasticsearch.yml `を編集します。 このチュートリアルでは、 ` nano +`を使用します。

sudo nano /etc/elasticsearch/elasticsearch.yml

次のセクションを見つけて変更し、Elasticsearchがすべてのインターフェイスをリッスンするようにします。

/etc/elasticsearch/elasticsearch.yml

. . .
network.host:
. . .

アドレス「0.0.0.0」には、多くのコンテキストで特定の意味が割り当てられます。 この場合、「+ 0.0.0.0+」は「すべてのIPv4アドレス」を意味します。

「+ nano 」を使用している場合は、「 CTRL + X 」、「 Y 」、「 ENTER 」の順に押して、「 elasticsearch.yml 」を保存して閉じます。 次に、 ` systemctl +`でElasticsearchサービスを再起動して、新しい設定を適用します。

sudo systemctl restart elasticsearch

次に、2番目のUbuntuサーバーからElasticsearchポートへのアクセスを許可します。 これには `+ ufw +`を使用します。

sudo ufw allow from /32 to any port 9200

3台以上ある場合は、サーバーごとにこのコマンドを繰り返します。 サーバーが同じhttps://en.wikipedia.org/wiki/Subnetwork[network]上にある場合、ネットワーク上のすべてのホストに対して1つのルールを使用してアクセスを許可できます。 これを行うには、プレフィックス「+ / 32 」をより低い値、例えば「 / 24 +」に置き換える必要があります。 UFWのセットアップの例は、https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands [UFW Essentials:Common Firewall Rules and Commands]チュートリアルで見つけることができます。

次に、接続をテストします。 非rootユーザーとして2番目のUbuntuサーバーにログインします。

ssh @

`+ telnet +`コマンドを使用して、Elastic Stackサーバーへの接続をテストします。 このコマンドは、https://en.wikipedia.org/wiki/Telnet [Telnet]プロトコルを使用した別のホストとの通信を可能にし、リモートシステム上のポートの可用性を確認できます。

telnet  9200

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

OutputTrying ...
Connected to .
Escape character is '^]'.

`+ CTRL ] +`を押してから ` CTRL + d `を押して、Telnet接続を閉じます。 「 quit 」と入力し、「 ENTER +」を押してTelnetユーティリティを終了できます。

これで、メトリックをElastic Stackサーバーに送信する準備が整いました。

ステップ2-Elastic StackサーバーでのMetricbeatのインストールと構成

次の2つのステップでは、最初にElasticStackサーバーにMetricbeatをインストールし、必要なすべてのデータをインポートしてから、2番目のUbuntuサーバーにクライアントをインストールして構成します。

非ルートユーザーとしてElastic Stackサーバーにログインします。

ssh @

以前に前提条件でElasticsearchリポジトリーをセットアップしたため、Metricbeatをインストールするだけです。

sudo apt install metricbeat

Metricbeatのインストールが完了したら、インデックステンプレートをElasticsearchにロードします。 Elasticsearch indexは、同様の特性を持つドキュメントのコレクションです。 特定の名前は各インデックスを識別し、Elasticsearchはさまざまな操作を実行するときにインデックスを参照するために使用します。 新しいインデックスを作成すると、Elasticsearchサーバーがインデックステンプレートを自動的に適用します。

テンプレートをロードするには、次のコマンドを使用します。

sudo metricbeat setup --template -E 'output.elasticsearch.hosts=["localhost:9200"]'

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

OutputLoaded index template

Metricbeatには、Kibanaのサンプルダッシュボード、視覚化、およびKibanaのMetricbeatデータを視覚化するための検索が含まれています。 ダッシュボードを使用する前に、インデックスパターンを作成し、ダッシュボードをKibanaに読み込む必要があります。

テンプレートをロードするには、次のコマンドを使用します。

sudo metricbeat setup -e -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

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

Output. . .
2019-02-15T09:51:32.096Z        INFO    instance/beat.go:281    Setup Beat: metricbeat; Version:
2019-02-15T09:51:32.136Z        INFO    add_cloud_metadata/add_cloud_metadata.go:323    add_cloud_metadata: hosting provider type detected as digitalocean, metadata={"instance_id":"133130541","provider":"digitalocean","region":"fra1"}
2019-02-15T09:51:32.137Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.137Z        INFO    [publisher]     pipeline/module.go:110  Beat name: elastic
2019-02-15T09:51:32.138Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.140Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version
2019-02-15T09:51:32.148Z        INFO    template/load.go:130    Template already exists and will not be overwritten.
2019-02-15T09:51:32.148Z        INFO    instance/beat.go:894    Template successfully loaded.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2019-02-15T09:51:32.149Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-02-15T09:51:32.150Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version
2019-02-15T09:51:32.151Z        INFO    kibana/client.go:118    Kibana url: http://localhost:5601
2019-02-15T09:51:56.209Z        INFO    instance/beat.go:741    Kibana dashboards successfully loaded.
Loaded dashboards

これで、Metricbeatを起動して有効にできます。

sudo systemctl start metricbeat
sudo systemctl enable metricbeat

Metricbeatは、システムの統計情報をElasticsearchに送信し始めます。

Elasticsearchが実際にこのデータを受信して​​いることを確認するには、次のコマンドでMetricbeatインデックスをクエリします。

curl -XGET 'http://localhost:9200/metricbeat-*/_search?pretty'

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

Output...
{
 "took" : 3,
 "timed_out" : false,
 "_shards" : {
   "total" : 1,
   "successful" : 1,
   "skipped" : 0,
   "failed" : 0
 },
 "hits" : {
   "total" : ,
   "max_score" : 1.0,
   "hits" : [
     {
       "_index" : "metricbeat-6.6.2-2019.02.15",
       "_type" : "doc",
       "_id" : "A4mU8GgBKrpxEYMLjJZt",
       "_score" : 1.0,
       "_source" : {
         "@timestamp" : "2019-02-15T09:54:52.481Z",
         "metricset" : {
           "name" : "network",
           "module" : "system",
           "rtt" : 125
         },
         "event" : {
           "dataset" : "system.network",
           "duration" : 125260
         },
         "system" : {
           "network" : {
             "in" : {
               "packets" : 59728,
               "errors" : 0,
               "dropped" : 0,
               "bytes" : 736491211
             },
             "out" : {
               "dropped" : 0,
               "packets" : 31630,
               "bytes" : 8283069,
               "errors" : 0
             },
             "name" : "eth0"
           }
         },
         "beat" : {
           "version" : "6.6.2",
           "name" : "elastic",
           "hostname" : "elastic"
         },
...

行 `” total “:、`は、Metricbeatがこの特定のメトリックに対して108個の検索結果を見つけたことを示します。 出力に合計ヒット数が0と表示された場合は、セットアップのエラーを確認する必要があります。 期待どおりの出力を受け取ったら、次のステップに進みます。このステップでは、2番目のUbuntuサーバーにMetricbeatをインストールします。

ステップ3-2番目のUbuntuサーバーへのMetricbeatのインストールと構成

Elastic Stackサーバーにメトリックスを送信するすべてのUbuntuサーバーでこの手順を実行します。

非rootユーザーとして2番目のUbuntuサーバーにログインします。

ssh @

Elastic Stackコンポーネントは、Ubuntuのデフォルトパッケージリポジトリでは使用できません。 ただし、Elasticのパッケージソースリストを追加した後、APTでインストールできます。

システムをパッケージのなりすましから保護するために、Elastic StackのすべてのパッケージはElasticsearch署名キーで署名されています。 パッケージマネージャーは、キーを使用して認証されたパッケージを信頼します。 このステップでは、Metricbeatをインストールするために、Elasticsearch公開GPGキーをインポートし、Elasticパッケージソースリストを追加します。

開始するには、次のコマンドを実行してElasticsearch公開GPGキーをAPTにインポートします。

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

次に、Elasticソースリストを `+ sources.list.d +`ディレクトリに追加します。APTはここで新しいソースを探します。

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

次に、APTが新しいElasticソースを読み取るようにパッケージリストを更新します。

sudo apt update

次に、次のコマンドでMetricbeatをインストールします。

sudo apt install metricbeat

Metricbeatのインストールが完了したら、Elasticsearchに接続するように設定します。 設定ファイル `+ metricbeat.yml +`を開きます:

sudo nano /etc/metricbeat/metricbeat.yml

Metricbeatは多数の出力をサポートしていますが、通常は追加処理のためにイベントをElasticsearchまたはLogstashに直接送信するだけです。 次のセクションを見つけて、IPアドレスを更新します。

/etc/metricbeat/metricbeat.yml

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
 # Array of hosts to connect to.
 hosts: [":9200"]

...

ファイルを保存して閉じます。

Metricbeatの機能をhttps://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html[modules]で拡張できます。 このチュートリアルでは、https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-system.html [+ system +]モジュールを使用します。これにより、サーバーのCPU /メモリ/ディスクの使用状況やネットワーク使用率などの統計。

この場合、 `+ system +`モジュールはデフォルトで有効になっています。 次を実行すると、有効化および無効化されたモジュールのリストを表示できます。

sudo metricbeat modules list

次のようなリストが表示されます。

OutputEnabled:
system

Disabled:
aerospike
apache
ceph
couchbase
docker
dropwizard
elasticsearch
envoyproxy
etcd
golang
graphite
haproxy
http
jolokia
kafka
kibana
kubernetes
kvm
logstash
memcached
mongodb
munin
mysql
nginx
php_fpm
postgresql
prometheus
rabbitmq
redis
traefik
uwsgi
vsphere
windows
zookeeper

モジュールのパラメーターは、 `+ / etc / metricbeat / modules.d / system.yml `設定ファイルで確認できます。 このチュートリアルの場合、構成を変更する必要はありません。 デフォルトのメトリックセットは、「 cpu」、「+ load」、「+ memory」、「+ network 」、「 process 」、および「 process_summary +」です。 各モジュールには1つ以上のメトリックセットがあります。 メトリックセットは、データを取得して構造化するモジュールの一部です。 メトリックセットは、各メトリックを個別のイベントとして収集するのではなく、リモートシステムへの単一のリクエストで複数の関連メトリックのリストを取得します。

これで、Metricbeatを起動して有効にできます。

sudo systemctl start metricbeat
sudo systemctl enable metricbeat

メトリックを収集するすべてのサーバーでこの手順を繰り返す必要があります。 その後、次のステップに進むことができます。このステップでは、Kibanaのいくつかのダッシュボードをナビゲートする方法を確認できます。

ステップ4-Kibanaダッシュボードの探索

このステップでは、「前提条件」セクションでインストールしたWebインターフェースであるKibanaを見ていきます。

Webブラウザーで、Elastic StackサーバーのFQDNまたはパブリックIPアドレスに移動します。 Elastic Stackチュートリアル、Kibanaホームページが表示されます。

image:https://assets.digitalocean.com/articles/cart_64850/Metricbeat_Kibana_Landing_Page.png [Kibanaホームページ]

左側のナビゲーションバーにある[発見]リンクをクリックします。 * Discover ページで、定義済みの meticbeat-**インデックスパターンを選択して、Metricbeatデータを表示します。 デフォルトでは、過去15分間のすべてのログデータが表示されます。 ヒストグラムといくつかのメトリックの詳細が表示されます。

image:https://assets.digitalocean.com/articles/cart_64850/Metribeat_Data.png [ページを発見]

ここでは、メトリックを検索および参照したり、ダッシュボードをカスタマイズしたりできます。 ただし、この時点では、サーバーからシステムの統計情報のみを収集しているため、あまり多くはありません。

左側のパネルを使用して*ダッシュボード*ページに移動し、* Metricbeat System *ダッシュボードを検索します。 そこで、Metricbeat `+ system`モジュールに付属しているサンプルダッシュボードを検索できます。

たとえば、すべてのホストに関する簡単な情報を表示できます。

image:https://assets.digitalocean.com/articles/cart_64850/Metricbeat_Metrics_Overview.png [Syslog Dashboard]

ホスト名をクリックして、詳細情報を表示することもできます。

image:https://assets.digitalocean.com/articles/cart_64850/Metricbeat_Host_Metrics.png [Sudo Dashboard]

Kibanaには、グラフ化やフィルタリングなど、他にも多くの機能がありますので、気軽に探索してください。

結論

このチュートリアルでは、Metricbeatをインストールし、システムメトリックを収集および分析するようにElastic Stackを構成しました。 Metricbeatには、内部https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-modules.html[modules]が付属しており、Apache、Nginx、Docker、MySQL、PostgreSQLなどのサービスからメトリックを収集します。 必要なモジュールをオンにするだけで、アプリケーションのメトリックを収集して分析できるようになりました。

サーバー監視の詳細については、https://www.digitalocean.com/community/tutorials/an-introduction-to-metrics-monitoring-and-alerting [メトリック、監視、アラートの概要]をご覧ください。およびhttps://www.digitalocean.com/community/tutorials/putting-monitoring-and-alerting-into-practice [モニタリングとアラートの実施]。