# Scribeプロトコルを使用したログ保存のためのTD Agent

Treasure Agent(td-agent)はScribeプロトコル(Thriftベース)を理解します。td-agentは、既存のScribeインフラストラクチャと共存または置き換えることができます。

[fluent-plugin-scribe](https://github.com/fluent/fluent-plugin-scribe)を参照してください。このpluginはScribe _output_もサポートしています。

* [前提条件](/ja/products/customer-data-platform/integration-hub/streaming/td-agent/td-agent-using-scribe-protocol-to-store-logs#prerequisites)
* [Scribe入力の使用の指定](/ja/products/customer-data-platform/integration-hub/streaming/td-agent/td-agent-using-scribe-protocol-to-store-logs#specifying-use-of-scribe-input)
* [JSON文字列としてのメッセージ](/ja/products/customer-data-platform/integration-hub/streaming/td-agent/td-agent-using-scribe-protocol-to-store-logs#messages-as-json-string)
* [その他のフォーマット](/ja/products/customer-data-platform/integration-hub/streaming/td-agent/td-agent-using-scribe-protocol-to-store-logs#other-formats)


# 前提条件

* [TD Toolbelt](/tools/cli-and-sdks/td-toolbelt)を含むTreasure Dataの基本的な知識。
* td-agentの基本的な知識。


# Scribe入力の使用の指定

以下の設定により、Scribe入力pluginが有効になります:


```conf
<source>
  type scribe
  port 1463
</source>
```

Scribeプロトコルの`category`フィールドは、td-agentの`tag`として使用されます。test_db database内のwww_access tableにデータを保存する場合は、以下のようにLogEntryを送信してください(Ruby例)。


```ruby
LogEntry.new
entry.category = 'td.test_db.www_access'
entry.message = 'abcde'
client.Log([entry])
```

このメッセージは次のように編成されます。


```ruby
{
  message => 'abcde'
}
```

# JSON文字列としてのメッセージ

半構造化データのメッセージフィールドには、多くの場合JSON文字列が含まれます。td-agentは_msg_format_オプションを使用して、JSON文字列をその場で解析します。


```conf
<source>
  type scribe
  port 1463
  msg_format json
</source>
```

以下のようにレコードを送信してください。entry.messageがJSON文字列であることに注意してください。


```ruby
entry = LogEntry.new
entry.category = 'td.test_db.www_access'
entry.message = {'a' => 'b', 'c' => d}.to_json
client.Log([entry])
```

このメッセージは次のように編成されます。


```ruby
{
  'a' => 'b',
  'c' => 'd',
}
```

# その他のフォーマット

_msg_format_オプションは、`text`、`json`、`url_param`をサポートしています。`url_param`のフォーマットは次のとおりです。

`key1=val1&key2=val2&key3=val3`