LoginSignup
0
0

さくっとmackerelへサービスメトリクスを投稿する

Posted at

はじめに

さくっとサービスメトリクスを投稿したいので一番簡単な奴を作ったので残しとく。

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} に保存されています。")
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