TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編)

Kibana

ビジュアライズの作成

今回はサンプルとしてシステム起動からの稼働時間(Uptime)を表示するビジュアライズを作成する。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 1
まず、DiscoverでTelegrafが収集したメトリックデータを確認したい。
KibanaにKibana操作用ユーザーでログインし、左上隅のでメニュー(左列)を開き、「Discover」をクリックする。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 2
左上の水色のドロップダウンメニューをクリックする。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 3
「Telegraf-*」データビューをクリックする。
ここに「Telegraf-*」が表示されないのであれば、前回(前編)のようにデータビューの作成を行ってください。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 4
「Telegraf-*」に該当するメトリクスデータが表示されます。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 5
データが大量だと確認に困ることがあるので必要に応じて表示するデータを絞り込むことができます。
たとえば特定のホストのデータだけを表示したいということであれば、ホスト名が含まれるのが「tag.host」フィールドなので上部の検索欄に tag.host:"ホスト名"と入力して右端の (リロード)ボタンをクリックします。
抽出されたデータは絞り込み条件が黄色のハイライトになります。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 6
Discoverのメトリクスデータ表示の初期値は1つのデータ毎に3行まで改行なしで表示となります。読みにくいので行の右端の (展開)アイコンをクリックします。ポップアップウインドウは改行ありのJsonデータが表示されるので見易いですが、ポップアップウィンドウのサイズが変更できないことが多いので見辛いことがあるかもしれません。フィールド名に対応する値にどのようなものがあるか確認します。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 7
ビジュアライズ作成のため、左上隅のでメニュー(左列)を開き、「Visualize Library」をクリックする。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 8
今回は、既存のビジュアライズを修正/流用するのではなく「新規作成」なので右上の「 Create ビジュアライゼーション」をクリックする。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 9
使いやすいのは「TSVB」か「レンズ」のようです。Kibana 5系,6系にあったTimelionは使いやすかったのですが7系のどこかのバージョンで廃止された模様。今回はUptimeという簡単な値を使うので「レンズ」でいきます。「レンズ」をクリック。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 10
先にフィールドを選択しても良いのですが、データ表示が重いことがあるので今回は先にビジュアライゼーションのタイプ(種類)の選択を行います。
中央列上部のドロップダウンメニューをクリックし①、今回はレガシーメトリックを選びます②。レガシーではない方の「メトリック」は複数メトリック表示が可能なものの表示にクセがあるので今回は使いませんでした。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 11
左列のフィールド名リストから中央列に、または右列の「メトリック」欄にドラッグ&ドロップします。今回はUptimeを表示したいので「system.uptime」を使います。中央列にポイッと放り込んでやるだけです。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 12
中央列に大きな数字が表示され「system.uptimeの中央値」という表示が付きます。Uptimeの表示としてはほぼ意味のない値です。起動時(ゼロ)から現在までの範囲とは限らないので単純に2倍で良いとは限らないでしょうから。
右列の「system.uptimeの中央値」をクリック。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 13
右列にいろいろ表示されるようになります。ValueのMethodが「クイック機能」の選択状態の筈なので、「最終値」(直近)をクリックします。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 14
中央列が最終値(直近)になります、Uptimeなのでその値はシステムの起動から(ほぼ)現在までの秒数になります。
右列のVlaueのMethodを「式」に切り替えます。①
Methodの下にFormulaが表示されます。これがsystem.uptimeのlast.value(最終値)です。単に秒数を表示されても普通は理解しにくいので日数表示にしたいと思います。1日は86400秒なので秒数の最終値を86400で単純に割れば良さそうです。割り算なので「/86400」を付けるだけです。②
下方の「値の形式」が重要なのでクリックします。③(次へ)

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 15
「値の形式」のドロップダウンメニューで「数字」を選択します。①
「名前」欄が式になっているので消してUptimeなどの任意の文字列を入力します。これは中央列の数字の左上に表示されます。②
小数点以下の桁数は初期値は2桁です。特に変更の必要はなさそうです。「接尾辞」は数字の後に表示される文字列です。今回は日数を表示するので「日」にでもしておけば良さそうです。③
表示が完成したら、右上隅の「 保存」をクリック。④

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編) 16
ビジュアライズのオブジェクトとして保存するための情報と、ダッシュボードへの追加について指定します。
とりあえず、タイトルにはオブジェクトの名前として識別しやすい名前を入力します。①
既存のダッシュボードがあってそのダッシュボードに追加したいということであれば「既存」を選択してドロップダウンメニューからそのダッシュボードを選択します。新しいダッシュボードを作ってそこに追加したいということであれば「新規」を選択します。ダッシュボードに追加というのは後でということであれば「なし」を選択します。今回は、あえて「なし」を選択。②
「ライブラリに追加」のチェックを確認して右下の「保存してライブラリに追加」をクリック。③

