前書き
The TICK stackは、時系列データベースhttps://www.influxdata.com/[InfluxDB]の開発者による製品のコレクションです。 次のコンポーネントで構成されています。
-
T elegrafは、さまざまなソースから時系列データを収集します。
-
I nfluxDBは時系列データを保存します。
-
C hronografは、時系列データを視覚化し、グラフ化します。
-
K コンデンサはアラートを提供し、時系列データの異常を検出します。
これらの各コンポーネントを個別に使用できますが、それらを一緒に使用すると、時系列データを処理するためのスケーラブルで統合されたオープンソースシステムになります。
このチュートリアルでは、このプラットフォームをセットアップして、オープンソースの監視システムとして使用します。 少しのCPU使用率を生成し、使用率が高くなりすぎると電子メールアラートを受信します。
前提条件
開始する前に、次のものが必要です。
-
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [Ubuntu 16.04初期サーバーセットアップガイド]に従って、1つのUbuntu 16.04サーバーをセットアップし、sudo non- rootユーザーとファイアウォール。
-
接続の詳細とともに、アラートを送信するためのSMTPサーバー。 持っていない場合は、 `+ sudo apt-get install sendmail `で ` sendmail +`をインストールできます。
-
手順7で説明したようにChronografユーザーインターフェースを保護する場合は、GitHub組織の一部であるhttps://github.com [GitHub]アカウントが必要です。 https://help.github.com/articles/creating-a-new-organization-account/ [このチュートリアル]に従ってGitHub組織を作成します。
ステップ1-TICKスタックリポジトリの追加
TICKスタックコンポーネントは、デフォルトではパッケージマネージャーから利用できません。 すべてのTICKスタックコンポーネントは同じリポジトリを使用するため、インストールをシームレスにするためにリポジトリ構成ファイルを設定します。
次のコマンドを使用して、InfluxDataリポジトリを追加します。
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
新しいリポジトリを配置したら、パッケージリストを更新します。
sudo apt-get update
これで、InfluxDBをインストールして構成できます。
ステップ2-InfluxDBのインストールと認証の構成
InfluxDBは、高速で高可用性のストレージと時系列データの取得用に最適化されたオープンソースデータベースです。 InfluxDBは、運用監視、アプリケーションメトリック、およびリアルタイム分析に最適です。
次のコマンドを実行して、InfluxDBをインストールします。
sudo apt-get install influxdb
インストールが完了したら、InfluxDBサービスを開始します。
sudo systemctl start influxdb
次に、サービスが適切に実行されていることを確認します。
systemctl status influxdb
次のステータスが表示され、サービスが実行されていることが確認されます。
[secondary_label Output
● - InfluxDB is an open-source, distributed, time series database
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
Active:
Docs: https://docs.influxdata.com/influxdb/
Main PID: 1619 (influxd)
CGroup: /system.slice/influxdb.service
└─1619 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
InfluxDBは実行されていますが、ユーザー認証を有効にしてデータベースへのアクセスを制限する必要があります。 少なくとも1人の管理者ユーザーを作成できます。
InfluxDBコンソールを起動します。
influx
次のコマンドを実行して、新しい管理ユーザーを作成します。 パスワード「+ sammy_admin 」で「 sammy +」ユーザーを作成しますが、好きなものを使用できます。
CREATE USER "" WITH PASSWORD '' WITH ALL PRIVILEGES
ユーザーが作成されたことを確認します。
show users
次の出力が表示され、ユーザーが作成されたことを確認します。
Output user admin
---- -----
true
ユーザーが存在するので、InfluxDBコンソールを終了します。
exit
エディタでファイル `+ / etc / influxdb / influxdb.conf +`を開きます。 これは、InfluxDBの構成ファイルです。
sudo nano /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.
...
次に、ファイルを保存し、エディターを終了して、InfluxDBサービスを再起動します。
sudo systemctl restart influxdb
InfluxDBが構成されたので、メトリクスを収集するエージェントであるTelegrafをインストールしましょう。
ステップ3-Telegrafのインストールと構成
Telegrafは、実行中のシステムまたは他のサービスからメトリックとデータを収集するオープンソースのエージェントです。 その後、TelegrafはデータをInfluxDBまたは他の出力に書き込みます。
次のコマンドを実行してTelegrafをインストールします。
sudo apt-get install telegraf
Telegrafサービスはインストール後に自動的に開始されます。
Telegrafはプラグインを使用してデータを入出力します。 デフォルトの出力プラグインはInfluxDB用です。 IndexedDBのユーザー認証を有効にしたため、Telegraf構成ファイルを変更して、構成したユーザー名とパスワードを指定する必要があります。 エディターでTelegraf構成ファイルを開きます。
sudo nano /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"
## 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を再起動します。
sudo systemctl restart telegraf
次に、サービスが適切に実行されているかどうかを確認します。
systemctl status telegraf
Telegrafが実行されていることを示す次のステータスが表示されます。
Output● - The plugin-driven server agent for reporting metrics into InfluxDB
Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
Active:
Docs: https://github.com/influxdata/telegraf
Main PID: 1752 (telegraf)
CGroup: /system.slice/telegraf.service
└─1752 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
Telegrafは現在、データを収集してInfluxDBに書き込んでいます。 InfluxDBコンソールを開いて、Telegrafがデータベースに保存している測定値を確認します。 以前に設定したユーザー名とパスワードで接続します:
influx -username '' -password ''
ログインしたら、次のコマンドを実行して使用可能なデータベースを確認します。
show databases
出力に `+ telegraf +`データベースが一覧表示されます:
Output name: databases
name
----
_internal
Telegrafがそのデータベースに保存しているものを見てみましょう。 次のコマンドを実行して、Telegrafデータベースに切り替えます。
use telegraf
次のコマンドを実行して、Telegrafが収集したさまざまな測定値を表示します。
show measurements
次の出力が表示されます。
Output name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
ご覧のとおり、Telegrafはこのデータベースに多くの情報を収集して保存しています。
Telegrafには60以上の入力プラグインがあります。 以下を含む多くの一般的なサービスおよびデータベースからメトリックを収集できます。
-
アパッチ
-
カサンドラ
-
港湾労働者
-
エラスティックサーチ
-
グレイログ
-
IPtables
-
MySQL
-
PostgreSQL
-
レディス
-
SNMP
-
そして他の多くの
ターミナルウィンドウで `+ telegraf -usage +`を実行すると、各入力プラグインの使用方法を表示できます。
InfluxDBコンソールを終了します。
exit
Telegrafが測定値を保存していることがわかったので、データを処理するようにKapacitorを設定しましょう。
ステップ4-Kapacitorのインストール
Kapacitorはデータ処理エンジンです。 独自のカスタムロジックをプラグインして、動的なしきい値を持つアラートを処理したり、パターンのメトリックを一致させたり、統計的な異常を特定したりできます。 Kapacitorを使用して、InfluxDBからデータを読み取り、アラートを生成し、指定した電子メールアドレスにアラートを送信します。
次のコマンドを実行して、Kapacitorをインストールします。
sudo apt-get install kapacitor
エディターでKapacitor構成ファイルを開きます。
sudo nano /etc/kapacitor/kapacitor.conf
/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"]
...
ファイルを保存し、エディターを終了して、Kapacitorを起動します。
sudo systemctl start kapacitor
それでは、Kapacitorが実行されていることを確認しましょう。 次のコマンドを使用して、Kapacitorのタスクリストを確認します。
kapacitor list tasks
Kapacitorが実行中の場合、次のような空のタスクリストが表示されます。
Output ID Type Status Executing Databases and Retention Policies
Kapacitorをインストールして構成したら、TICKスタックのユーザーインターフェイスコンポーネントをインストールして、結果を確認してアラートを構成できるようにします。
ステップ5-Chronografのインストールと構成
Chronografは、監視データを視覚化し、警告および自動化ルールを作成するツールを提供するグラフ作成および視覚化アプリケーションです。 テンプレートのサポートが含まれており、一般的なデータセット用のインテリジェントで事前設定されたダッシュボードのライブラリがあります。 インストールした他のコンポーネントに接続するように設定します。
最新のパッケージをダウンロードしてインストールします。
wget https://dl.influxdata.com/chronograf/releases/chronograf__amd64.deb
sudo dpkg -i chronograf__amd64.deb
次に、Chronografサービスを開始します。
sudo systemctl start chronograf
Webブラウザで `+ http://:8888 +`にアクセスして、Chronografインターフェースにアクセスできるようになりました。
次の図のようなウェルカムページが表示されます。
image:https://assets.digitalocean.com/articles/tickstack_ubuntu1604/BM7l6eF.png [データソースに接続するためのフィールドを備えたChronografのようこそ画面]
InfluxDBデータベースのユーザー名とパスワードを入力し、* Connect New Source *をクリックして続行します。
接続すると、ホストのリストが表示されます。 次の図に示すように、サーバーのホスト名をクリックして、ホストに関する一連のシステムレベルのグラフを含むダッシュボードを開きます。
image:https://assets.digitalocean.com/articles/tickstack_ubuntu1604/OXk2ohb.png [サーバーのダッシュボード]
それでは、ChronografをKapacitorに接続してアラートを設定しましょう。 左側のナビゲーションメニューの歯車アイコンにカーソルを合わせ、[* Kapacitor *]をクリックして構成ページを開きます。
image:https://assets.digitalocean.com/articles/tickstack_ubuntu1604/B1pTobl.png [Kapacitorの設定]
デフォルトの接続詳細を使用します。 Kapacitorのユーザー名とパスワードを設定しませんでした。 [* Kapacitorに接続*]をクリックします。 Kapacitorが正常に接続すると、[アラートエンドポイントの設定]セクションがフォームの下に表示されます。
Kapacitorは複数のアラートエンドポイントをサポートしています。
-
ヒップチャット
-
OpsGenie
-
PagerDuty
-
センス
-
スラック
-
SMTP
-
Talk
-
電報
-
VictorOps
最も簡単な通信方法は* SMTP で、デフォルトで選択されています。 * From email *フィールドに、アラートの送信元アドレスを入力します。 次に、SMTPサーバーの詳細を入力するか、 `+ sendmail +`がインストールされている場合はデフォルト値のままにします。 次に、[*保存]をクリックします。
設定が完了したら、アラートを作成しましょう。
ステップ6-アラートの構成
CPU使用率が高いかどうかを調べる簡単なアラートを設定しましょう。
左側のナビゲーションメニューの感嘆符アイコンにカーソルを合わせて、* Kapacitorルール*をクリックします。 次に、[新しいルールの作成]をクリックします。
最初のセクションで、* telegraf.autogen をクリックして時系列を選択します。 次に、表示されるリストから system を選択します。 次に load1 *を選択します。 下のセクションに対応するグラフがすぐに表示されます。
グラフの上で、* load1がより大きい*警告を送信*というフィールドを見つけ、値に「0.8」を入力します。
次に、次のテキストを*アラートメッセージ*フィールドに貼り付けて、アラートメッセージのテキストを設定します。
{{ .ID }} is {{ .Level }} value: {{ index .Fields "value" }}
-
Templates *セクションのエントリの上にマウスを置くと、各フィールドの説明を取得できます。
次に、[このアラートを送信する]ドロップダウンリストから[* 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"
}
メールアラート用に、より人間が読めるメッセージを設定できます。 これを行うには、テキストボックスにメッセージを入力します(*メール本文のテキストをここに挿入*プレースホルダー)。
このルールの名前を変更するには、ページの左上隅にある名前をクリックして、新しい名前を入力します。
最後に、右上の[ルールの保存]をクリックして、このルールの構成を完了します。
この新しく作成されたアラートをテストするには、「+ dd 」コマンドを使用して「 / dev / zero 」からデータを読み取り、「 / dev / null +」に送信してCPUスパイクを作成します。
dd if=/dev/zero of=/dev/null
コマンドを数分間実行します。これはスパイクを作成するのに十分なはずです。 `+ CTRL + C +`を押すと、いつでもコマンドを停止できます。
しばらくすると、電子メールメッセージが届きます。 さらに、Chronografユーザーインターフェースの左側のナビゲーションメニューで[アラート履歴]をクリックすると、すべてのアラートを表示できます。
アラートを実行していますが、誰でもChronografにログインできます。 アクセスを制限しましょう。
ステップ7-OAuthを使用してChronografを保護する
デフォルトでは、Chronografアプリケーションを実行しているサーバーのアドレスを知っている人は誰でもデータを表示できます。 テスト環境では許容されますが、本番環境では許容されません。 Chronografは、Google、Heroku、およびGitHubのOAuth認証をサポートしています。 https://github.com [GitHub]アカウントを介してログインを構成するため、先に進む必要があります。
最初に、GitHubで新しいアプリケーションを登録します。 GitHubアカウントにログインし、https://github.com/settings/applications/newに移動します。
次に、フォームに次の詳細を入力します。
-
アプリケーション名*に Chronograf *または適切な説明的な名前を入力します。
-
*ホームページのURL *には、 `+ http://:8888 +`を使用します。
-
*承認コールバックURL *に `+ http://:8888 / oauth / github / callback +`を入力します。
-
[*アプリケーションの登録]をクリックして、設定を保存します。
-
次の画面で提供される* Client ID および Client Secret *の値をコピーします。
次に、Chronografのsystemdスクリプトを編集して認証を有効にします。 ファイル `+ / lib / systemd / system / chronograf.service +`を開きます:
sudo nano /lib/systemd/system/chronograf.service
次に、「+ [Service] 」セクションを見つけて、「 ExecStart = +」で始まる行を編集します。
/lib/systemd/system/chronograf.service
[Service]
User=chronograf
Group=chronograf
/usr/bin/chronograf --host 0.0.0.0 --port 8888 -b /var/lib/chronograf/chronograf-v1.db -c /usr/share/chronograf/canned -t '' -i '' -s '' -o ''
KillMode=control-group
Restart=on-failure
`+ secret_token +`はすべてのOAuthプロバイダーに必要です。 ランダムな文字列に設定します。 他の値には、Github Client ID、Github Client Secret、およびGithub Organizationを使用します。
ファイルを保存し、エディターを終了して、Chronografサービスを再起動します。
sudo systemctl daemon-reload
sudo systemctl restart chronograf
Chronografインターフェースにアクセスするには、「+ http://:8888+」を開きます。 今回は、* Login with Github *ボタンが表示されます。 ボタンをクリックしてログインすると、アプリケーションからGithubアカウントへのアクセスを許可するよう求められます。 アクセスを許可すると、ログインできます。
結論
このチュートリアルでは、時系列データを保存、分析、視覚化するためのTICKスタックが強力なツールになる方法を説明しました。 多くの機能とユースケースがあります。 たとえば、Kapacitorを使用してhttps://docs.influxdata.com/kapacitor/v1.2/examples/anomaly_detection/[anomaly detection]またはhttps://docs.influxdata.com/kapacitor/v1.2/を実行できます。 examples / live_leaderboard / [ゲームスコアのライブリーダーボードを作成]。 TICKスタックの詳細については、https://docs.influxdata.com/ [公式ドキュメント]を参照してください。