Ubuntu 18.04でMetricbeatを使用してインフラストラクチャメトリックを収集する方法

著者は、Write for DOnationsプログラムの一部として寄付を受け取るためにComputer History Museumを選択しました。

前書き

さまざまなタイプのサーバーデータをElastic Stackサーバーに送信するのに役立ついくつかのBeatsの1つであるMetricbeatは、サーバーにインストールされると定期的にシステムを収集する軽量のデータシッパーです。ワイドでプロセスごとのCPUとメモリの統計情報を取得し、Elasticsearchデプロイメントにデータを直接送信します。 この配送業者は、Elastic Stackのバージョン5.0の以前のTopbeatを置き換えます。

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

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

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

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

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

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

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

前提条件

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

  • sudo権限を持つ非rootユーザーとufwで構成されたファイアウォールを含む、Initial Server Setup Guide for Ubuntu 18.04に従ってセットアップされた2つのUbuntu18.04サーバー。 1つのサーバーで、Elastic Stackをダウンロードします。このチュートリアルでは、これを「Elastic Stackサーバー」と呼びます。ElasticStackサーバーは2番目のサーバーを監視します。この2番目のサーバーは「2番目のUbuntuサーバー」と呼ばれます。

  • チュートリアルHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 18.04に従って、ElasticStackサーバーにインストールされたElasticStack。

[.note]#Note:Elastic Stackをインストールするときは、スタック全体で同じバージョンを使用する必要があります。 このチュートリアルでは、スタック全体の最新バージョンを使用します。これは、この記事の執筆時点では、Elasticsearch 6.6.2、Kibana 6.6.2、Logstash 6.6.2、およびMetricbeat 6.6.2。
です。 #

[[step-1 -—- configuring-elasticsearch-to-listen-for-traffic-on-an-external-ip]] ==ステップ1—外部IPでトラフィックをリッスンするようにElasticsearchを構成する

チュートリアルHow To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 18.04は、Elasticsearchへのアクセスをローカルホストのみに制限しました。 多くのホストを監視する必要があることが多いため、実際にはこれはまれです。 このステップでは、外部IPアドレスとやり取りするようにElastic Stackコンポーネントを構成します。

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

ssh sammy@Elastic_Stack_server_ip

お好みのテキストエディタを使用して、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には、さまざまなコンテキストで特定の意味が割り当てられます。 この場合、0.0.0.0は「すべてのIPv4アドレス」を意味します。

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

sudo systemctl restart elasticsearch

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

sudo ufw allow from second_ubuntu_server_ip/32 to any port 9200

3台以上ある場合は、サーバーごとにこのコマンドを繰り返します。 サーバーが同じnetworkにある場合は、ネットワーク上のすべてのホストに対して1つのルールを使用してアクセスを許可できます。 これを行うには、プレフィックス/32をより低い値(/24など)に置き換える必要があります。 UFW Essentials: Common Firewall Rules and Commandsチュートリアルで、UFWセットアップのその他の例を見つけることができます。

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

ssh sammy@second_ubuntu_server_ip

telnetコマンドを使用して、ElasticStackサーバーへの接続をテストします。 このコマンドは、Telnetプロトコルを使用した別のホストとの通信を有効にし、リモートシステムのポートの可用性を確認できます。

telnet Elastic_Stack_server_ip 9200

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

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

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

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

[[step-2 -—- installing-and-configuring-metricbeat-on-the-elastic-stack-server]] ==ステップ2— ElasticStackサーバーへのMetricbeatのインストールと構成

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

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

ssh sammy@Elastic_Stack_server_ip

以前に前提条件で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: 6.6.2
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 6.6.2
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 6.6.2
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" : 108,
    "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" : 108,は、Metricbeatがこの特定のメトリックの108件の検索結果を検出したことを示しています。 出力に合計ヒット数が0と表示された場合は、セットアップのエラーを確認する必要があります。 期待どおりの出力を受け取ったら、次のステップに進みます。このステップでは、2番目のUbuntuサーバーにMetricbeatをインストールします。

[[step-3 -—- installing-and-configuring-metricbeat-on-the-second-ubuntu-server]] ==ステップ3—2番目のUbuntuサーバーへのMetricbeatのインストールと構成

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

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

ssh sammy@second_ubuntu_server_ip

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

[.note]#Note: Metricbeatの構成ファイルはYAML形式です。つまり、インデントが非常に重要です。 このファイルを編集するときは、スペースを追加しないでください。

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

/etc/metricbeat/metricbeat.yml

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

...

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

modulesを使用してMetricbeatの機能を拡張できます。 このチュートリアルでは、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構成ファイルで確認できます。 このチュートリアルの場合、構成を変更する必要はありません。 デフォルトのメトリックセットは、cpuloadmemorynetworkprocess、およびprocess_summaryです。 各モジュールには1つ以上のメトリックセットがあります。 メトリックセットは、データを取得して構造化するモジュールの一部です。 メトリックセットは、各メトリックを個別のイベントとして収集するのではなく、リモートシステムへの単一のリクエストで複数の関連メトリックのリストを取得します。

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

sudo systemctl start metricbeat
sudo systemctl enable metricbeat

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

[[step-4 -—- exploring-kibana-dashboards]] ==ステップ4—Kibanaダッシュボードの探索

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

Webブラウザーで、Elastic StackサーバーのFQDNまたはパブリックIPアドレスに移動します。 the Elastic Stack tutorialのステップ2で定義したログイン資格情報を入力すると、Kibanaホームページが表示されます。

Kibana Homepage

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

Discover page

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

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

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

Syslog Dashboard

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

Sudo Dashboard

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

結論

このチュートリアルでは、Metricbeatをインストールし、システムメトリックを収集して分析するようにElastic Stackを構成しました。 Metricbeatには、Apache、Nginx、Docker、MySQL、PostgreSQLなどのサービスからメトリックを収集する内部modulesが付属しています。 必要なモジュールをオンにするだけで、アプリケーションのメトリックを収集して分析できるようになりました。

サーバーの監視について詳しく知りたい場合は、An Introduction to Metrics, Monitoring, and AlertingPutting Monitoring and Alerting into Practiceを確認してください。

Related