これでUptimeのビジュアライズが完成した。 次回はダッシュボードを作成してそこに今回作成したUptimeのビジュアライズを追加する。

関連記事:

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編)

Telegraf
以前、Elastic Stack 5,6系を使っていた頃、ホストに入れるエージェントとしてはcollectdやBeats (MetricbeatやFilebeat)を使っていた。Prometheusを使っていたときはNode Exporterだった。今回、Elastic Stack 8系を使うにあたり、再びcollectdを使うのもどうかと思ったしMetricbeatはFreeBSDでは多くの値が取れなくて困る。新しいElastic Agentには興味があるもののFreeBSD向けのports/pkgはなくダウンロードできるバイナリも提供されていない。そもそもMetricbeatがFreeBSDに完全に対応していない時点でElastic Agentに期待できる訳もない。 FreeBSDやLinux、なんならWindowsにもインストール/各種メトリック値を取得できる軽量シッパーがないものかと調べたところ、Telegrafが良さそうだった。TelegrafはInfluxDBと組み合わせて使うことが多いようだがInfluxDB専用というわけではなく多くの出力先に対応する。そして軽いしFreeBSDで使うときにprocfsやLinux互換パッケージを必要としない。もちろんLinuxやWindowsでも利用可能なのでOS毎にシッパーを使い分ける必要がない。Kibanaで可視化する際もビジュアライズやダッシュボードを共有できる部分が多い筈。(WindowsとMacOSは未確認)

Telegrafのインストール

FreeBSDのportsでインストールの場合

# cd /usr/ports/net-mgmt/telegraf
# make install
ビルドオプションの選択は無し。

FreeBSDのパッケージでインストールの場合

# pkg install net-mgmt/telegraf

FreeBSD以外Linux, macOS, Windows, シングルボードコンピュータのLinux向けは https://github.com/influxdata/telegraf/releases にあります。下にスクロールすると最新版から過去のバージョンが並んでいます。最新版には全てのプラットフォーム向けが揃っていないことがあるので更に古いバージョンも確認してください。

armhfなシングルボードコンピューターのLinuxにインストールする場合

$ cd ~
$ wget https://dl.influxdata.com/telegraf/releases/telegraf-1.25.1_linux_armhf.tar.gz   (ダウンロード)
$ tar zxvf telegraf-1.25.1_linux_armhf.tar.gz   (解凍)
$ cd telegraf-1.25.1
$ sudo mv ./usr/bin/telegraf /usr/bin/
$ sudo mv ./usr/lib/telegraf/scripts/telegraf.service /lib/systemd/system/
$ sudo mv ./var/log/telegraf /var/log/
$ sudo mv ./etc/telegraf /etc/
$ sudo mv ./etc/logrotate.d/telegraf /etc/logrotate.d/

$ sudo groupadd -g 996 telegraf    (グループ作成)
$ sudo useradd -u 996 -g telegraf -M -d /etc/telegraf -s /bin/false telegraf    (ユーザー作成)

ダウンロードするファイルや回答したディレクトリ名は実際にダウンロードしたファイル名に応じて読み替えてください。
グループID 996でtelegrafグループを作成した。システムに既にグループID 996が居るなら適当に違う番号で。
ユーザーID 996でtelegrafユーザーを作成した。システムに既にユーザーID 996が居るなら適当に違う番号で。
このtelegrafユーザーはTelegrafサービスの起動スクリプトで指定しているユーザー名なので違うユーザー名にしたいなら /lib/systemd/system/telegraf.serviceの編集が必要です。

Telegrafの設定

/usr/local/etc/telegraf.conf (編集) FreeBSD
/etc/telegraf/telegraf.conf (編集) Linux
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[global_tags]
#未指定
[agent]
  interval = "30s"
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  precision = "0s"
  hostname = "hoge.example.com"   #変更 Telegrafのあるホストのホスト名等
  omit_hostname = false
#[[outputs.influxdb]]    #行頭に#を付けて必ずコメント化

