[Dynatrace] 祝：Qiita初投稿、DynatraceにTelegrafメトリクスを取り込み監視する

# まずは自己紹介から
みなさん、はじめまして。Dynatraceに勤務する鈴木と申します。プロフェッショナルサービスで、コンサルタントとしてお仕事しています。Dynatraceという監視ツールの名前を皆さん、耳にされたことはありますか？あまり日本では聞く機会は少ないかもしれませんが、2005年にオーストリアで創業し、2019年にNYSEに上場した、監視ツール（現在は、Observability Platformと呼んだ方がよいでしょう）の老舗です。
私はコロナウィルスのパンデミックの最中の2020年に、当時勤務していた会社から、Dynatraceに転職しました。2024年5月現在で、在籍3年半になります。2020年に入社以降、一人でプロフェッショナルサービスの仕事を回していましたが、2024年1月にめでたく仲間ができました（パチパチパチ👏👏👏）。ご入社頂いた田辺さんには、この場を借りて感謝申し上げます。

# 記事を書くモチベーション
あるとき、その田辺さんから「Dynatraceの技術ネタを、Techブログとして記事にしてみたいんですが？」と問いかけられ、ふとそういうえば今までそういうことって自分は生まれてこの方やったことないことに気付きました。田辺さんは、以前はプリセールスエンジニアとして活躍されていたので、記事を書くのもお上手で、Qiitaのタイトルもちょっとした知性を感じ、読者の方に「これ呼んでみようかな？」と思わせるテクニックをお持ちです。そんな田辺さんからの刺激を受けて、自分も書いてみようかなと思い、今回の第一回初投稿に至りました。サンクス、たなべっち。🙇‍♂️

# 最初のネタ
人生初のQiitaとなると、いろいろ考え込んでしまい、これが面白いかな？とか、こんなタイトルにすると読み手に良さが伝わるかな？とか、このゴールデンウィーク中悶々としていました。でも、最初だからこそ普段使っている（or ぜひ活用して欲しいDynatraceの機能）について、皆さんに知って頂くのが良いかなと思い、「Telegraf」とDynatraceの連携を最初のネタにすることにしました。

# Telegraf連携
Dynatraceは、他社のAPMと同様にさまざまな 3rd party tool と連携することができます。その中で、Dynatraceはデフォルトでは監視していない、もしくは監視できていない情報を取り込むひとつのツールとして良く耳にするのが「Telegraf」です。[Telegraf](https://www.influxdata.com/time-series-platform/telegraf/) は、InfluxData社が提供する Open Source ツールで、Linux、Windowsなどのプラットフォームで動き、バックエンドで各種メトリクスを収集してくれる優れものです。なによりも、Telegraf自体がサポートするメトリクスの種類が、とても多いが魅力です。Telegrafではメトリクスとして取り込める機能を「Telegraf input plugin」と位置づけ、200以上のプラグインを持っています。

今回はその中でも、ネットワークの世界ではデファクトの疎通確認ツール（障害切り分けツール）として利用されている ping コマンドの結果と連携させたいと思います。
### Telegrafのインストール
自分のラップトップで、WSL2を動かしていますので、そこにtelegrafをインストールします。インストール方法は、Telegrafの本家のサイトをご覧下さい。以下は、apt でインストールするための準備と実際のインストールの抜粋です。
```
# influxdata-archive_compat.key GPG fingerprint:
#     9D53 9D90 D332 8DC7 D6C8 D3B9 D8FF 8E1F 7DF8 B07E
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list

sudo apt-get update && sudo apt-get install telegraf
```
実際にインストールが終わったら、telegrafのバージョンが最新版か確認します。*v1.30.2* になっていれば、OKです。
```
yasusuzu@wsl2:/etc$ telegraf --version
Telegraf 1.30.2 (git: HEAD@10c15ce4)
```
### /etc/telegraf/telegraf.conf のファイル変更
TelegrafのInputプラグインは、/etc/telegraf/telegraf.conf ファイルの [Inputs.xxx] section を編集することで、メトリクスを収集可能です。今回は、Pingの実行結果を取り込み隊ので、[inputs.ping] section の内容を変更します。各項目の詳しい説明は、本家の[GitHub](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/ping)の情報を見て下さい。Ping関連の各パラメータの中で最も大切なのは、対象のホストを定義する **urls** です。ここにPingを実行したい対象のホストをリストアップします。今回は、Google DNS の *8.8.8.8* と Cloudflare DNSの *1.1.1.1* への疎通時間をメトリクスとして、Dynatraceに取り込みます。Pingを実行する際の、パケット数、インターバル、パケットサイズ、タイムアウトはそれぞれデフォルト値をそのまま使用するため、ここでの編集しません。
```
[[inputs.ping]]
urls = ["8.8.8.8", "1.1.1.1"]
```
次に、Telegrafが収集したメトリクスを送信する先として、Dynatraceを指定しています。Dynatraceは外部から自由にメトリクスを作成できるようにAPI endpointが提供されていますので、そこに対してデータをPOSTすることでTelegrafが収集したメトリクスを、Dynatraceで見ることができるようになります。ここで指定すべきは、下記3つのパラメータです。
```
[[outputs.dynatrace]]
url = "https://<your tenant id>.live.dynatrace.com/api/v2/metrics/ingest"

api_token = "dt0c01.<public token>.<private token>

prefix = "telegraf."
```
### restart telegraf プロセス
*/etc/telegraf/telegraf.conf* ファイルを変更したら、変更したファイルを再読み込みしてくれるよう、**sudo systemctl restart telegraf** でプロセスを再起動させます。その後、数分後にDynatraceのテナントの *Metrics* を見ると、ちゃんと見えるようになっています！（パチパチ）😊
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778724/298e5ea6-2c9e-015c-a174-9b54f6a1c3ae.png)
次に、*Data explorer* で、Split=urlを指定すると、ちゃんと telegraf.conf の urls で指定したホストごとの応答時間が表示されるようになります（下図は、平均応答時間を表示）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778724/c24fed08-0e64-61ca-6fbc-4debce1aec67.png)
## まとめ
人生初のQiitaは、Telegraf と Dynatraceのインテグレーション方法の紹介でした。冒頭でお話したように、Telegrafは200以上の input plugin を持っていますので、それらを活用することで、DynatraceのOneAgentでは取得していないけど、DynatraceのPlatformで一緒にモニタリングしたい要望を満たすことができると思います。今現在、Dynatraceを利用されている方は是非試して見て下さい。まだ、Dynatraceを触ったことがない方は、下記フリートライアルにてお試し下さい。↓↓↓

Dynatraceフリートライアル → https://www.dynatrace.com/ja/trial/
## 参考リンク
1. [（英語）弊社のブログ：Simplify observability for all your custom metrics (Part 5: Telegraf)](https://www.dynatrace.com/news/blog/simplify-observability-for-all-your-custom-metrics-part-5-telegraf/)
1. [（英語）弊社のヘルプ：Send Telegraf metrics to Dynatrace](https://docs.dynatrace.com/docs/extend-dynatrace/extend-metrics/ingestion-methods/telegraf)
1. [（英語）Telegraf のICMPモニタリングの解説](https://www.influxdata.com/integration/ping/)