Help us understand the problem. What is going on with this article?

fluent-newrelic-insightsプラグインを作った

More than 3 years have passed since last update.

この記事は New Relic Advent Calendar 2015 の20日目です。

New Relic Insightsは素晴らしい可能性を感じるサービスではあるのですが、どうやら未だfluentdのouput pluginは誰も作っていないようです。こういうタイプのサービスを見ると、fluentdのプラグインを作りたくなるのは一般的なプログラマの通常の反応だと思うのですが、まだ存在しないということはそれだけNew Relic Insightsが一般に浸透していないということでしょう。

ということで、fluent-newrelic-insights を作ってみました。

これはfluentdのアウトプットプラグインです。受け取ったログデータをNew Relic Insightsにカスタムイベントとして送信します。

インストール

gemを公開しているので、gem install fluent-newrelic-insightsでインストールできます。

設定

<match yourapp.**>
  @type newrelic_insights
  account_id <Your Account ID>
  insert_key <Your Insert Key>
</match>

account_idinsert_key は必須です。どちらもInsightsの管理画面から取得できます。

動かす

ここではテストとして次のような設定とfluent-catを使って動作を確認してみます。IDと鍵は伏せます

サンプル設定ファイル

# fluent.conf
<source>
  @type forward
  port 24224
</source>

<match app.**>
  @type newrelic_insights
  account_id ******
  insert_key **********
</match>

fluentdを起動します

$ fluentd -c fluent.conf

fluentdにデータを送ります

echo '{"eventType": "sampleType", "amount": 1000, "metadata": {"user_id": 1, "group_id": 100}}' | fluent-cat --json app

上記のコマンドを連続5回実行した結果が以下です。

スクリーンショット 2015-12-21 05.01.37.png

ということで、しっかりログがInsightsに送られていることが確認できました。

設定

細かい設定について少しだけ書いておきます。

event_type_key

<match app.**>
  @type newrelic_insights
  account_id ******
  insert_key **********
  event_type_key 'event'
</match>

入力データのどのキーをInsightsのeventTypeとみなすかの設定です。デフォルトではeventTypeです。

event_data_key

入力データのどのキーをInsightsに送るデータのルートとみなすかの設定値です。デフォルトではすべてのログデータをInsightsに送信します。

例えば、次のような設定になっているとき

<match app.**>
  @type newrelic_insights
  account_id ******
  insert_key **********
  event_type_key 'event'
  event_data_key 'data'
</match>

次のような入力を受けると

{
  "event": "sample",
  "data": {
    amount: 1000,
    user: {
      id: 1,
      name: "Taro"
    }
  }
}

次のようにデータを加工してInsightsに送信します

{
  "eventType": "sample",
  "amount": 1000,
  "user.id": 1,
  "user.name": "Taro",
  "timestamp": 1450642010,
  "fluentTag": "app"
}

以上から次のことがわかります。

  • eventeventTypeに変換されている
  • data以下がInsightsに送信されている
  • timestampfluentTagが追加されている
  • ネストしてるキーは.区切りで一つのキーに変換されている
    • Insightsはネストしたオブジェクトを受け付けないので

設定はこれだけ、すごくシンプルなので、あとはwebアプリケーションとか好きなところからどんどんログを送れば自動的にNew Relic Insightsにデータが溜まっていきます。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away