[[outputs.elasticsearch]]
  urls = [ "https://192.168.2.16:9200" ]   #ElasticsearchのURL
  health_check_interval = "30s"
  username = "shipperuser"                    #Elasticsearchのシッパー用ユーザー名
  password = "01234abcde56789fghij"           #シッパー用ユーザーのパスワード                  
  index_name = "telegraf-%Y.%m.%d"
  tls_ca = "/usr/local/etc/telegraf_cert/http_ca.crt"    #ElasticsearchのホストからコピーしたCA証明書のPath
  insecure_skip_verify = false
# manage_template = true
# template_name = "telegraf"
# force_document_id = false

設定サンプルではプロセス関係/ネットワーク関係等のメトリクス取得が無効になっています。上の設定例でもinput関係には触れていないのでそれらの値は取得されません。必要に応じて有効化してください。
21行目のtls_caはLinuxでは /etc/telegraf/http_ca.crt の辺りが良さそうです。(そこにElasticsearchから取ってきたCA証明書ファイルを置いてください)
CA証明書ファイルhttp_ca.crtはFreeBSDにインストールしたElasticsearchなら (接続先となるElasticsearchが動いているホストの) /usr/local/etc/elasticsearch/certs/http_ca.crt で、これをコピーしてきて設定のtls_caの行に書いたPathに置きます。

FreeBSDでTelegrafサービスの利用可能設定

/etc/rc.conf (1行追記)
telegraf_enable="YES"

LinuxでTelegrafサービスの有効化(開始ではない)

$ sudo systemctl enable telegraf

Telegrafの起動

# service telegraf start    (FreeBSD)

$ sudo service telegraf start    (Linux)
または
$ sudo systemctl start telegraf.service    (Linux)

KibanaでTelegrafからのメトリクスデータを扱う

Metricbeatのメトリクスデータを扱う場合と被る部分が多いです。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 1

Kibana操作用に作成したユーザーでKibanaにログインする。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 2
画面左上の (ハンバーガーメニューアイコン)をクリック①し、
メニュー左列の「Discover」をクリック②する。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 3
おそらく初めてKibanaでDiscoverを見る場合は取得したデータは何も表示されない筈。過去にデータを見ていた場合は直近に閲覧したデータの最新状態等が表示される。
左上の水色のドロップダウンメニューをクリック①する。
「データビュー」の (検索)欄に「telegraf-*」と入力してみる。②
過去にTelegrafから収集したデータを見たことがない(Telegrafのデータビューを作成していない)のであれば、おそらく「telegraf-* doesn't match any options」と表示されてデータは表示されない筈。③
データビューを作成」をクリックする。④ (次の次へ)
または、メニューから順に進むなら次へ。左列のメニューから「スタック管理」に進み、「データビュー」。(次へ)

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 4
左列のメニューから「スタック管理」に進む。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 5
「スタック管理」メニューから「データビュー」に進む。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 6
データビューのリストにtelegraf用のデータビューが存在しないことを確認して、「データビューを作成」ボタンをクリックする。
既にTelegraf用のデータビューがあるならデータビューの作成はスキップする。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 7
右列に「telegraf-〜」のインデックスが1つ以上存在することを確認する。無ければTelegrafからのデータを取得できていない可能性が高い。
中央列の「名前」と「インデックスパターン」欄に「telegraf-*」と入力する。(次へ)

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 8
(続き) 「インデックスパターン」欄に「telegraf-*」と入力するとTelegrafで取得したデータから「タイムスタンプフィールド」が見つけられて「@timestamp」という文字列が自動で入る。これでOK。
画面下部の「データビューをKibanaに保存」ボタンをクリック。
Discover画面で「データビューを作成」をクリックした場合は次の次の次へ。
「スタック管理」の「データビュー」でデータビューを作成した場合は次へ。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 9
telegraf-*のデータに含まれるフィールドが表示される。
この画面では何か操作する必要はないので左列メニューの「データビュー」をクリック。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 10
データビューのリストに「telegraf-*」の項目が追加されたことを確認する。
データビューの作成は終わり。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 11
Discoverに戻る。
左上の水色のドロップダウンメニューをクリックする。
ドロップダウンリストの「telegraf-*」をクリックする。

TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編) 12
左列にtelegrafのフィールド名のリスト、右列にtelegrafが取得したデータが表示される。また、右上には取得したデータ数が時系列のグラフで表示される。
表示されないなら何か問題がある筈。

Kibanaのビジュアライズとダッシュボードでデータを可視化する部分は次回。

関連記事:
Up