はじめに
NewRelicでログ監視のアラートポリシーを作る際に、ポリシーの妥当性を確認するためログデータを生成したくなった。
ドキュメントを見たが正直わかりづらいので手順をメモしておく。
https://docs.newrelic.com/jp/docs/logs/log-api/introduction-log-api/
インジェスト用の license_key を用意する
まず躓いたのがここ。
ネットの記事などからKey type
をUser
で作成していたが、正しくはIngest - License
のキーを使用する。
(ドキュメントにはちゃんとライセンスとは書いてあった)
POST用のjsonデータを用意する
ここはかなり柔軟性があるらしく、割と適当でもOK。
今回は次のようなファイルを用意した。
{
"entity.name": "sample.entity",
"level": "ERROR",
"message": "alert policy test data.",
"newrelic.source": "logs.APM"
}
なお実際に投入された際のデータは下記の通り。timestampは自動で入るので入れなくてOK。
{
"entity.name": "sample.entity",
"level": "ERROR",
"message": "alert policy test data.",
"newrelic.logPattern": "nr.DID_NOT_MATCH",
"newrelic.source": "api.logs",
"timestamp": 1738315035641
}
curlで投入する
冒頭のLicenseキーを用意
$ export INGEST_LICENSE=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
https://log-api.newrelic.com/log/v1
へ作成したjsonをPOSTする。(この際の宛先URLはリージョンによるらしい)
$ curl -X POST https://log-api.newrelic.com/log/v1 \
-H 'Content-Type: application/json' \
-H "Api-Key: $INGEST_LICENSE" -d @payload.json
次のようにrequestIdが返されれば成功。{}
の場合は失敗しているので要確認。
{"requestId":"5b6f7dff-0001-bc09-2ee5-0194bba673f9"}