序章

TICKスタックは、時系列データベースInfluxDBの開発者からの製品のコレクションです。 これは、次のコンポーネントで構成されています。

  • T elegrafは、さまざまなソースから時系列データを収集します。
  • I nfluxDBは、時系列データを格納します。
  • C hronografは、時系列データを視覚化してグラフ化します。
  • K apacitorはアラートを提供し、時系列データの異常を検出します。

これらの各コンポーネントを個別に使用できますが、一緒に使用すると、時系列データを処理するためのスケーラブルで統合されたオープンソースシステムが得られます。

このチュートリアルでは、このプラットフォームをセットアップして、オープンソースの監視システムとして使用します。 CPU使用率を少し生成し、使用率が高くなりすぎると電子メールアラートを受信します。

前提条件

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

  • CentOS7初期サーバーセットアップガイドに従ってセットアップされた1台のCentOS7サーバー(sudo非rootユーザーとファイアウォールを含む)。
  • 手順7で説明したようにChronografのユーザーインターフェイスを保護する場合は、GitHub組織の一部であるGitHubアカウントが必要です。 このチュートリアルに従って、GitHub組織を作成します。

ステップ1—TICKスタックリポジトリを追加する

TICKスタックコンポーネントは、デフォルトではパッケージマネージャーから利用できません。 すべてのTICKスタックコンポーネントは同じリポジトリを使用するため、インストールをシームレスにするためにリポジトリ構成ファイルを設定します。

この新しいファイルを作成します。

  1. sudo vi /etc/yum.repos.d/influxdata.repo

次の構成を新しいファイルに配置します。

/etc/yum.repos.d/influxdata.repo
[influxdb]
name = InfluxData Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key

ファイルを保存して、エディターを終了します。 これで、InfluxDBをインストールして構成できます

ステップ2—InfluxDBのインストールと認証の構成

InfluxDBは、時系列データの高速で高可用性の保存と取得のために最適化されたオープンソースデータベースです。 InfluxDBは、運用の監視、アプリケーションメトリック、およびリアルタイム分析に最適です。

次のコマンドを実行して、InfluxDBをインストールします。

  1. sudo yum install influxdb

インストールプロセス中に、GPGキーをインポートするように求められます。 インストールを続行できるように、このキーをインポートすることを確認してください。

インストールが完了したら、InfluxDBサービスを開始します。

  1. sudo systemctl start influxdb

次に、サービスが正しく実行されていることを確認します。

  1. systemctl status influxdb

次のステータスが表示され、サービスが実行されていることが確認されます。

