序章
InfluxDBは、時系列、メトリック、および分析データベースです。 時系列データベースは、一定期間にわたって行われた連続測定から生じるデータを保存する問題に対処するように設計されています。 このデータは、システムメトリック(CPUやメモリの使用量など)やアプリケーションメトリック(アプリケーションエラーやRESTエンドポイント呼び出しなど)などの項目で構成されている場合があります。
システムが長く動作するほど、蓄積されるデータの量は多くなります。 InfluxDBは、このデータを効率的に保存するためのソリューションを提供します。 これは、DevOps、メトリクス、センサーデータ、およびリアルタイムの監視と分析のユースケースを対象としています。 InfluxDBを使用すると、履歴分析も提供する強力なリアルタイム監視フレームワークをすばやく構築できます。
このガイドでは、以下について説明します。
- CentOS7にInfluxDBをインストールして構成する方法。
- collectdシステム統計デーモンからInfluxDBにシステム監視データをフィードする方法。
- InfluxDB SQLのようなクエリ言語を使用して、監視対象システムのパフォーマンスをすばやく理解および分析する方法。
- Grafana視覚化ツールスタックを使用して豊富なダッシュボードソリューションを作成し、InfluxDBインスタンスに保存されているデータをより適切に探索して表示する方法。
前提条件
始める前に、次のものが必要です。
-
1つの64ビットCentOS7ドロップレット。 サーバーに必要なCPU、RAM、およびストレージの量は、収集するデータの量によって異なりますが、通常は2GBのRAMと2つのCPUで十分です。
-
sudoの非rootユーザー。 CentOS 7初期サーバーセットアップチュートリアルでは、これを行う方法について説明しています。
-
4GBのスワップスペース。 Centos 7にスワップを追加する方法チュートリアルでは、これを行う方法について説明しています。
ステップ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
. これは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
. 編集後、そのセクションは次のようになります。
. . .
# Change this option to true to disable reporting.
reporting-disabled = true
[logging]
. . .
次に、デフォルトの読み取りタイムアウトを更新して、接続のリードタイムを少し長くします。 読み取りタイムアウトは、データベースへの接続が閉じられるまで待機できる時間を制御します。
同じ構成ファイルで、構成キーを見つけます read-timeout
から変更します 5s
に 10s
.
. . .
# However, if a request is taking longer than this to complete, could be a problem.
read-timeout = "10s"
[input_plugins]
. . .
ファイルを保存して閉じてから、InfluxDBデーモンを起動します。
- sudo /etc/init.d/influxdb start
正常に起動すると、サービスマネージャスクリプトは次の出力を提供します。
Setting ulimit -n 65536
Starting the process influxdb [ OK ]
influxdb process was started [ OK ]
InfluxDBが開始した後、 http://your_server_ip:8083
Webブラウザーで、InfluxDBが稼働していることを確認します。 これにより、デフォルトの管理UIが表示されます。このUIには、ConnectおよびHostnameand PortSettingsというラベルの付いた2つのセクションがあります。
ステップ3—デフォルトのInfluxDB管理者クレデンシャルを変更する
すべてのInfluxDBには、デフォルトの管理者資格情報のセットが付属しています。 セキュリティ上の理由から、このパスワードを変更する必要があります。
Connectセクションのデフォルトのユーザー名rootとパスワードrootを使用してInfluxDBUIにログインします。 データベースを空白のままにして、青い接続ボタンをクリックします。
次のページのトップメニューで、 ClusterAdminsをクリックします。 これにより、ユーザー管理ページに移動します。 ユーザー名セクションで、ルートをクリックし、新しいパスワードを2回入力して、青いパスワードの変更ボタンをクリックしてパスワードを変更します。
最後に、青い切断ボタンを使用してログアウトし、新しいパスワードを使用して再度ログインします。
ステップ4—データベースの作成
InfluxDBを最初にセットアップしたとき、実際のデータベースは含まれていないため、最終的にメトリックを格納するために使用するデータベースを作成する必要があります。
WebUIのトップメニューからデータベースメニューをクリックします。 データベースの作成セクションのデータベースの詳細で、データベース名としてmetricsと入力します。 シャードスペースオプションのデフォルトオプションは保持できます。 次に、右下にある青いデータベースの作成ボタンをクリックして、データベースを作成します。
データベースが正常に作成されると、画面上部のデータの探索リンクの横にデータベースが表示されます。
作成したデータベースが正しく機能していることを確認するために、データUIを使用してサンプルデータを書き込み、確認することができます。 データの探索リンクをクリックして、データUIにアクセスします。 次の画面が表示されます。
この画面から、データベースにテストデータを書き込むことができます。 また、データベースに保存されているデータに対してアドホッククエリを発行し、基本的な視覚化を確認することもできます。 データベースが機能していることを確認するために、少しデータを書いてみましょう。
Web UIを使用してデータを入力するには、シリーズの名前と値を指定する必要があります。 シリーズ名はスペースを含まない英数字の文字列であり、値フィールドはJSONキー値形式で指定する必要があります。
書き込みポイントセクションで、時系列名に test_metric と入力し、値に次のように入力します。 {"value": 23.4}
. 次に、青い書き込みポイントボタンをクリックしてデータを入力します。 ボタンの横に200OKが緑色でポップアップ表示されます。
同じ時系列名と次の各値を使用して、このプロセスを繰り返します。 {"value": 13.1}
, {"value": 13.1}
, {"value": 78.1}
、 と {"value": 90.4}
. 意図的に値13.1を2回書き込んでいることに注意してください。 合計5点追加します。
いくつかのサンプルデータポイントを記述したので、それらを検査できます。 ページ上部の読み取りポイントセクションのクエリボックスに、次のクエリを入力します。
select * from test_metric
次に、青いクエリの実行ボタンを押します。 このクエリの結果には、データベースに保存されているすべてのデータポイントが表示されます。 test_metric
シリーズ。 次に、次のようなグラフが表示されます。
この画面には、時系列にわたるメトリックの傾向を要約した折れ線グラフと、データベースに格納されているデータを要約したデータテーブルが表示されます。
列識別子を使用して、検索の範囲を狭めることもできます。 たとえば、イベント値が13.1であるイベントを検索するには、次の検索クエリを入力します。
select * from test_metric where value = 13.1
これにより、サンプルデータに対して2つの行が返されます。
もう少し詳しく説明すると、InfluxDBのデータは時系列ごとに整理されています。 test_metric
この例では。 各シリーズには、イベントに対応するデータポイントのセットがあります。 データを入力したときに、上記の5つのイベントを作成しました。 各イベントには、時間、シーケンス番号、およびイベントに対して測定しているメトリックに類似したいくつかの列があります。 この例では、という単一のメトリックがあります value
5つのイベントのそれぞれで。
ステップ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
パッケージが正常にインストールされると、多数のバイナリ、共有ライブラリ、および構成ファイルが作成されます。 知っておくべき主なファイルは、collectd構成ファイルです。 /etc/collectd.conf
、およびプライマリcollectdデーモンバイナリ、 /usr/sbin/collectd
. 以前のInfluxDBと同様に、最初に元の構成ファイルのコピーを作成しましょう。
- sudo cp /etc/collectd.conf /etc/collectd.conf_backup
次に、編集のために構成ファイルを開きます。
- sudo nano /etc/collectd.conf
メインのcollectd構成ファイルには多くの設定が含まれていますが、それらの大部分はコメント化されているため、デフォルトではアクティブではありません。 コメントを外して、それらの一部を変更します。
ファイル構成の上部の[グローバル]セクションに、次のように表示されます。 編集する部分は赤で強調表示されます。
. . .
#Hostname "localhost"
#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
. 完了すると、ファイルのこのセクションは次のようになります。
Hostname "influxdb"
#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
を削除して行 #
行頭に。
最後に、データをInfluxDBに直接送信するようにcollectdを構成します。
[プラグインの構成]セクションまで下にスクロールします。 セクションセパレータ(以下に表示)の後に、ネットワークプラグイン構成(赤で強調表示)を追加します。
. . .
##############################################################################
# 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 network>
Server "127.0.0.1" "8096"
</Plugin>
#<Plugin "aggregation">
. . .
次に、ファイルを保存して終了します。 構成をチェックして、誤ってタイプミスや構文エラーが発生していないことを確認する必要があります。 collectdを使用して、次のように構成をテストできます。
- sudo /usr/sbin/collectd -t
collectd構成にエラーがない場合、このコマンドは出力なしで返されます。 ファイルにエラーが見つかった場合は、ターミナルに一覧表示されます。
構成にエラーがなくなったら、collectdを再起動して、新しい構成をアクティブにします。 これには少し時間がかかる場合があります。
- sudo service collectd start
ステップ6—収集されたメトリックを消費するようにInfluxDBを構成します
collectdによって収集されているcollectdシステムメトリックをInfluxDBに保存するには、InfluxDBcollectd入力プラグインを有効にして構成する必要があります。
まず、編集のためにInfluxDB構成ファイルを開きます。
- sudo nano /opt/influxdb/shared/config.toml
を見つけます input_plugins.collectd
プラグインの構成は次のようになります。 変更する行は赤で強調表示されます。
. . .
# Configure the collectd api
[input_plugins.collectd]
enabled = false
# address = "0.0.0.0" # If not set, is actually set to bind-address.
# port = 25826
# 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の行のコメントを解除します。
. . .
[label /opt/influxdb/shared/config.toml modified excerpt]
# Configure the collectd api
[input_plugins.collectd]
enabled = true
# address = "0.0.0.0" # If not set, is actually set to bind-address.
port = 8096
database = "metrics"
# 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のデータインターフェイスで、読み取りポイントの下のクエリテキストボックスに次のクエリを入力し、を押します。青クエリの実行ボタン。
list series
collectdからデータを受信している場合は、以下のようなシリーズの長いリストを確認する必要があります。
これで、手順5のようにこのデータを調べて、システムのパフォーマンスの分析を開始できます。 たとえば、次のクエリを発行すると、システムのメモリ使用量を監視できます。
select * from "influxdb/memory/memory-used"
結果のデータ表示は、InfluxDBインスタンスに記録されたメモリ使用量の変動を明確に示しています。 次に例を示します。
ステップ7—Grafanaのインストールと起動
InfluxDBのWebインターフェイスを使用して、データを探索し、時系列データからシステムの傾向を視覚化できます。 ただし、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サービスが開始され、WebUIが提供されていることが確認されます。 端末で受け取る出力は、次のように始まります。
grafana-server.service - Starts and stops a single grafana instance on this system
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled)
Active: active (running) since Tue 2015-06-02 18:59:17 EDT; 3s ago
. . .
ステップ8—デフォルトのGrafana管理者クレデンシャルを変更する
すべてのGrafanaインスタンスには、デフォルトの管理者資格情報のセットが付属しています。 セキュリティ上の理由から、このパスワードを変更する必要があります。 Web UIまたはGrafana構成ファイルを使用してこれを行うことができますが、使いやすさから、WebUIを使用します。
Grafanaの開始後、次の場所に移動します http://your_server_ip:3000
. デフォルトのユーザー名adminとパスワードadminを使用してGrafanaUIにログインします。 画面左上のGraphanaロゴをクリックし、表示されるメニューのadminをクリックします。 これにより、次のプロファイル管理ページが表示されます。
上部のヘッダーメニューにある[パスワードの変更]リンクをクリックします。 新しいパスワードを適切なフィールドに入力し、パスワードの変更をクリックします。
ステップ9—InfluxDBデータベースをGrafanaに追加する
このステップでは、InfluxDBデータベースをGrafanaのソースとして追加します。
データソースを追加するには、上部のヘッダーにあるGrafanaアイコンをクリックしてサイドメニューを開きます。 サイドメニューで、データソースをクリックします。 上部ヘッダーのAddNew リンクをクリックして、データソース定義画面を表示します。
次の設定を使用して、この画面にデータを入力します。
- 名前:influxdb
- タイプ:プルダウンメニューから InfluxDB0.8.xを選択します。
- デフォルト:このチェックボックスがオンになっていることを確認してください。 デフォルトのデータソースは、新しいパネル用に事前に選択されることを意味します。
- URL :
http://localhost:8086
- アクセス:プルダウンメニューからプロキシを選択します。
- 基本認証:このチェックボックスをオフのままにします。
- データベース:メトリック
- ユーザー:ルート
- Password :手順4で選択したルートInfluxDBデータベースのパスワード。
最後に、画面下部にある緑色の追加ボタンをクリックします。
ステップ10—Grafanaダッシュボードの作成
Grafanaは、有益なチャートとダッシュボードを作成するための強力でありながらユーザーフレンドリーな手段を提供します。 このステップでは、システム概要ダッシュボードを作成して、InfluxDBで収集しているシステムメトリックの傾向を表示します。
Grafanaでは、ダッシュボードが基本的なパレットです。 ダッシュボードには、表示要素(グラフやテキストペインなど)が含まれています。 表示要素には、データソース(この場合はInfluxDB)からデータを取得するために使用されるクエリが含まれています。 したがって、最初に、ディスプレイの基盤となる空のダッシュボードを作成する必要があります。
Grafanaホームページに移動します。 http://your_server_ip:3000
. 上部のヘッダーにあるホームリンクをクリックして、ダッシュボードの一覧画面を表示します。 この画面の下部で、 +Newをクリックします。 これにより、新しい空白のダッシュボードが表示されます。
ダッシュボードのヘッダーメニューで歯車をクリックし、設定をクリックします。 次の画面が表示されます。
この画面は、ダッシュボードのメイン設定を変更するために使用されます。 タイトルフィールドを新しいダッシュボードからシステム概要に変更します。 次に、上部のヘッダーにあるフロッピーディスクのアイコンをクリックして、ダッシュボードを保存します。
次に、ダッシュボードに表示要素を入力して、視覚的なシステム概要情報ラジエーターを作成します。
ダッシュボードから、ダッシュボードの左上にある小さな緑色の長方形である行コントロールメニューをクリックします。 このメニューで、パネルの追加にカーソルを合わせ、グラフをクリックします。 これにより、ダッシュボードに空白のグラフが作成されます。
グラフの上部にあるタイトルなし(ここをクリック)と表示されているグラフのタイトルをクリックし、次に表示されるメニューから編集をクリックします。 これにより、チャート管理メニューが表示されます。 General タブをクリックし、TitleフィールドをNetworkに変更します。
次に、メトリクスタブをクリックして、クエリビルダーを表示します。 series フィールドでは、グラフのデータのソースとして使用するメトリックを指定できます。 interfaceと入力し始めます。 次に、オートコンプリートの選択が表示されます。 influxdb / interface-eth0 /if_errorsメトリックを選択します。
次に、チャート管理メニューの下部にある+クエリの追加をクリックします。 これにより、クエリビルダーに2番目のクエリ行が追加されます。 前と同じ方法を使用して、 influxdb / interface-eth0 / if_octets メトリックのクエリを追加し、 influxdb / interface-eth0 /if_packetsメトリックのクエリを追加します。
3つのクエリを追加すると、メトリック画面は次のようになります。
最後に、ダッシュボードに戻るリンクをクリックしてダッシュボードに移動します。ダッシュボードには、システムのネットワークトレンドを表示するグラフが含まれています。上部のヘッダーにあるフロッピーディスクのアイコンをクリックして保存します。新しい表示グラフとダッシュボード。
上記のプロセスを繰り返して、InfluxDBシリーズに保存されているデータを表示する視覚的なグラフを作成できます。
結論
InfluxDBは、実行中のシステムのパフォーマンスを監視するときに生成されるデータなど、時系列データを保存および分析するための強力なツールです。 InfluxDBをGrafanaと組み合わせると、そのようなデータを効率的に保存および視覚化するためのソリューションが提供されます。
このチュートリアルを完了すると、InfluxDBの一般的な理解が得られます。インストール方法、使用するデータベースの構成方法、およびデータの送信方法です。 さらに、Grafanaをセットアップし、それを使用して汎用システム監視ダッシュボードを構築できます。
InfluxDBとGrafanaには、さらに多くの機能とユースケースがあります。 InfluxDBが提供する集計関数を使用して、システムの動作についてより詳細な分析を実行できます。 また、分散システムからのデータの収集を開始して、複数のシステムのパフォーマンスを比較したり、他の非システムレベルのメトリックタイプの収集と分析を開始したりすることもできます(例: ユーザーあたりのページアクセス数またはRESTエンドポイントのAPI呼び出し数)。 InfluxDBはこのようなデータに非常に適しており、InfluxDBの公式ドキュメントに多数のツールとライブラリがリストされています。