CentOS 7でInfluxDBを使用してシステムメトリックを分析する方法

前書き

InfluxDBは、時系列、メトリック、および分析データベースです。 時系列データベースは、一定期間にわたって行われた連続した測定から生じるデータを保存する問題に対処するように設計されています。 このデータは、システムメトリック(CPUやメモリの使用量など)やアプリケーションメトリック(アプリケーションエラーやRESTエンドポイントコールなど)などの項目で構成されます。

システムが長く動作するほど、蓄積されるデータ量が多くなります。 InfluxDBは、このデータを効率的に保存するためのソリューションを提供します。 DevOps、メトリック、センサーデータ、およびリアルタイムの監視と分析のユースケースを対象としています。 InfluxDBを使用すると、履歴分析も提供する強力なリアルタイム監視フレームワークをすばやく構築できます。

このガイドでは、以下について説明します。

  • CentOS 7にInfluxDBをインストールおよび構成する方法。

  • collectdシステム統計デーモンからInfluxDBにシステム監視データをフィードする方法。

  • InfluxDB SQLのようなクエリ言語を使用して、監視対象システムのパフォーマンスをすばやく理解および分析する方法。

  • Grafana視覚化ツールスタックを使用して豊富なダッシュボードソリューションを作成し、InfluxDBインスタンスに保存されているデータをより適切に探索して表示する方法。

前提条件

開始する前に、次のものが必要です。

ステップ1-InfluxDBのインストール

この手順では、InfluxDBをインストールします。

InfluxDBは自己完結型システムとして配布されます。 これは、外部依存関係がないことを意味します。データベースを実行するために必要なものはすべて、インストール中に使用するリリースパッケージで提供されるため、インストールが簡単になります。

まず、システムを更新して、最新のバグとセキュリティ修正を確実に適用します。

sudo yum -y update

次に、InfluxDBの最新バージョンをインストールします。これは、執筆時点ではv0.8.8です。

sudo yum -y install  https://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm

パッケージが正常にインストールされると、いくつかのファイルが `+ / opt / influxdb / versions / 0.8.8 `にインストールされ、シンボリックリンクが ` / etc / init.d +`に作成されますInfluxDBサービス管理スクリプト。

ステップ2-InfluxDBの構成と起動

この手順では、InfluxDB構成をカスタマイズして、匿名データレポートを無効にし、デフォルトの読み取りタイムアウト制限を延長します。

InfluxDBのメインの構成ファイルは「+ / opt / influxdb / shared / config.toml +」です。 これはhttps://github.com/toml-lang/toml[TOML]形式を使用します。これはINI構成形式に非常に似ており、明らかなセマンティクスのために読みやすいように設計されています。

構成をカスタマイズする前に、元のバックアップを作成します。

sudo cp /opt/influxdb/shared/config.toml /opt/influxdb/shared/config.toml_backup

バージョン0.7.1の時点で、InfluxDBは24時間ごとに「+ m.influxdb.com +」に匿名データを報告します。 帯域幅の使用を最小限に抑えるために、このレポートを無効にします。 最初に、nanoまたはお気に入りのテキストエディターを使用して編集するために構成ファイルを開きます。

sudo nano /opt/influxdb/shared/config.toml

設定キー `+ reporting-disabled `を見つけて、 ` true +`に変更します。 編集後、そのセクションは次のようになります。

/opt/influxdb/shared/config.tomlの抜粋

. . .
# Change this option to true to disable reporting.
reporting-disabled =

[logging]
. . .

次に、デフォルトの読み取りタイムアウトを更新して、接続のリードタイムをわずかに長くします。 読み取りタイムアウトは、データベースへの接続が閉じられるまで待機する時間を制御します。

同じ設定ファイルで、設定キー「+ read-timeout 」を見つけて、「 5s 」から「 10s +」に変更します。

/opt/influxdb/shared/config.tomlの抜粋

