mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-30 04:32:53 +00:00
update telemetry
This commit is contained in:
@@ -2,7 +2,7 @@ import { PostHog } from "posthog-node";
|
|||||||
import config from "./config";
|
import config from "./config";
|
||||||
import { getHostMeta } from "./hostMeta";
|
import { getHostMeta } from "./hostMeta";
|
||||||
import logger from "@server/logger";
|
import logger from "@server/logger";
|
||||||
import { apiKeys, db, roles, siteResources } from "@server/db";
|
import { alertRules, apiKeys, blueprints, db, roles, siteResources } from "@server/db";
|
||||||
import { sites, users, orgs, resources, clients, idp } from "@server/db";
|
import { sites, users, orgs, resources, clients, idp } from "@server/db";
|
||||||
import { eq, count, notInArray, and, isNotNull, isNull } from "drizzle-orm";
|
import { eq, count, notInArray, and, isNotNull, isNull } from "drizzle-orm";
|
||||||
import { APP_VERSION } from "./consts";
|
import { APP_VERSION } from "./consts";
|
||||||
@@ -15,6 +15,7 @@ class TelemetryClient {
|
|||||||
private client: PostHog | null = null;
|
private client: PostHog | null = null;
|
||||||
private enabled: boolean;
|
private enabled: boolean;
|
||||||
private intervalId: NodeJS.Timeout | null = null;
|
private intervalId: NodeJS.Timeout | null = null;
|
||||||
|
private collectionIntervalDays = 14;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
const enabled = config.getRawConfig().app.telemetry.anonymous_usage;
|
const enabled = config.getRawConfig().app.telemetry.anonymous_usage;
|
||||||
@@ -33,7 +34,7 @@ class TelemetryClient {
|
|||||||
this.client = new PostHog(
|
this.client = new PostHog(
|
||||||
"phc_QYuATSSZt6onzssWcYJbXLzQwnunIpdGGDTYhzK3VjX",
|
"phc_QYuATSSZt6onzssWcYJbXLzQwnunIpdGGDTYhzK3VjX",
|
||||||
{
|
{
|
||||||
host: "https://pangolin.net/relay-O7yI"
|
host: "https://telemetry.fossorial.io/relay-O7yI"
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -72,7 +73,7 @@ class TelemetryClient {
|
|||||||
logger.debug("Successfully sent analytics data");
|
logger.debug("Successfully sent analytics data");
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
336 * 60 * 60 * 1000
|
this.collectionIntervalDays * 24 * 60 * 60 * 1000 // Convert days to milliseconds
|
||||||
);
|
);
|
||||||
|
|
||||||
this.collectAndSendAnalytics().catch((err) => {
|
this.collectAndSendAnalytics().catch((err) => {
|
||||||
@@ -157,6 +158,14 @@ class TelemetryClient {
|
|||||||
})
|
})
|
||||||
.from(sites);
|
.from(sites);
|
||||||
|
|
||||||
|
const [numAlertRules] = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(alertRules);
|
||||||
|
|
||||||
|
const [blueprintsCount] = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(blueprints);
|
||||||
|
|
||||||
const supporterKey = config.getSupporterData();
|
const supporterKey = config.getSupporterData();
|
||||||
|
|
||||||
const allPrivateResources = await db.select().from(siteResources);
|
const allPrivateResources = await db.select().from(siteResources);
|
||||||
@@ -165,11 +174,14 @@ class TelemetryClient {
|
|||||||
let numPrivResourceAliases = 0;
|
let numPrivResourceAliases = 0;
|
||||||
let numPrivResourceHosts = 0;
|
let numPrivResourceHosts = 0;
|
||||||
let numPrivResourceCidr = 0;
|
let numPrivResourceCidr = 0;
|
||||||
|
let numPrivResourceHttp = 0;
|
||||||
for (const res of allPrivateResources) {
|
for (const res of allPrivateResources) {
|
||||||
if (res.mode === "host") {
|
if (res.mode === "host") {
|
||||||
numPrivResourceHosts += 1;
|
numPrivResourceHosts += 1;
|
||||||
} else if (res.mode === "cidr") {
|
} else if (res.mode === "cidr") {
|
||||||
numPrivResourceCidr += 1;
|
numPrivResourceCidr += 1;
|
||||||
|
} else if (res.mode === "http") {
|
||||||
|
numPrivResourceHttp += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res.alias) {
|
if (res.alias) {
|
||||||
@@ -187,6 +199,9 @@ class TelemetryClient {
|
|||||||
numPrivateResources: numPrivResources,
|
numPrivateResources: numPrivResources,
|
||||||
numPrivateResourceAliases: numPrivResourceAliases,
|
numPrivateResourceAliases: numPrivResourceAliases,
|
||||||
numPrivateResourceHosts: numPrivResourceHosts,
|
numPrivateResourceHosts: numPrivResourceHosts,
|
||||||
|
numPrivateResourceCidr: numPrivResourceCidr,
|
||||||
|
numPrivateResourceHttp: numPrivResourceHttp,
|
||||||
|
numAlertRules: numAlertRules.count,
|
||||||
numUserDevices: userDevicesCount.count,
|
numUserDevices: userDevicesCount.count,
|
||||||
numMachineClients: machineClients.count,
|
numMachineClients: machineClients.count,
|
||||||
numIdentityProviders: idpCount.count,
|
numIdentityProviders: idpCount.count,
|
||||||
@@ -197,6 +212,7 @@ class TelemetryClient {
|
|||||||
appVersion: APP_VERSION,
|
appVersion: APP_VERSION,
|
||||||
numApiKeys: numApiKeys.count,
|
numApiKeys: numApiKeys.count,
|
||||||
numCustomRoles: customRoles.count,
|
numCustomRoles: customRoles.count,
|
||||||
|
numBlueprints: blueprintsCount.count,
|
||||||
supporterStatus: {
|
supporterStatus: {
|
||||||
valid: supporterKey?.valid || false,
|
valid: supporterKey?.valid || false,
|
||||||
tier: supporterKey?.tier || "None",
|
tier: supporterKey?.tier || "None",
|
||||||
@@ -285,10 +301,12 @@ class TelemetryClient {
|
|||||||
num_private_resource_aliases:
|
num_private_resource_aliases:
|
||||||
stats.numPrivateResourceAliases,
|
stats.numPrivateResourceAliases,
|
||||||
num_private_resource_hosts: stats.numPrivateResourceHosts,
|
num_private_resource_hosts: stats.numPrivateResourceHosts,
|
||||||
|
num_private_resource_cidr: stats.numPrivateResourceCidr,
|
||||||
num_user_devices: stats.numUserDevices,
|
num_user_devices: stats.numUserDevices,
|
||||||
num_machine_clients: stats.numMachineClients,
|
num_machine_clients: stats.numMachineClients,
|
||||||
num_identity_providers: stats.numIdentityProviders,
|
num_identity_providers: stats.numIdentityProviders,
|
||||||
num_sites_online: stats.numSitesOnline,
|
num_sites_online: stats.numSitesOnline,
|
||||||
|
num_blueprint_runs: stats.numBlueprints,
|
||||||
num_resources_sso_enabled: stats.resources.filter(
|
num_resources_sso_enabled: stats.resources.filter(
|
||||||
(r) => r.sso
|
(r) => r.sso
|
||||||
).length,
|
).length,
|
||||||
|
|||||||
Reference in New Issue
Block a user