Skip to content

Commit

Permalink
example: add manage-monitors.ts for monitor service operations
Browse files Browse the repository at this point in the history
  • Loading branch information
ThetaBird committed Feb 2, 2025
1 parent 12f28e5 commit 9d1efe3
Showing 1 changed file with 77 additions and 0 deletions.
77 changes: 77 additions & 0 deletions examples/js/src/manage-monitors.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import { monitors } from '@axiomhq/js';

const client = new monitors.Service({ token: process.env.AXIOM_TOKEN || '' });
const datasetName = 'test-axiom-js-monitors';

async function createMonitor() {
console.log('Creating monitor...');
const response = await client.create({
name: 'Example CPU Monitor',
type: 'Threshold',
description: 'Monitor high CPU usage',
aplQuery: `['${datasetName}'] | summarize count() by bin_auto(_time)`,
operator: 'Above',
threshold: 90,
alertOnNoData: true,
notifyByGroup: false,
notifierIDs: [],
intervalMinutes: 5,
rangeMinutes: 10,
});
console.log(`Created monitor with ID: ${response.id}`);
return response;
}

async function listMonitors() {
console.log('\nListing all monitors:');
const monitors = await client.list();
for (const monitor of monitors) {
console.log(`- ${monitor.name} (${monitor.id}): ${monitor.description}`);
}
return monitors;
}

async function getMonitor(id: string) {
console.log(`\nGetting monitor ${id}...`);
const response = await client.get(id);
console.log(`Retrieved monitor: ${JSON.stringify(response, null, 2)}`);
return response;
}

async function updateMonitor(id: string) {
console.log('\nUpdating monitor...');
const response = await client.update(id, {
name: 'Updated CPU Monitor',
type: 'Threshold',
description: 'Monitor high CPU usage',
aplQuery: `['${datasetName}'] | summarize count() by bin_auto(_time)`,
operator: 'Above',
threshold: 90,
alertOnNoData: true,
notifyByGroup: false,
notifierIDs: [],
intervalMinutes: 5,

rangeMinutes: 10,
});
console.log(`Updated monitor name to: ${response.name}`);
return response;
}

async function deleteMonitor(id: string) {
console.log('\nDeleting monitor...');
const response = await client.delete(id);
console.log('Monitor deleted successfully');
return response;
}

async function main() {
// Create and manage a monitor
const monitor = await createMonitor();
await listMonitors();
await getMonitor(monitor.id);
await updateMonitor(monitor.id);
await deleteMonitor(monitor.id);
}

main().catch(console.error);

0 comments on commit 9d1efe3

Please sign in to comment.