[secondary_label Output
    ● influxdb.service - InfluxDB is an open-source, distributed, time series database
       Loaded: loaded (/usr/lib/systemd/system/influxdb.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2017-02-07 13:19:31 EET; 2min 46s ago
         Docs: https://docs.influxdata.com/influxdb/
     Main PID: 14290 (influxd)

InfluxDBは実行されていますが、データベースへのアクセスを制限するためにユーザー認証を有効にする必要があります。 少なくとも1人の管理者ユーザーを作成しましょう。

InfluxDBコンソールを起動します。

  1. influx

次のコマンドを実行して、新しい管理者ユーザーを作成します。 作成します sammy パスワードを持つユーザー sammy_admin、ただし、好きなものを使用できます。

  1. CREATE USER "sammy" WITH PASSWORD 'sammy_admin' WITH ALL PRIVILEGES

ユーザーが作成されていることを確認します。

  1. show users

次の出力が表示され、ユーザーが作成されたことを確認します。

Output
user admin ---- ----- sammy true

ユーザーが存在するので、InfluxDBコンソールを終了します。

  1. exit

ファイルを開きます /etc/influxdb/influxdb.conf エディターで。 これは、InfluxDBの構成ファイルです。

  1. sudo vi /etc/influxdb/influxdb.conf

を見つけます [http] セクション、コメントを外します auth-enabled オプションを選択し、その値をに設定します true :

/etc/influxdb/influxdb.conf
...
    [http]
      # Determines whether HTTP endpoint is enabled.
      # enabled = true
    
      # The bind address used by the HTTP service.
      # bind-address = ":8086"
    
      # Determines whether HTTP authentication is enabled.
      auth-enabled = true
...

次に、ファイルを保存し、エディターを終了して、InfluxDBサービスを再起動します。

  1. sudo systemctl restart influxdb

InfluxDBが構成されたので、メトリックを収集するためのエージェントであるTelegrafをインストールしましょう。

ステップ3—Telegrafのインストールと構成

Telegrafは、実行中のシステムまたは他のサービスからメトリックとデータを収集するオープンソースエージェントです。 次に、TelegrafはデータをInfluxDBまたは他の出力に書き込みます。

次のコマンドを実行して、Telegrafをインストールします。

  1. sudo yum install telegraf

Telegrafは、プラグインを使用してデータを入力および出力します。 デフォルトの出力プラグインはInfluxDB用です。 IndexDBのユーザー認証を有効にしたため、Telegrafの構成ファイルを変更して、構成したユーザー名とパスワードを指定する必要があります。 エディターでTelegraf構成ファイルを開きます。

  1. sudo vi /etc/telegraf/telegraf.conf

を見つけます [outputs.influxdb] セクションを作成し、ユーザー名とパスワードを入力します。

/etc/telegraf/telegraf.conf
    [[outputs.influxdb]]
      ## The full HTTP or UDP endpoint URL for your InfluxDB instance.
      ## Multiple urls can be specified as part of the same cluster,
      ## this means that only ONE of the urls will be written to each interval.
      # urls = ["udp://localhost:8089"] # UDP endpoint example
      urls = ["http://localhost:8086"] # required
      ## The target database for metrics (telegraf will create it if not exists).
      database = "telegraf" # required
    
      ...

      ## Write timeout (for the InfluxDB client), formatted as a string.
      ## If not provided, will default to 5s. 0s means no timeout (not recommended).
      timeout = "5s"
      username = "sammy"
      password = "sammy_admin"
      ## Set the user agent for HTTP POSTs (can be useful for log differentiation)
      # user_agent = "telegraf"
      ## Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
      # udp_payload = 512

ファイルを保存し、エディターを終了して、Telegrafを起動します。

  1. sudo systemctl start telegraf

次に、サービスが正しく実行されているかどうかを確認します。

  1. systemctl status telegraf

Telegrafが実行中であることを示す次のステータスが表示されます。

Output
telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB Loaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2017-02-07 13:32:36 EET; 3min 27s ago Docs: https://github.com/influxdata/telegraf Main PID: 14412 (telegraf)

Telegrafは現在、データを収集してInfluxDBに書き込んでいます。 InfluxDBコンソールを開いて、Telegrafがデータベースに保存している測定値を確認しましょう。 以前に構成したユーザー名とパスワードで接続します。

  1. influx -username 'sammy' -password 'sammy_admin'

ログインしたら、次のコマンドを実行して、使用可能なデータベースを確認します。

  1. show databases

が表示されます telegraf 出力にリストされているデータベース:

Output
name: databases name ---- _internal telegraf

:表示されない場合 telegraf データベースで、構成したTelegraf設定をチェックして、適切なユーザー名とパスワードが指定されていることを確認します。

Telegrafがそのデータベースに何を保存しているかを見てみましょう。 次のコマンドを実行して、Telegrafデータベースに切り替えます。

  1. use telegraf

次のコマンドを実行して、Telegrafが収集したさまざまな測定値を表示します。

  1. show measurements

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

Output
name: measurements name ---- cpu disk diskio kernel mem processes swap system

ご覧のとおり、Telegrafはこのデータベースに多くの情報を収集して保存しています。

Telegrafには60を超える入力プラグインがあります。 次のような多くの一般的なサービスやデータベースからメトリックを収集できます。

  • Apache
  • カサンドラ
  • Docker
  • Elasticsearch
  • グレイログ
  • IPtables
  • MySQL
  • PostgreSQL
  • Redis
  • SNMP
  • と他の多く

を実行すると、各入力プラグインの使用手順を表示できます telegraf -usage plugin-name ターミナルウィンドウで。

InfluxDBコンソールを終了します。

  1. exit

Telegrafが測定値を保存していることがわかったので、データを処理するようにKapacitorを設定しましょう。

ステップ4—Kapacitorをインストールする

Kapacitorはデータ処理エンジンです。 独自のカスタムロジックをプラグインして、動的なしきい値でアラートを処理したり、パターンのメトリックを照合したり、統計的な異常を識別したりできます。 Kapacitorを使用して、InfluxDBからデータを読み取り、アラートを生成し、それらのアラートを指定された電子メールアドレスに送信します。

次のコマンドを実行して、Kapacitorをインストールします。

  1. sudo yum install kapacitor

エディターでKapacitor構成ファイルを開きます。

  1. sudo vi /etc/kapacitor/kapacitor.conf

を見つけます [[influxdb]] セクションを作成し、InfluxDBデータベースに接続するためのユーザー名とパスワードを入力します。

/etc/kapacitor/kapacitor.conf
# Multiple InfluxDB configurations can be defined.
# Exactly one must be marked as the default.
# Each one will be given a name and can be referenced in batch queries and InfluxDBOut nodes.
[[influxdb]]
  # Connect to an InfluxDB cluster
  # Kapacitor can subscribe, query and write to this cluster.
  # Using InfluxDB is not required and can be disabled.
  enabled = true
  default = true
  name = "localhost"
  urls = ["http://localhost:8086"]
  username = "sammy"
  password = "sammy_admin"
...

ファイルを保存し、エディターを終了して、Kapacitorを起動します。

  1. sudo systemctl daemon-reload
  2. sudo systemctl start kapacitor

次に、Kapacitorが実行されていることを確認しましょう。 次のコマンドを使用して、Kapacitorのタスクリストを確認します。

  1. kapacitor list tasks

Kapacitorが稼働している場合は、次のような空のタスクリストが表示されます。

Output
ID Type Status Executing Databases and Retention Policies

Kapacitorをインストールして構成したら、TICKスタックのユーザーインターフェイスコンポーネントをインストールして、いくつかの結果を確認し、いくつかのアラートを構成できるようにします。

ステップ5—Chronografのインストールと構成

Chronografは、監視データを視覚化し、アラートと自動化のルールを作成するためのツールを提供するグラフ化および視覚化アプリケーションです。 テンプレートのサポートが含まれており、一般的なデータセット用のインテリジェントな事前構成済みダッシュボードのライブラリがあります。 インストールした他のコンポーネントに接続するように構成します。

最新のパッケージをダウンロードしてインストールします。

  1. wget https://dl.influxdata.com/chronograf/releases/chronograf-1.2.0~beta3.x86_64.rpm
  2. sudo yum localinstall chronograf-1.2.0~beta3.x86_64.rpm

次に、Chronografサービスを開始します。

  1. sudo systemctl start chronograf

:FirewallDを使用している場合は、ポートへの接続を許可するように設定してください8888:

  1. sudo firewall-cmd --zone=public --permanent --add-port=8888/tcp
  2. sudo firewall-cmd --reload

チュートリアルCentOS7でFirewallDを使用してファイアウォールを設定する方法に従って、FirewallDルールの詳細を確認してください。

これで、次のWebサイトにアクセスしてChronografインターフェイスにアクセスできます。 http://your_server_ip:8888 Webブラウザで。

次の図のようなウェルカムページが表示されます。

InfluxDBデータベースのユーザー名とパスワードを入力し、新しいソースの接続をクリックして続行します。

接続すると、ホストのリストが表示されます。 次の画像に示すように、サーバーのホスト名をクリックして、ホストに関する一連のシステムレベルのグラフを含むダッシュボードを開きます。

それでは、クロノグラフをカパシトールに接続してアラートを設定しましょう。 左側のナビゲーションメニューの最後の項目にカーソルを合わせ、Kapacitorをクリックして構成ページを開きます。

デフォルトの接続の詳細を使用します。 Kapacitorのユーザー名とパスワードは設定していません。 接続Kapacitorをクリックします。 Kapacitorが正常に接続すると、フォームの下にアラートエンドポイントの構成セクションが表示されます。

Kapacitorは、複数のアラートエンドポイントをサポートしています。

  • HipChat
  • OpsGenie
  • PagerDuty
  • センス
  • スラック
  • SMTP
  • 電報
  • VictorOps

最も簡単な通信方法はSMTPで、これはデフォルトで選択されています。 From email フィールドにアラートの送信元のアドレスを入力し、Saveをクリックします。 残りの詳細はデフォルト値のままにしておくことができます。

構成が整ったら、アラートを作成しましょう。

ステップ6—アラートの構成

CPU使用率が高いことを探す簡単なアラートを設定しましょう。

左側のナビゲーションメニューにカーソルを合わせ、 ALERTING セクションを見つけて、 KapacitorRulesをクリックします。 次に、新しいルールの作成をクリックします。

最初のセクションで、telegraf.autogenをクリックして時系列を選択します。 次に、表示されるリストからsystemを選択します。 次に、load1を選択します。 以下のセクションに対応するグラフがすぐに表示されます。

グラフの上にあるSendAlert where load1 is Greater Than というフィールドを見つけて、次のように入力します。 1.0 値のために。

次に、次のテキストをアラートメッセージフィールドに貼り付けて、アラートメッセージのテキストを構成します。

{{ .ID }} is {{ .Level }} value: {{ index .Fields "value" }}

テンプレートセクションのエントリにマウスを合わせると、各フィールドの説明が表示されます。

次に、このアラートをに送信するドロップダウンリストから Smtp オプションを選択し、関連するフィールドにメールアドレスを入力します。

デフォルトでは、次のようなJSON形式でメッセージを受信します。

メッセージの例
{
    "Name":"system",
    "TaskName":"chronograf-v1-50c67090-d74d-42ba-a47e-45ba7268619f",
    "Group":"nil",
    "Tags":{
        "host":"centos-tick"
    },
    "ID":"TEST:nil",
    "Fields":{
        "value":1.25
    },
    "Level":"CRITICAL",
    "Time":"2017-03-08T12:09:30Z",
    "Message":"TEST:nil is CRITICAL value: 1.25"
}

メールアラートに対して、より人間が読めるメッセージを設定できます。 これを行うには、ここにメール本文テキストを入力プレースホルダーを使用してテキストボックスにメッセージを入力します。

このルールの名前を変更するには、ページの左上隅にある名前をクリックして、新しい名前を入力します。

最後に、右上の [ルールの保存]をクリックして、このルールの構成を完了します。

この新しく作成されたアラートをテストするには、を使用してCPUスパイクを作成します。 dd からデータを読み取るコマンド /dev/zero に送信します /dev/null:

  1. dd if=/dev/zero of=/dev/null

コマンドを数分間実行します。これは、スパイクを作成するのに十分なはずです。 を押すと、いつでもコマンドを停止できます CTRL+C.

しばらくすると、電子メールメッセージが届きます。 さらに、Chronografユーザーインターフェイスの左側のナビゲーションメニューでアラート履歴をクリックすると、すべてのアラートを表示できます。

:アラートを受信できることを確認したら、必ず停止してください dd あなたが始めたコマンド CTRL+C.

アラートは実行されていますが、誰でもChronografにログインできます。 アクセスを制限しましょう。

ステップ7—OAuthでクロノグラフを保護する

デフォルトでは、Chronografアプリケーションを実行しているサーバーのアドレスを知っている人なら誰でも任意のデータを表示できます。 テスト環境では許容できますが、本番環境では許容できません。 Chronografは、Google、Heroku、GitHubのOAuth認証をサポートしています。 GitHub アカウントを介してログインを構成するため、続行するにはアカウントが必要です。

まず、GitHubに新しいアプリケーションを登録します。 GitHubアカウントにログインし、https://github.com/settings/applications/newに移動します。

次に、フォームに次の詳細を入力します。

  1. アプリケーション名クロノグラフまたは適切な説明的な名前を入力します。
  2. ホームページのURLには、 http://your_server_ip:8888.
  3. 承認コールバックURLに次のように入力します http://your_server_ip:8888/oauth/github/callback.
  4. アプリケーションの登録をクリックして設定を保存します。
  5. 次の画面に表示されるクライアントIDクライアントシークレットの値をコピーします。

次に、Chronografのsystemdスクリプトを編集して、認証を有効にします。 ファイルを開く /usr/lib/systemd/system/chronograf.service:

  1. sudo vi /usr/lib/systemd/system/chronograf.service

次に、 [Service] セクションを作成し、で始まる行を編集します ExecStart=:

/usr/lib/systemd/system/chronograf.service
[Service]
User=chronograf
Group=chronograf
ExecStart=/usr/bin/chronograf --host 0.0.0.0 --port 8888 -b /var/lib/chronograf/chronograf-v1.db -c /usr/share/chronograf/canned -t 'secret_token' -i 'your_github_client_id' -s 'your_github_client_secret' -o 'your_github_organization'
KillMode=control-group
Restart=on-failure

The secret_token すべてのOAuthプロバイダーで必要です。 ランダムな文字列に設定します。 その他の値には、GithubクライアントID、Githubクライアントシークレット、およびGithub組織を使用します。

警告:コマンドからGithub組織オプションを省略すると、すべてのGithubユーザーがChronografインスタンスにログインできるようになります。 Github組織を作成し、適切なユーザーを組織に追加してアクセスを制限します。

ファイルを保存し、エディターを終了して、Chronografサービスを再起動します。

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart chronograf

開ける http://your_server_ip:8888 Chronografインターフェースにアクセスします。 今回は、Githubでのログインボタンが表示されます。 ボタンをクリックしてログインすると、アプリケーションにGithubアカウントへのアクセスを許可するように求められます。 アクセスを許可すると、ログインします。

結論

このチュートリアルでは、TICKスタックが時系列データを保存、分析、視覚化するための強力なツールになる方法を説明しました。 多くの機能とユースケースがあります。 たとえば、Kapacitorを使用して、異常検出またはゲームスコアのライブリーダーボードの作成を実行できます。 公式ドキュメントを読むと、TICKスタックの詳細を知ることができます。