. . .
# However, if a request is taking longer than this to complete, could be a problem.
read-timeout = "s"

[input_plugins]
. . .

ファイルを保存して閉じ、InfluxDBデーモンを起動します。

sudo /etc/init.d/influxdb start

正常に起動すると、サービスマネージャースクリプトは次の出力を提供します。

成功したデーモン開始出力

Setting ulimit -n 65536
Starting the process influxdb [ OK ]
influxdb process was started [ OK ]

InfluxDBが起動したら、Webブラウザーで「+ http://:8083+」に移動して、InfluxDBが稼働していることを確認します。 これにより、* Connect および Hostname and Port Settings *という2つのセクションがあるデフォルトの管理UIが表示されます。

ステップ3-デフォルトのInfluxDB管理者資格情報の変更

すべてのInfluxDBには、管理者資格情報のデフォルトセットが付属しています。 セキュリティのために、このパスワードを変更する必要があります。

  • Connect セクションでデフォルトのユーザー名 root とパスワード root *を使用してInfluxDB UIにログインします。 データベースを空白のままにして、青い[接続]ボタンをクリックします。

次のページのトップメニューで、* Cluster Admins をクリックします。 これにより、ユーザー管理ページに移動します。 * Username *セクションで、 root をクリックし、新しいパスワードを2回入力して、青色の Change Password *ボタンをクリックしてパスワードを変更します。

最後に、青色の*切断*ボタンを使用してログアウトし、新しいパスワードを使用して再度ログインします。

ステップ4-データベースの作成

InfluxDBを最初にセットアップしたとき、実際のデータベースは含まれていないため、メトリックを保存するために最終的に使用するデータベースを作成する必要があります。

Web UIのトップメニューから[データベース]メニューをクリックします。 [データベースの作成]セクションの[データベースの詳細]で、データベース名として* metrics *を入力します。 * Shard Spaces *オプションのデフォルトオプションは保持できます。 次に、右下にある青色の[データベースの作成]ボタンをクリックして、データベースを作成します。

データベースが正常に作成されると、画面の上部にある* Explore Data *リンクの横に表示されます。

image:https://assets.digitalocean.com/articles/influxdb/CPrvI85.png [InfluxDBデータベース作成画面]

作成したデータベースが正しく機能していることを確認するために、データUIを使用してデータベースにサンプルデータを書き込んでチェックできます。 * Explore Data *リンクをクリックして、データUIにアクセスします。 次の画面が表示されます。

image:https://assets.digitalocean.com/articles/influxdb/klCmqfX.png [InfluxDBデータUI画面]

この画面から、いくつかのテストデータをデータベースに書き込むことができます。 また、データベースに保存されているデータに対してアドホッククエリを発行し、基本的な視覚化を確認することもできます。 データベースが機能していることを確認するために、少しデータを書きましょう。

