0

Create Alert Policy

by
Published Dec 20, 2024

To create a new alert, send a POST request to `/v2/monitoring/alerts`.

Script digitalocean Verified

The script

Submitted by hugo697 Bun
Verified 536 days ago
1
//native
2
type Digitalocean = {
3
  token: string;
4
};
5
/**
6
 * Create Alert Policy
7
 * To create a new alert, send a POST request to `/v2/monitoring/alerts`.
8
 */
9
export async function main(
10
  auth: Digitalocean,
11
  body: {
12
    alerts: { email: string[]; slack: { channel: string; url: string }[] };
13
    compare: "GreaterThan" | "LessThan";
14
    description: string;
15
    enabled: false | true;
16
    entities: string[];
17
    tags: string[];
18
    type:
19
      | "v1/insights/droplet/load_1"
20
      | "v1/insights/droplet/load_5"
21
      | "v1/insights/droplet/load_15"
22
      | "v1/insights/droplet/memory_utilization_percent"
23
      | "v1/insights/droplet/disk_utilization_percent"
24
      | "v1/insights/droplet/cpu"
25
      | "v1/insights/droplet/disk_read"
26
      | "v1/insights/droplet/disk_write"
27
      | "v1/insights/droplet/public_outbound_bandwidth"
28
      | "v1/insights/droplet/public_inbound_bandwidth"
29
      | "v1/insights/droplet/private_outbound_bandwidth"
30
      | "v1/insights/droplet/private_inbound_bandwidth"
31
      | "v1/insights/lbaas/avg_cpu_utilization_percent"
32
      | "v1/insights/lbaas/connection_utilization_percent"
33
      | "v1/insights/lbaas/droplet_health"
34
      | "v1/insights/lbaas/tls_connections_per_second_utilization_percent"
35
      | "v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx"
36
      | "v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx"
37
      | "v1/insights/lbaas/increase_in_http_error_rate_count_5xx"
38
      | "v1/insights/lbaas/increase_in_http_error_rate_count_4xx"
39
      | "v1/insights/lbaas/high_http_request_response_time"
40
      | "v1/insights/lbaas/high_http_request_response_time_50p"
41
      | "v1/insights/lbaas/high_http_request_response_time_95p"
42
      | "v1/insights/lbaas/high_http_request_response_time_99p"
43
      | "v1/dbaas/alerts/load_15_alerts"
44
      | "v1/dbaas/alerts/memory_utilization_alerts"
45
      | "v1/dbaas/alerts/disk_utilization_alerts"
46
      | "v1/dbaas/alerts/cpu_alerts";
47
    value: number;
48
    window: "5m" | "10m" | "30m" | "1h";
49
  },
50
) {
51
  const url = new URL(`https://api.digitalocean.com/v2/monitoring/alerts`);
52

53
  const response = await fetch(url, {
54
    method: "POST",
55
    headers: {
56
      "Content-Type": "application/json",
57
      Authorization: "Bearer " + auth.token,
58
    },
59
    body: JSON.stringify(body),
60
  });
61
  if (!response.ok) {
62
    const text = await response.text();
63
    throw new Error(`${response.status} ${text}`);
64
  }
65
  return await response.json();
66
}
67