0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【NewRelic】LookupTableにREST API経由でCSVファイルをアップロードする。

Last updated at Posted at 2024-05-27

NewRelicのLookupTableという機能を使ってみました。

LookupTableとは

  • メトリックとは別でCSVをテーブルとして保持できる機能
  • 上記をNRQL上でも表現可
  • メトリックと組み合わせることで、管理しやすくなる。

アップロード方法

ブラウザ(NewRelicのコンソール)からアップロードする方法とRESTAPIを使った方法の2つがあります。

インプットとなるCSVの値がそんなに変動しない場合は、手動アップロードで良いですが、そこそこの頻度で値が変わったり定期的にアップロードする仕組みの場合は後者のAPIを使った方法が良いです。
ということで後者のやり方を確認してみます。
※手動アップロードについては画面をポチポチ押すだけです。

環境

  • Windows11(ただのPC
  • Python(Ver3.11

準備

  • Pythonのインストール
  • API連携に必要な以下の情報の取得 ※APIキーはNewRelicのコンソールで作成・取得可
    • アカウントID
    • APIキー
  • アップロードするCSVファイル
    • 今回はそれっぽい架空のシステムの情報をまとめたCSVを用意
      image.png

スクリプト作成

  • 以下サンプルです。CSVファイルをJSON変換して、CurlコマンドでLookupTableへPOSTしています。
  • 文字コードですが、SJISだと文字化けしてしまうので注意しましょう(UTF-8なら日本語でも大丈夫
  • エラーハンドリングとかはガン無視
Try_NR-csvdataUpload-api.py
import subprocess
import json
import csv

# アカウントIDなど
endpoint = 'https://nrql-lookup.service.newrelic.com/v1/accounts'
account_id = '<NewRelicアカウントID>'
table_name = '<任意のテーブル名>'
api_key = '<APIキー>'
# CSVファイルのパス  ↓対象のCSVファイルを指定
csv_file = r'C:\temp\fictional_systems_and_servers_japanese.csv'
# CSVファイルからデータを読み取ってJSON形式に変換する
def csv_to_json(csv_file):
    data = {
        "table": {
            "headers": [],
            "rows": []
        },
        "description": "CSV data upload"
    }
    with open(csv_file, 'r', newline='', encoding='utf-8') as file:
        reader = csv.reader(file)
        data["table"]["headers"] = next(reader)  # ヘッダーを取得
        for row in reader:
            data["table"]["rows"].append(row)
    return data

# CSVからデータを読み取ってJSONに変換
data = csv_to_json(csv_file)

# Curlコマンドを構築
curl_command = [
    'curl',
    '-X', 'POST',
    '-H', 'Content-Type: application/json',
    '-H', f'Api-Key: {api_key}',
    '-d', f'{json.dumps(data)}',
    f'{endpoint}/{account_id}/{table_name}'
]

# Curlコマンドを実行
subprocess.run(curl_command)

結果

  • 上記スクリプトを実行してみました。(モザイク多めですいません・・
    テーブル名は「Testupload」という名前にしてみました。
    image.png

  • NewRelicにサインインして、確認します。LookupTableは「Logs」の中にあります。
    「testupload」というテーブルがいますね。

image.png

  • NRQLで「testupload」の内容を確認してみます。Lookuptableを参照する場合は、「lookup」を使用します。
    FROM lookup(testupload) SELECT *
    CSVの内容が連携されていることが確認出来ました!
    image.png

参考:NRQLで使ってみる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?