Web UIを使用してデータを入力するには、シリーズのシリーズ名と値を提供する必要があります。 シリーズ名はスペースを含まない英数字の文字列であり、値フィールドはhttp://json.org/[JSON]キーと値の形式で指定する必要があります。

  • Write Point セクションで、 Time Series Name test_metric を入力し、 Values に「+ {"value":23.4} + `」と入力します。 次に、青色の Write Point ボタンをクリックしてデータを入力します。 ボタンの横に緑色で 200 OK *がポップアップ表示されます。

同じ時系列名と次の各値でプロセスを繰り返します: + {" value ":13.1} ++ {" value ":13.1} ++ {" value ":78.1} + `、および + {"value":90.4} + `。 意図的に値13.1を2回書いていることに注意してください。 合計5ポイントを追加します。

いくつかのサンプルデータポイントを作成したので、それらを検査できます。 ページ上部の[ポイントの読み取り]セクションの[クエリ]ボックスに、次のクエリを入力します。

InfluxDBクエリ

select * from test_metric

次に、青色の[クエリの実行]ボタンを押します。 このクエリの結果には、 `+ test_metric +`シリーズのデータ​​ベースに保存されているすべてのデータポイントが表示されます。 次のようなグラフが表示されます。

image:https://assets.digitalocean.com/articles/influxdb/o3V5Gy6.png [InfluxDBサンプル結果]

この画面には、時系列におけるメトリックの傾向を要約する折れ線グラフと、データベースに保存されているデータを要約するデータテーブルが表示されます。

列識別子を使用して、検索の範囲を絞り込むこともできます。 たとえば、イベント値が13.1であるイベントを検索するには、次の検索クエリを入力します。

InfluxDBクエリ

select * from test_metric where value = 13.1

これにより、サンプルデータに対して2つの行が返されます。

image:https://assets.digitalocean.com/articles/influxdb/Rfsb7Cn.png [InfluxDB Filtered Results]

もう少し詳しく説明するために、InfluxDBのデータは時系列で編成されています。この例では、「+ test_metric 」です。 各シリーズには、イベントに対応するデータポイントのセットがあります。 データを入力したときに、上記の5つのイベントを作成しました。 各イベントには、時間、シーケンス番号、およびイベントに対して測定しているメトリックに類似したいくつかの列があります。 この例では、5つのイベントのそれぞれに「 value +」という単一のメトリックがあります。

ステップ5-collectdのインストールと構成

このステップでは、システムのメトリックを収集するためにcollectdをセットアップおよび構成します。 collectdは、パフォーマンスデータを収集、転送、および保存するUnixデーモンです。 既存または迫り来るボトルネックを検出するために利用可能なリソースの概要を維持するのに役立ちます。

まず、EPEL(Enterprise Linux用の追加パッケージ)リポジトリを有効にします。

sudo yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

次に、collectdをインストールします。

sudo yum -y install collectd

パッケージが正常にインストールされると、多数のバイナリ、共有ライブラリ、および構成ファイルが作成されます。 注意すべき主なファイルは、collected設定ファイルである `+ / etc / collectd.conf `とプライマリcollectdデーモンバイナリである ` / usr / sbin / collectd +`です。 InfluxDBの場合と同様に、最初に元の構成ファイルのコピーを作成しましょう。

sudo cp /etc/collectd.conf /etc/collectd.conf_backup

次に、編集のために構成ファイルを開きます。

sudo nano /etc/collectd.conf

収集されたメインの構成ファイルには多くの設定が含まれていますが、その大部分はコメントアウトされているため、デフォルトではアクティブではありません。 一部のコメントを解除して変更します。

ファイル構成の上部の「グローバル」セクションに、次が表示されます。 編集するパーツは赤で強調表示されます。

/etc/collectd.confオリジナルの抜粋

. . .
Hostname    ""
#FQDNLookup   true
BaseDir     "/var/lib/collectd"
PIDFile     "/var/run/collectd.pid"
PluginDir   "/usr/lib64/collectd"
TypesDB     "/usr/share/collectd/types.db"
. . .

行の先頭にある「#」を削除して、Hostname、BaseDir、PIDFile、PluginDir、およびTypesDBフィールドのコメントを解除します。 さらに、ホスト名フィールドを「+ influxdb +」に設定します。 完了すると、ファイルのこのセクションは次のようになります。

/etc/collectd.conf変更の抜粋

Hostname    ""
#FQDNLookup   true
BaseDir     "/var/lib/collectd"
PIDFile     "/var/run/collectd.pid"
PluginDir   "/usr/lib64/collectd"
TypesDB     "/usr/share/collectd/types.db"

次に、LoadPluginセクションまでスクロールします。このセクションには、多数のプラグインがアルファベット順にリストされています。 それらをスクロールして、行の先頭にある「#」を削除して、「+ LoadPlugin network 」および「 LoadPlugin uptime +」行のコメントを解除します。

最後に、collectdを構成して、InfluxDBに直接データを送信します。

「プラグイン構成」セクションまでスクロールダウンします。 セクションセパレーター(以下に表示)の後に、ネットワークプラグイン構成(赤で強調表示)を追加します。

/etc/collectd.conf変更の抜粋

. . .
##############################################################################
# Plugin configuration                                                       #
#----------------------------------------------------------------------------#
# In this section configuration stubs for each plugin are provided. A desc-  #
# ription of those options is available in the collectd.conf(5) manual page. #
##############################################################################





#<Plugin "aggregation">
. . .

ファイルを保存して終了します。 構成をチェックして、タイプミスや構文エラーを誤って導入していないことを確認する必要があります。 collectdを使用して、次のように構成をテストできます。

sudo /usr/sbin/collectd -t

収集された構成にエラーがない場合、このコマンドは出力なしで戻ります。 ファイルにエラーが見つかった場合、それらはターミナルにリストされます。

構成にエラーがなければ、collectdを再起動して新しい構成をアクティブにします。 これには少し時間がかかる場合があります。

sudo service collectd start

ステップ6-収集されたメトリックを消費するようにInfluxDBを構成する

InfluxDBでcollectdによって収集された収集済みシステムメトリックを保存するには、InfluxDB collectd入力プラグインを有効にして構成する必要があります。

まず、編集のためにInfluxDB構成ファイルを開きます。

sudo nano /opt/influxdb/shared/config.toml

次のような `+ input_plugins.collectd +`プラグイン設定を見つけます。 変更する行は赤で強調表示されます。

/opt/influxdb/shared/config.toml元の抜粋

. . .
 # Configure the collectd api
 [input_plugins.collectd]
 enabled =
 # address = "0.0.0.0" # If not set, is actually set to bind-address.
  port =
  database =
 # types.db can be found in a collectd installation or on github:
 # https://github.com/collectd/collectd/blob/master/src/types.db
  typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
. . .

以下の変更を行って、以下の抜粋に一致するように変更します。

  • enabledをtrueに設定します。

  • ポートを8096に変更します。

  • データベースをメトリックに変更します。

  • ポート、データベース、typesdbの行のコメントを解除します。

/opt/influxdb/shared/config.toml変更の抜粋

. . .
 # Configure the collectd api
 [input_plugins.collectd]
 enabled =
 # address = "0.0.0.0" # If not set, is actually set to bind-address.
 port =
 database = ""
 # types.db can be found in a collectd installation or on github:
 # https://github.com/collectd/collectd/blob/master/src/types.db
 typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
. . .

ファイルを保存し、InfluxDBを再起動して新しい構成をアクティブにします。

sudo /etc/init.d/influxdb restart

次に、InfluxDBがcollectdからシステムメトリックを受信して​​いることを確認しましょう。 ステップ5で中断したUIの* Data Interface で、 Read *の下の Query テキストボックスに次のクエリを入力し、青色の Execute Query *ボタンを押します。

InfluxDBクエリ

list series

collectdからデータを受信して​​いる場合、以下のような一連の長いリストを確認する必要があります。

image:https://assets.digitalocean.com/articles/influxdb/YXJ5bvF.png [InfluxDB Collected Series]

これで、ステップ5のようにこのデータを調べることにより、システムのパフォーマンスの分析を開始できます。 たとえば、次のクエリを発行すると、システムのメモリ使用量を観察できます。

InfluxDBクエリ

select * from "influxdb/memory/memory-used"

結果のデータ表示は、InfluxDBインスタンスに記録されたメモリ使用量の変動を明確に示しています。 例を示しましょう。

image:https://assets.digitalocean.com/articles/influxdb/8KIQWsK.png [InfluxDBサンプルメモリ使用量結果セット]

手順7-Grafanaのインストールと起動

InfluxDBのウェブインターフェースを使用して、データを探索し、時系列データからシステムの傾向を視覚化できます。 ただし、Web UIはやや初歩的なものであり、収集しているメトリックデータを表示するには理想的ではありません。

Grafanaは、機能豊富なメトリックダッシュボードであり、InfluxDBとうまく統合されます。 Grafanaは、システムの概要を提供し、ウォールディスプレイとして共有または使用するのに適したダッシュボードを作成する機能を提供します。

Grafanaをインストールするには、次のコマンドを入力します。

sudo yum -y install  https://grafanarel.s3.amazonaws.com/builds/grafana-2.0.2-1.x86_64.rpm

最初にsystemdのデーモンをリロードして、Grafanaスタックを開始します。

sudo systemctl daemon-reload

次に、Grafanaサーバーを起動します。

sudo systemctl start grafana-server

最後に、ステータスを確認します。

sudo systemctl status grafana-server

正常に開始すると、サービスマネージャーのステータスにより、Grafanaサービスが開始され、Web UIが提供されていることが確認されます。 ターミナルで受信する出力は、これで始まります。

Grafanaステータス出力

grafana-server.service - Starts and stops a single grafana instance on this system
  Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled)
   since Tue 2015-06-02 18:59:17 EDT; 3s ago
. . .

ステップ8-デフォルトのGrafana管理者資格情報の変更

すべてのGrafanaインスタンスには、管理者資格情報のデフォルトセットが付属しています。 セキュリティのために、このパスワードを変更する必要があります。 Web UIまたはGrafana構成ファイルを使用してこれを行うことができますが、使いやすさのために、Web UIを使用します。

Grafanaが起動したら、「+ http://:3000+」に移動します。 デフォルトのユーザー名* admin とパスワード admin を使用してGrafana UIにログインします。 画面の左上隅にあるGraphanaロゴをクリックし、表示されるメニューで[ admin *]をクリックします。 これにより、次のプロファイル管理ページが表示されます。

image:https://assets.digitalocean.com/articles/influxdb/tE0veFY.png [Grafana管理者プロファイル構成ページ]

トップヘッダーメニューの[パスワードの変更]リンクをクリックします。 適切なフィールドに新しいパスワードを入力し、[パスワードの変更]をクリックします。

ステップ9-GrafanaへのInfluxDBデータベースの追加

このステップでは、InfluxDBデータベースをGrafanaのソースとして追加します。

データソースを追加するには、上部ヘッダーのGrafanaアイコンをクリックしてサイドメニューを開きます。 サイドメニューで、[データソース]をクリックします。 トップヘッダーの[新規追加]リンクをクリックして、データソース定義画面を表示します。

次の設定を使用して、この画面に入力します。

  • 名前:influxdb

  • タイプ:プルダウンメニューから* InfluxDB 0.8.x *を選択します。

  • デフォルト:このチェックボックスがオンになっていることを確認してください。 デフォルトのデータソースは、新しいパネル用に事前に選択されることを意味します。

  • * Url *: + http:// localhost:8086 +

  • アクセス:プルダウンメニューから[プロキシ]を選択します。

  • 基本認証:このチェックボックスは選択しないでください。

  • データベース:メトリック

  • ユーザー:ルート

  • パスワード:手順4で選択したルートInfluxDBデータベースパスワード。

最後に、画面の下部にある緑色の[追加]ボタンをクリックします。

ステップ10-Grafanaダッシュボードの作成

Grafanaは、有益でありながら使いやすいチャートとダッシュボードを作成する手段を提供します。 このステップでは、システム概要ダッシュボードを作成して、InfluxDBで収集しているシステムメトリックの傾向を表示します。

Grafanaでは、dashboard_は元の基本的なパレットです。 ダッシュボードには、_表示要素(グラフやテキストペインなど)が含まれます。 表示要素には、データソース(この場合はInfluxDB)からデータを取得するために使用されるクエリが含まれています。 そのため、最初に、ディスプレイの基盤となる空のダッシュボードを作成する必要があります。

Grafanaのホームページ、「+ http://:3000+」に移動します。 上部のヘッダーにある[ホーム]リンクをクリックして、ダッシュボードリスト画面を表示します。 この画面の下部で、[* +新規]をクリックします。 これにより、新しい空のダッシュボードが表示されます。

ダッシュボードのヘッダーメニューで歯車をクリックし、[設定]をクリックします。 次の画面が表示されます。

image:https://assets.digitalocean.com/articles/influxdb/YDry7YH.png [Grafand Dashboard Admin Menu]

この画面は、ダッシュボードのメイン設定を変更するために使用されます。 * Title フィールドを New dashboard から System Overview *に変更します。 次に、トップヘッダーのフロッピーディスクアイコンをクリックして、ダッシュボードを保存します。

ダッシュボードに表示要素を追加して、視覚的なシステム概要情報ラジエーターを作成します。

ダッシュボードから行コントロールメニューをクリックします。これは、ダッシュボードの左上にある小さな緑色の長方形です。 このメニューで、* Add Panel にカーソルを合わせ、 Graph *をクリックします。 これにより、ダッシュボードに空白のグラフが作成されます。

グラフの上部にある[タイトルなし(ここをクリック)*]というグラフのタイトルをクリックし、次に表示されるメニューから[編集]をクリックします。 これにより、チャート管理メニューが表示されます。 *一般*タブをクリックして、*タイトル*フィールドを*ネットワーク*に変更します。

次に、* Metrics *タブをクリックして、クエリビルダーに移動します。 * series *フィールドでは、グラフのデータのソースとして使用するメトリックを指定できます。 * interface *と入力し始めます。その後、オートコンプリートの選択が表示されます。 * influxdb / interface-eth0 / if_errors *メトリックを選択します。

次に、チャート管理メニューの下部にある* + Add query をクリックします。 これにより、2番目のクエリ行がクエリビルダーに追加されます。 前と同じ方法を使用して、 influxdb / interface-eth0 / if_octets メトリックのクエリを追加し、 influxdb / interface-eth0 / if_packets *メトリックのクエリを追加します。

3つのクエリを追加すると、メトリックス画面は次のようになります。

image:https://assets.digitalocean.com/articles/influxdb/96PsmhC.png [Grafand Dashboard Admin Menu]

最後に、[ダッシュボードに戻る]リンクをクリックしてダッシュボードに移動します。ダッシュボードにはシステムのネットワークトレンドを示すグラフが表示され、上部ヘッダーのフロッピーディスクアイコンをクリックして新しい表示グラフを保存します。およびダッシュボード。

上記のプロセスを繰り返して視覚グラフを作成し、InfluxDBシリーズに保存されているデータを表示できます。

結論

InfluxDBは、実行中のシステムのパフォーマンスを監視するときに生成されるデータなど、時系列データを保存および分析するための強力なツールです。 InfluxDBとGrafanaを組み合わせることにより、そのようなデータを効率的に保存および視覚化するためのソリューションが提供されます。

このチュートリアルを完了すると、InfluxDBの一般的な理解が必要になります。InfluxDBのインストール方法、使用のためのデータベースの構成方法、およびInfluxDBにデータを送信する方法です。 さらに、Grafanaをセットアップし、それを使用して汎用システム監視ダッシュボードを構築できます。

InfluxDBとGrafanaには、さらに多くの機能とユースケースがあります。 InfluxDBが提供するhttp://influxdb.com/docs/v0.8/api/aggregate_functions.html[aggregate functions]を使用して、システムの動作に関する詳細な分析を実行できます。 また、複数のシステム間でパフォーマンスを比較するために分散システムからデータの収集を開始したり、他の非システムレベルのメトリックタイプ(例: ユーザーあたりのページアクセス数またはRESTエンドポイントのAPI呼び出しの数)。 InfluxDBはそのようなデータに非常に適しており、公式のInfluxDBドキュメントにリストされている多数のhttp://influxdb.com/docs/v0.8/introduction/overview.html [ツールとライブラリ]があります。

Related