# TD Agentの監視

Treasure Agent(`td-agent`)デーモンを監視して、メトリクスを収集したり、システムのトラブルシューティングを行ったりできます。

* [前提条件](#prerequisites)
* [Fluentdメトリクス監視](#fluentd-metrics-monitoring)
* [HTTP経由での監視](#monitoring-via-http)
* [PrometheusまたはDatadogでの監視](#monitoring-with-prometheus-or-datadog)
* [プロセス監視](#process-monitoring)
* [ポート監視](#port-monitoring)
* [デバッグポート](#debug-port)


# 前提条件

* Treasure Dataの基本的な知識。
* td-agentの基本的な知識。


# Fluentdメトリクス監視

## HTTP経由での監視

`td-agent`には、HTTP経由でJSON形式で内部メトリクスを取得するための組み込み監視エージェントがあります。設定ファイルに以下の行を追加してください。


```conf
<source>
  type monitor_agent
  bind 0.0.0.0
  port 24220
</source>
```

`disable_node_info`(デフォルト`true`): システムメトリクス、CPU / Memory / Diskを送信するかどうか。

エージェントを再起動し、HTTP経由でメトリクスを取得してください。


```bash
$ curl http://host:24220/api/plugins.json
{"plugins":[{"plugin_id":"object:3fec669d6ac4","type":"forward","output_plugin":false,"config":{"type":"forward"}},{"plugin_id":"object:3fec669daf98","type":"http","output_plugin":false,"config":{"type":"http","port":"8888"}},{"plugin_id":"object:3fec669dfa48","type":"monitor_agent","output_plugin":false,"config":{"type":"monitor_agent","port":"24220"}},{"plugin_id":"object:3fec66a52e94","type":"debug_agent","output_plugin":false,"config":{"type":"debug_agent","port":"24230"}},{"plugin_id":"object:3fec66ae3dcc","type":"stdout","output_plugin":true,"config":{"type":"stdout"}},{"plugin_id":"object:3fec66aead48","type":"forward","output_plugin":true,"buffer_queue_length":0,"buffer_total_queued_size":0,"retry_count":0,"config":{"type":"forward","host":"192.168.0.11"}}]}%
```

## PrometheusまたはDatadogでの監視

さらに、td-agentはPrometheusやDatadogなどの監視ツールと連携します。Treasure DataがCNCF(Cloud Native Computing Foundation)と協力しているため、Prometheusの使用をお勧めします。

* [Monitoring Fluentd (Prometheus)](https://docs.fluentd.org/monitoring-fluentd/monitoring-prometheus)
* [Monitoring Fluentd (Datadog)](https://docs.datadoghq.com/integrations/fluentd/)


# プロセス監視

2つの`ruby`プロセス(親と子)が実行されます。これらのプロセスが実行されていることを確認してください。


```bash
/usr/lib/fluent/ruby/bin/ruby /usr/sbin/td-agent \
  --daemon /var/run/td-agent/td-agent.pid \
  --log /var/log/td-agent/td-agent.log
```

Linux上のtd-agentの場合、以下のコマンドでプロセスステータスを確認できます。問題がなければ、2つのプロセスのステータスが表示されます。


```bash
$ ps w -C ruby -C td-agent --no-heading
32342 ?        Sl     0:00 /usr/lib/fluent/ruby/bin/ruby /usr/sbin/td-agent --daemon /var/run/td-agent/td-agent.pid --log /var/log/td-agent/td-agent.log
32345 ?        Sl     0:01 /usr/lib/fluent/ruby/bin/ruby /usr/sbin/td-agent --daemon /var/run/td-agent/td-agent.pid --log /var/log/td-agent/td-agent.log
```

# ポート監視

td-agentはデフォルトで以下のポートを開きます。これらのポートの可用性を確認することをお勧めします。

* TCP 0.0.0.0 8888 (HTTP)
* TCP 0.0.0.0 24224 (Forward)


データを送信しない場合、デーモンは何もしません。

## デバッグポート

ローカル通信用のデバッグポートも開かれます。

* TCP 127.0.0.1 24230