forked from exceptionless/Exceptionless.JavaScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNodeEnvironmentInfoCollector.ts
More file actions
83 lines (72 loc) · 1.88 KB
/
NodeEnvironmentInfoCollector.ts
File metadata and controls
83 lines (72 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { argv, memoryUsage, pid, title, version } from "process";
import {
arch,
cpus,
endianness,
freemem,
hostname,
loadavg,
NetworkInterfaceInfo,
networkInterfaces,
platform,
release,
tmpdir,
totalmem,
type,
uptime,
} from "os";
import {
EnvironmentInfo,
EventPluginContext,
IEnvironmentInfoCollector,
} from "@exceptionless/core";
export class NodeEnvironmentInfoCollector implements IEnvironmentInfoCollector {
public getEnvironmentInfo(context: EventPluginContext): EnvironmentInfo {
function getIpAddresses(): string {
const ips: string[] = [];
for (const ni of Object.values(networkInterfaces())) {
for (const network of ni || []) {
if (!network.internal && "IPv4" === network.family) {
ips.push(network.address);
}
}
}
return ips.join(", ");
}
if (!cpus) {
return null;
}
const environmentInfo: EnvironmentInfo = {
processor_count: cpus().length,
total_physical_memory: totalmem(),
available_physical_memory: freemem(),
command_line: argv.join(" "),
process_name: (title || "").replace(/[\uE000-\uF8FF]/g, ""),
process_id: pid + "",
process_memory_size: memoryUsage().heapTotal,
// thread_id: "",
architecture: arch(),
o_s_name: type(),
o_s_version: release(),
// install_id: "",
runtime_version: version,
data: {
loadavg: loadavg(),
platform: platform(),
tmpdir: tmpdir(),
uptime: uptime(),
},
};
const config = context.client.config;
if (config.includeMachineName) {
environmentInfo.machine_name = hostname();
}
if (config.includeIpAddress) {
environmentInfo.ip_address = getIpAddresses();
}
if (endianness) {
environmentInfo.data.endianness = endianness();
}
return environmentInfo;
}
}