chore: add free tier usage alert

This commit is contained in:
vimtor
2026-05-07 13:32:32 +02:00
parent 95280ebec9
commit fbb7b5b1bf
2 changed files with 42 additions and 3 deletions

View File

@@ -169,3 +169,38 @@ new honeycomb.Trigger("IncreasedProviderHttpErrorsZen", {
}, },
], ],
}) })
new honeycomb.Trigger("IncreasedFreeTierRequests", {
disabled: true,
name: "Increased Free Tier Requests",
description,
queryJson: honeycomb.getQuerySpecificationOutput({
calculations: [
{
op: "COUNT",
name: "REQUESTS",
filterCombination: "AND",
filters: [
{ column: "event_type", op: "=", value: "completions" },
{ column: "user_agent", op: "contains", value: "opencode" },
{ column: "isFreeTier", op: "=", value: "true" },
],
},
],
timeRange: 14400,
}).json,
alertType: "on_change",
frequency: 3600,
thresholds: [{ op: ">=", value: 50, exceededLimit: 2 }],
baselineDetails: [{ type: "percentage", offsetMinutes: 1440 }],
recipients: [
{
id: webhookRecipient.id,
notificationDetails: [
{
variables: [{ name: "type", value: "custom" }],
},
],
},
],
})

View File

@@ -23,15 +23,19 @@ const honeycombWebhookPayload = z.discriminatedUnion("type", [
type: z.literal("provider_http_errors"), type: z.literal("provider_http_errors"),
groups, groups,
}), }),
basePayload.extend({
type: z.literal("custom"),
}),
]) ])
const postDiscordMessage = async (payload: z.infer<typeof honeycombWebhookPayload>) => { const postDiscordMessage = async (payload: z.infer<typeof honeycombWebhookPayload>) => {
const group = payload.type === "model_http_errors" ? "model" : "provider" const group =
const names = (payload.groups ?? []).flatMap((item) => item.group.map((g) => g.value)) payload.type === "model_http_errors" ? "model" : payload.type === "provider_http_errors" ? "provider" : undefined
const names = payload.type === "custom" ? [] : payload.groups.flatMap((item) => item.group.map((g) => g.value))
const content = [ const content = [
`[**${payload.isTest ? "[TEST] " : ""}${payload.name ?? "Honeycomb alert"}**](${payload.url})`, `[**${payload.isTest ? "[TEST] " : ""}${payload.name ?? "Honeycomb alert"}**](${payload.url})`,
names.length > 0 ? `Affected ${group}s:` : undefined, group && names.length > 0 ? `Affected ${group}s:` : undefined,
...names.map((name) => `- ${name}`), ...names.map((name) => `- ${name}`),
"", "",
`<@&${DISCORD_ALERT_ROLE_ID}>`, `<@&${DISCORD_ALERT_ROLE_ID}>`,