New Relic Infrastructure Agent と Fluent Bit を使って CSV データとして連携し、項目ごとに属性として取り込む方法を紹介します。
システムの運用管理において、バッチ処理の実行結果や日々の稼働実績が CSV ファイルとして出力されることはよくあります。これらのデータは、その時点では静的な記録に過ぎません。しかし、もしこの CSV データを他のシステムメトリクスやアプリケーションログと組み合わせて、リアルタイムで可視化・分析できれば、システムの健全性をより深く把握できるようになります。
この記事では、New Relic Infrastructure Agent のログ収集機能と、そのバックエンドで動作するFluent Bit を連携させ、CSV ファイルをログデータとして New Relic に取り込む具体的な方法を解説します。さらに、New Relic Logs の強力なパース機能を使ってCSVの各項目を NRQL でクエリ可能な属性に変換し、ダッシュボードでの可視化やアラート設定に活かす手順を、実際のコード例を交えてご紹介します。
本記事を読めば、CSV ファイルが単なる記録ではなく、システムのオブザーバビリティを高めるための重要なデータソースへと変わります。
1. 連携の全体像を理解する
この連携では、以下の3つのコンポーネントが重要な役割を果たします。CSV ファイルのデータがどのように流れていくかをシンプルな図で見てみましょう。
各コンポーネントの役割は以下の通りです。
Infrastructure Agent: サーバーのメトリクス(CPU、メモリなど)を監視するエージェントです。このエージェントの設定でログ収集を有効化すると、Fluent Bit がサブプロセスとして自動的に起動します。
Fluent Bit: Infrastructure Agent から起動される軽量なログフォワーダーです。指定された CSV ファイルを読み込み、New Relic の Logs API にデータを送信する役割を担います。
New Relic Logs: Fluent Bit から送信されたログデータを受信し、保存するサービスです。ここで事前に設定したパースルールが適用され、CSV の各項目が New Relic の属性として取り込まれます。
2. Infrastructure Agent の設定(ログ収集の有効化)
Infrastructure Agent のログ収集機能を有効にし、監視対象のCSVファイルを指定します。設定は/etc/newrelic-infra/logging.d/
ディレクトリ内に YAML 形式のファイルとして作成します。
ここでは、CSV ファイルにlogtype: my-csv-log
という属性を付与します。この属性が、New Relic 側でパースルールを適用するための重要なトリガーとなります。
logs:
- name: my-csv-data
file: /path/to/your/log/*.csv
attributes:
logtype: my-csv-log
ここまでの設定が完了すると CSV ファイルのデータが New Relic に取り込まれます。Logs の画面でlogtype: my-csv-log
を条件に指定して検索すると対象のログだけに絞り込んで表示できます。
この状態だとまだ csv の項目がそのまま message として取り込まれているだけです。
3. New Relic Logs でのパース設定
New Relic Logs で、先ほど付与したlogtypeに対応するパースルールを設定します。
Logs のメニューから Parsing を選択し、Create parsing ruleをクリックします。
Rule nameを任意で設定します(例: CSV_Parser_for_BatchResult)。
Filter queryにlogtype = 'my-csv-log'と入力し、先ほど定義したログタイプを指定します。
すでに条件に合うログがある場合は対象のログが表示されます。
Parsing rule and output に、Grokパターンを使ってパースのルールを定義します。
New Relic LogsにはCSVデータのパースに特化した便利な機能が組み込まれており、%{GREEDYDATA:log:csv(...)%}という形式で簡単に記述できます。
例えば、CSVのヘッダーがtimestamp, action, count, statusである場合、Grokパターンは以下のように設定します。
%{GREEDYDATA:log:csv({"columns": ["timestamp", "action", "count", "status"]})}
このパターンによって、CSVの各項目がtimestamp, action, count, statusといった属性としてNew Relicに取り込まれます。
このようにして定義したルールを保存すると、以降のログデータは自動的にパースされ、NRQLで自在にクエリできる状態になります。
Tips: Grokパターンの幅広い活用
ここでCSVデータに特化した Grok パターンを紹介しましたが、New Relic の Grok パターンは他にも多くのログ形式に対応しています。json パターンや key-value パターンなどを活用すれば、JSON 形式や単純な Key-Value 形式のログデータも簡単にパースして属性化できます。今回ご紹介した方法論は、CSV 以外の様々なログデータにも応用できるため、ぜひ試してみてください。
4. パースした属性の活用方法
パースされたデータは、New Relic の強力な NRQL(New Relic Query Language)を使って自在に活用できます。
NRQL クエリの例
特定のアクションごとの実行回数を集計する
SELECT count(*)
FROM Log
WHERE logtype = 'my-csv-log' FACET log.action
特定のアクションごとの処理に成功したデータの件数を集計する
SELECT sum(numeric(`log.count`))
FROM Log
WHERE `logtype` = 'my-csv-log' AND log.status ='SUCCESS' FACET log.action
ダッシュボードでの可視化
NRQL を使って、CSV データをグラフとしてダッシュボードに追加できます。例えば、上記 NRQL クエリを元に、アクションごとの実行回数を棒グラフで表示したり、平均応答時間の推移を時系列グラフで表示したりすることが可能です。
アラートの設定
CSV データの属性をトリガーにアラートを設定することもできます。
例: 実行結果が FAILED になるデータがあった場合にアラートを通知する
SELECT count(*)
FROM Log
WHERE logtype = 'my-csv-log' AND log.status ='FAILED' FACET log.action
上記のクエリを NRQL アラートに設定すると実行結果が FAILED 場合に通知することが可能です。
まとめ
New Relic Infrastructure Agent と Fluent Bit を組み合わせることで、CSV というシンプルながらも構造的なデータ形式を、New Relic のオブザーバビリティプラットフォームに簡単に取り込むことができます。
この連携により、システムログ、アプリケーションメトリクス、そして CSV データで管理されていた稼働実績などを一元的に分析・可視化できるようになり、より包括的なシステム監視を実現できます。ぜひ、本記事を参考に CSV データの活用を始めてみてください。
Tips: New Relic AI を活用した Grok パターンの自動生成
Grokパターンの記述に慣れていない場合でも、New Relic AI を使えば簡単にパターンを生成できます。
手動で複雑なパターンを試行錯誤する手間はもう必要ありません。
Logs UI でパースしたいログメッセージを選択し、表示される「Ask our AI to suggest a parsing rule」ボタンをクリックするだけです。
New Relic AI がメッセージを分析して最適なGrokパターンを提案してくれます。
提案されたパターンが期待通りか確認し、必要に応じて微調整してルールに適用することで、作業時間を大幅に短縮できます。
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!