mirror of https://github.com/wg-easy/wg-easy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.0 KiB
35 lines
1.0 KiB
export default defineMetricsHandler('prometheus', async () => {
|
|
return getMetricsJSON();
|
|
});
|
|
|
|
async function getMetricsJSON() {
|
|
const clients = await WireGuard.getClients();
|
|
let wireguardPeerCount = 0;
|
|
let wireguardEnabledPeersCount = 0;
|
|
let wireguardConnectedPeersCount = 0;
|
|
for (const client of clients) {
|
|
wireguardPeerCount++;
|
|
if (client.enabled === true) {
|
|
wireguardEnabledPeersCount++;
|
|
}
|
|
if (isPeerConnected(client)) {
|
|
wireguardConnectedPeersCount++;
|
|
}
|
|
}
|
|
return {
|
|
wireguard_configured_peers: wireguardPeerCount,
|
|
wireguard_enabled_peers: wireguardEnabledPeersCount,
|
|
wireguard_connected_peers: wireguardConnectedPeersCount,
|
|
clients: clients.map((client) => ({
|
|
name: client.name,
|
|
enabled: client.enabled,
|
|
ipv4Address: client.ipv4Address,
|
|
ipv6Address: client.ipv6Address,
|
|
publicKey: client.publicKey,
|
|
endpoint: client.endpoint,
|
|
latestHandshakeAt: client.latestHandshakeAt,
|
|
transferRx: client.transferRx,
|
|
transferTx: client.transferTx,
|
|
})),
|
|
};
|
|
}
|
|
|