//native
type Digitalocean = {
token: string;
};
/**
* Create Alert Policy
* To create a new alert, send a POST request to `/v2/monitoring/alerts`.
*/
export async function main(
auth: Digitalocean,
body: {
alerts: { email: string[]; slack: { channel: string; url: string }[] };
compare: "GreaterThan" | "LessThan";
description: string;
enabled: false | true;
entities: string[];
tags: string[];
type:
| "v1/insights/droplet/load_1"
| "v1/insights/droplet/load_5"
| "v1/insights/droplet/load_15"
| "v1/insights/droplet/memory_utilization_percent"
| "v1/insights/droplet/disk_utilization_percent"
| "v1/insights/droplet/cpu"
| "v1/insights/droplet/disk_read"
| "v1/insights/droplet/disk_write"
| "v1/insights/droplet/public_outbound_bandwidth"
| "v1/insights/droplet/public_inbound_bandwidth"
| "v1/insights/droplet/private_outbound_bandwidth"
| "v1/insights/droplet/private_inbound_bandwidth"
| "v1/insights/lbaas/avg_cpu_utilization_percent"
| "v1/insights/lbaas/connection_utilization_percent"
| "v1/insights/lbaas/droplet_health"
| "v1/insights/lbaas/tls_connections_per_second_utilization_percent"
| "v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx"
| "v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx"
| "v1/insights/lbaas/increase_in_http_error_rate_count_5xx"
| "v1/insights/lbaas/increase_in_http_error_rate_count_4xx"
| "v1/insights/lbaas/high_http_request_response_time"
| "v1/insights/lbaas/high_http_request_response_time_50p"
| "v1/insights/lbaas/high_http_request_response_time_95p"
| "v1/insights/lbaas/high_http_request_response_time_99p"
| "v1/dbaas/alerts/load_15_alerts"
| "v1/dbaas/alerts/memory_utilization_alerts"
| "v1/dbaas/alerts/disk_utilization_alerts"
| "v1/dbaas/alerts/cpu_alerts";
value: number;
window: "5m" | "10m" | "30m" | "1h";
},
) {
const url = new URL(`https://api.digitalocean.com/v2/monitoring/alerts`);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 536 days ago