著者は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 /メモリ/ディスクの使用率やネットワーク使用率などのローカルシステムメトリックをCentOS 7サーバーからElastic Stackがインストールされている同じ種類の別のサーバーに転送します。 この配送業者を使用して、サーバーの現在の状態を取得するために必要な基本的なメトリックを収集します。

前提条件

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

  • 非rootユーザーを含むhttps://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7[CentOS 7での初期サーバーセットアップ]ガイドに従ってセットアップされた2台のCentOS 7サーバーsudo特権と、「+ firewalld 」で設定されたファイアウォールを使用します。 ` firewalld +`をセットアップするには、https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers#configuring-a-basic-firewall [“Configuring基本的なファイアウォール」]のセクションhttps://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers [新しいCentOS 7サーバーの追加の推奨手順]チュートリアル。 1つのサーバーで、Elastic Stackをダウンロードします。このチュートリアルでは、これを「Elastic Stackサーバー」と呼びます。ElasticStackサーバーは、このチュートリアルでは4GBのRAMと2つのCPUを持ち、2番目のサーバーを監視します。 この2番目のサーバーは、「2番目のCentOSサーバー」と呼ばれます。

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

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

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

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

ssh @

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

sudo vi /etc/elasticsearch/elasticsearch.yml

次のセクションを見つけて変更し、Elasticsearchがすべてのインターフェイスでリッスンするようにします。 `+ i +`を押して挿入モードに入り、次の強調表示された項目を追加します。

/etc/elasticsearch/elasticsearch.yml

...
network.host:
...

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

終了したら、 `+ ESC `を押して挿入モードを終了し、 `:wq `と ` ENTER `を押してファイルを保存して終了します。 テキストエディターviとその後継Vimの詳細については、https://www.digitalocean.com/community/tutorials/installing-and-using-the-vim-text-editor-on-a-cloud-をご覧ください。 server#managing-documents [クラウドサーバーでのVimテキストエディターのインストールと使用]チュートリアル。 ファイルを保存して終了したら、 ` systemctl +`でElasticsearchサービスを再起動して、新しい設定を適用します。

sudo systemctl restart elasticsearch

次に、2番目のCentOSサーバーからElasticsearchポートへのアクセスを許可します。 特定のIPアドレスまたはサブネットからのアクセスを設定するには、 `+ firewalld +`のhttps://firewalld.org/documentation/man-pages/firewalld.richlanguage.html[rich rule]機能を使用します。

sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="/32" port protocol="tcp" port="9200" accept'

豊富なルールにより、より複雑でカスタマイズ可能な「+ firewalld 」ルールを作成して、ファイアウォールをより詳細に制御できます。 このコマンドでは、2番目のCentOSサーバーのIPアドレスとして設定した「 source 」からElasticの「 port 」「 9200+」への「+ ipv4 +」トラフィックを受け入れるルールを追加しています。スタックサーバー。

次に、 `+ firewalld +`をリロードして、新しいルールを有効にします。

sudo firewall-cmd --reload

3つ以上ある場合は、サーバーごとにこれらのコマンドを繰り返します。 サーバーが同じhttps://en.wikipedia.org/wiki/Subnetwork[network]上にある場合、ネットワーク上のすべてのホストに対して1つのルールを使用してアクセスを許可できます。 これを行うには、IPアドレスの後にある「+ / 32 」を、より低い値、例えば「 / 24 +」に置き換える必要があります。

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

ssh @

`+ curl +`コマンドを使用して、Elastic Stackサーバーへの接続をテストします。

curl :9200

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

Output{
 "name" : "tl5Is5f",
 "cluster_name" : "elasticsearch",
 "cluster_uuid" : "W9AcSNWHQ3mYs2uE8odklA",
 "version" : {
   "number" : "",
   "build_flavor" : "default",
   "build_type" : "rpm",
   "build_hash" : "3bd3e59",
   "build_date" : "2019-03-06T15:16:26.864148Z",
   "build_snapshot" : false,
   "lucene_version" : "7.6.0",
   "minimum_wire_compatibility_version" : "5.6.0",
   "minimum_index_compatibility_version" : "5.0.0"
 },
 "tagline" : "You Know, for Search"
}

接続が機能することがわかったので、メトリックをElastic Stackサーバーに送信する準備ができました。

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

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

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

ssh @

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

sudo yum install 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-03-20T09:51:32.096Z        INFO    instance/beat.go:281    Setup Beat: metricbeat; Version:
2019-03-20T09: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-03-20T09:51:32.137Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.137Z        INFO    [publisher]     pipeline/module.go:110  Beat name: elastic
2019-03-20T09:51:32.138Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.140Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version
2019-03-20T09:51:32.148Z        INFO    template/load.go:130    Template already exists and will not be overwritten.
2019-03-20T09:51:32.148Z        INFO    instance/beat.go:894    Template successfully loaded.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2019-03-20T09:51:32.149Z        INFO    elasticsearch/client.go:165     Elasticsearch url: http://localhost:9200
2019-03-20T09:51:32.150Z        INFO    elasticsearch/client.go:721     Connected to Elasticsearch version
2019-03-20T09:51:32.151Z        INFO    kibana/client.go:118    Kibana url: http://localhost:5601
2019-03-20T09:51:56.209Z        INFO    instance/beat.go:741    Kibana dashboards successfully loaded.
Loaded dashboards

これで、Metricbeatを開始できます。

sudo systemctl start metricbeat

これからブート時にMetricbeatを自動的に開始するには、 `+ enable +`コマンドを使用します:

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--2019.03.20",
       "_type" : "doc",
       "_id" : "A4mU8GgBKrpxEYMLjJZt",
       "_score" : 1.0,
       "_source" : {
         "@timestamp" : "2019-03-20T09: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" : "",
           "name" : "elastic",
           "hostname" : "elastic"
         },
...

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

手順3-2番目のCentOSサーバーでのMetricbeatのインストールと構成

Elastic Stackサーバーにメトリックスを送信するすべてのCentOSサーバーでこの手順を実行します。 Ubuntuサーバーもある場合は、https://www.digitalocean.com/community/tutorials/how-to-gather-infrastructure-metrics-with-metricbeat-on-ubuntu-18-のステップ3に従ってMetricbeatをインストールできます。 04#step-3-%E2%80%94-installing-and-configuring-metricbeat-on-the-second-ubuntu-server [Ubuntu 18.04でMetricbeatでインフラストラクチャメトリックを収集する方法]。

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

ssh @

Elastic Stackコンポーネントは、デフォルトではyumパッケージマネージャーからは使用できませんが、Elasticのパッケージリポジトリを追加することでインストールできます。

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

開始するには、次のコマンドを実行してElasticsearch公開署名キーをダウンロードしてインストールします。

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

次に、Elasticリポジトリを追加します。 任意のテキストエディタを使用して、ファイル「+ elasticsearch.repo 」を「 / etc / yum.repos.d / +」ディレクトリに作成します。

sudo vi /etc/yum.repos.d/elasticsearch.repo

Elastic Stackのコンポーネントをダウンロードしてインストールするために必要な情報をyumに提供するには、 `+ i +`を押して挿入モードに入り、ファイルに次の行を追加します。

/etc/yum.repos.d/elasticsearch.repo

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

完了したら、ファイルを保存して閉じます。

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

sudo yum install metricbeat

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

sudo vi /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アドレスに移動します。 https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elastic-stack-on-centos-7#stepのステップ2で定義したログイン資格情報を入力した後-2-%E2%80%94-installing-and-configuring-kibana-dashboard [The Elastic Stack tutorial]: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 [モニタリングとアラートの実施]。