はじめに
さくっとサービスメトリクスを投稿したいので一番簡単な奴を作ったので残しとく。
bash版
#!/bin/bash
API_KEY="XXXXXXXXXXX"
LOG_FILE="/tmp/curl_log.txt"
DRY_RUN=false
METRIC_TIME=$(date +%s)
METRIC_NAME1="Test_Linux.value_1"
METRIC_VALUE1=$((RANDOM % 100 + 1))
METRIC_NAME2="Test_Linux.value_2"
METRIC_VALUE2=$((RANDOM % 100 + 1))
METRIC_NAME3="Test_Linux.value_3"
METRIC_VALUE3=$((RANDOM % 100 + 1))
# オプション解析
while [ $# -gt 0 ]; do
case "$1" in
--dry-run)
DRY_RUN=true
shift
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
done
# リクエストの内容を変数に格納
REQUEST_DATA="[
{\"name\":\"${METRIC_NAME1}\",\"time\":${METRIC_TIME},\"value\":${METRIC_VALUE1}},
{\"name\":\"${METRIC_NAME2}\",\"time\":${METRIC_TIME},\"value\":${METRIC_VALUE2}},
{\"name\":\"${METRIC_NAME3}\",\"time\":${METRIC_TIME},\"value\":${METRIC_VALUE3}}
]"
if [ "$DRY_RUN" = true ]; then
# dry-runモードでリクエスト内容をログに出力
echo "curlリクエストの内容 (dry-run):"
echo "$REQUEST_DATA" >> "$LOG_FILE"
echo "dry-runモードでリクエスト内容をログに保存しました。実際のリクエストは行われません。"
else
# curlリクエストを実行し、リクエスト内容とレスポンスをログに記録
curl -sS -X POST \
-H "X-Api-Key:${API_KEY}" \
-H 'Content-Type:application/json' \
-d "$REQUEST_DATA" https://api.mackerelio.com/api/v0/services/nabe_sv/tsdb >> "$LOG_FILE" 2>&1
echo "curlリクエストを実行しました。ログは $LOG_FILE に保存されています。"
fi
python版
#!/usr/bin/env python
import requests
import json
import time
import random
API_KEY = "XXXXXXXXXX"
LOG_FILE = "/tmp/curl_log.txt"
DRY_RUN = True
METRIC_TIME = int(time.time())
METRIC_NAME1 = "Test_Linux.value_1"
METRIC_VALUE1 = random.randint(1, 100)
METRIC_NAME2 = "Test_Linux.value_2"
METRIC_VALUE2 = random.randint(1, 100)
METRIC_NAME3 = "Test_Linux.value_3"
METRIC_VALUE3 = random.randint(1, 100)
# リクエストの内容を変数に格納
request_data = [
{"name": METRIC_NAME1, "time": METRIC_TIME, "value": METRIC_VALUE1},
{"name": METRIC_NAME2, "time": METRIC_TIME, "value": METRIC_VALUE2},
{"name": METRIC_NAME3, "time": METRIC_TIME, "value": METRIC_VALUE3},
]
if DRY_RUN:
# dry-runモードでリクエスト内容をログに出力
print("curlリクエストの内容 (dry-run):")
print(request_data)
with open(LOG_FILE, "a") as log_file:
json.dump(request_data, log_file)
log_file.write("\n")
print("dry-runモードでリクエスト内容をログに保存しました。実際のリクエストは行われません。")
else:
# curlリクエストを実行し、リクエスト内容とレスポンスをログに記録
headers = {"X-Api-Key": API_KEY, "Content-Type": "application/json"}
response = requests.post(
"https://api.mackerelio.com/api/v0/services/nabe_sv/tsdb",
json=request_data,
headers=headers,
)
with open(LOG_FILE, "a") as log_file:
log_file.write(f"curlリクエストのレスポンス:\n{response.text}\n")
print(f"curlリクエストを実行しました。ログは {LOG_FILE} に保存されています。")