0

Create Logsink for a Database Cluster

by
Published Dec 20, 2024

To create logsink for a database cluster, send a POST request to `/v2/databases/$DATABASE_ID/logsink`.

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 Logsink for a Database Cluster
7

8
 * To create logsink for a database cluster, send a POST request to
9
`/v2/databases/$DATABASE_ID/logsink`.
10

11
 */
12
export async function main(
13
  auth: Digitalocean,
14
  database_cluster_uuid: string,
15
  body: {
16
    sink_name?: string;
17
    sink_type?: "rsyslog" | "elasticsearch" | "opensearch";
18
  } & {
19
    config?:
20
      | {
21
          server: string;
22
          port: number;
23
          tls: false | true;
24
          format: "rfc5424" | "rfc3164" | "custom";
25
          logline?: string;
26
          sd?: string;
27
          ca?: string;
28
          key?: string;
29
          cert?: string;
30
        }
31
      | {
32
          url: string;
33
          index_prefix: string;
34
          index_days_max?: number;
35
          timeout?: number;
36
          ca?: string;
37
        }
38
      | {
39
          url: string;
40
          index_prefix: string;
41
          index_days_max?: number;
42
          timeout?: number;
43
          ca?: string;
44
        };
45
  },
46
) {
47
  const url = new URL(
48
    `https://api.digitalocean.com/v2/databases/${database_cluster_uuid}/logsink`,
49
  );
50

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