障害時間から稼働率とナイン数を計算
30日間、つまり43,200分の監視期間に合計45分となる3件の障害があると、稼働率は99.9 %をわずかに下回り、ナイン数は2になります。期間と各障害の時間を同じ単位で入力してください。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 周期
- 43,200 minutes
- インシデント
- 10, 20, 15
- インシデント数
- 3 minutes
- インシデントの合計時間
- 45
- 稼働時間
- 43,155
- 稼働率 (%)
- 99.8958333333
監視期間と各障害の継続時間を、明確な可用性の結果に変換します。停止時間を合計し、監視期間を超えていないか確認したうえで、稼働時間、稼働率、ナイン数を返します。秒、分、時間、日のいずれかを選び、すべて同じ単位で入力してください。通信、現在時刻、乱数は使用せず、暦や障害の重複も推測しません。
監視期間と正確な障害時間をご用意ください
まず、30日、720時間、43,200分など、報告対象の全期間をご指定ください。次に、その期間内で可用性を低下させた障害時間を列挙します。期間と障害には同じ単位をお使いください。
停止がなければ空の配列にします。本機能は各時間を別々の停止として加算し、重複を検出しません。同じサービスで同時に発生した障害は、二重計上を避けるため事前に統合してください。
期間は正の有限値、各障害時間は0以上の有限値である必要があります。合計が期間を超える入力は、誤解を招く負の可用性を返さずエラーにします。
稼働率とナイン数の算出方法
障害時間を合計して監視期間から引き、残った稼働時間を全期間で割って100倍します。99.9パーセントなら、停止は期間の千分の一です。ナイン数は停止率の常用対数を負にした値の整数部分です。
0.001は3ナイン、0.0001は4ナインとなり、中間値を上位へ切り上げません。停止が0なら完全稼働と表示し、有限のナイン数は省略します。
ステータス報告で結果をご活用ください
件数、停止合計、稼働時間、稼働率、分類は、人向けの報告にも自動処理にも利用できます。公開前に、対象期間が報告日付と一致し、計画保守の扱いが公表方針に沿っているかご確認ください。サービス目標の評価では、分類だけでなく契約上のしきい値と稼働率を比較します。
停止合計が期間を超える場合は、重複、単位の混在、対象期間の不一致を疑ってください。
活用例
月次状況を公開する
月の長さと確定済み障害から、監査可能な稼働率を算出します。
サービス目標を評価する
測定値を目標値やエラーバジェットと比較します。
障害データを検証する
重複や単位混在による不可能な合計を検出します。
よくある質問
利用できる単位は何ですか?
秒、分、時間、日を選べます。すべての値に同じ単位をご使用ください。
ナイン数はどう決まりますか?
停止率の常用対数を負にした値の整数部分で、上位には丸めません。
障害がない場合はどうなりますか?
空の配列なら100パーセントの完全稼働となり、有限のナイン数は返しません。
99.9 %をわずかに下回るとナイン数が2になるのはなぜですか?
ちょうどの境目の間にある値は、下の区分に入るためです。ナイン数3では停止が期間の千分の一以内である必要があり、43,200分中45分はそれを少し超えるので、届いていない目標を名乗らないようになっています。
障害の合計が監視期間より長い場合はどうなりますか?
マイナスの稼働率という意味のない結果を返す代わりに、計算を受け付けません。期間がレポートの範囲全体をカバーしているか、障害が同じ単位で入力されているかを確認してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/web/status-page-uptime-percent \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"period":60,"incidents":[10,20,15]}'const res = await fetch("https://api.kit.forhosting.com/web/status-page-uptime-percent", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"period": 60,
"incidents": [
10,
20,
15
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/status-page-uptime-percent",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"period": 60,
"incidents": [
10,
20,
15
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/status-page-uptime-percent", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"period":60,"incidents":[10,20,15]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"period":60,"incidents":[10,20,15]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/status-page-uptime-percent", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"period": 60,
"incidents": [
10,
20,
15
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.status_page_uptime_percent",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_incidents | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
稼働率とナイン数の算出方法
安定したJSONのため表示値は小数12桁に丸めますが、分類には丸め前の比率を使います。
ステータス報告で結果をご活用ください
簡単な確認はブラウザーで行え、自動化されたAPIリクエストは1回 $0.002 です。
技術的な質問
API計算の料金はいくらですか?
APIは1リクエスト $0.002 です。同じ計算をブラウザーでも実行できます。
重複する障害を処理しますか?
いいえ。同じサービスの重複時間は事前に統合してください。