Compare commits
2 Commits
v2.0.0-202
...
98829640f4
| Author | SHA1 | Date | |
|---|---|---|---|
|
98829640f4
|
|||
|
9ccb6fd3cd
|
@@ -9,7 +9,7 @@ git_hash=6 # Default: 8
|
||||
|
||||
[files]
|
||||
include=[
|
||||
"ifxmetrics.config.json",
|
||||
"ifxmetrics.config.example.json",
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
"mod.cpp",
|
||||
|
||||
52
README.md
52
README.md
@@ -105,6 +105,58 @@ Grafana is a dashboarding tool. It is used to display the data from InfluxDB. A
|
||||
|
||||
---
|
||||
|
||||
## CORE METRICS
|
||||
|
||||
These metrics will be gathered by default every `refreshRateMs` milliseconds.
|
||||
|
||||
| Bucket | Measurement | Tags | Field |
|
||||
| --- | --- | --- | --- |
|
||||
| server_performance | fps | profile=`profileName` world=`worldName` server=`serverName` | fps_avg=`diag_fps` |
|
||||
| server_performance | fps | ... | fps_min=`diag_fpsMin` |
|
||||
| server_performance | running_scripts | ... | spawn=`diag_activeScripts#0` |
|
||||
| server_performance | running_scripts | ... | execVM=`diag_activeScripts#1` |
|
||||
| server_performance | running_scripts | ... | exec=`diag_activeScripts#2` |
|
||||
| server_performance | running_scripts | ... | execFSM=`diag_activeScripts#3` |
|
||||
| server_performance | running_scripts | ... | pfh=`count CBA_common_perFrameHandlerArray \|\| 0` |
|
||||
| server_performance | entities_remote | ... + side=`WEST`,`EAST`, etc | units_alive=`{side group _x isEqualTo _thisSide && not (local _x)} count _allUnits` |
|
||||
| server_performance | entities_remote | ... + side=`WEST`,`EAST`, etc | units_dead=`{side group _x isEqualTo _thisSide && not (local _x)} count _allDeadMen` |
|
||||
| server_performance | entities_remote | ... + side=`WEST`,`EAST`, etc | groups_total=`{side _x isEqualTo _thisSide && not (local _x)} count _allGroups` |
|
||||
| server_performance | entities_remote | ... + side=`WEST`,`EAST`, etc | vehicles_total=`{side _x isEqualTo _thisSide && not (local _x) && !(_x isKindOf "WeaponHolderSimulated")} count _vehicles` |
|
||||
| server_performance | entities_remote | ... + side=`WEST`,`EAST`, etc | vehicles_weaponholder=`{side _x isEqualTo _thisSide && not (local _x) && (_x isKindOf "WeaponHolderSimulated")} count _vehicles` |
|
||||
| server_performance | entities_local | ... + side=`WEST`,`EAST`, etc | units_alive=`{side group _x isEqualTo _thisSide && (local _x)} count _allUnits` |
|
||||
| server_performance | entities_local | ... + side=`WEST`,`EAST`, etc | units_dead=`{side group _x isEqualTo _thisSide && (local _x)} count _allDeadMen` |
|
||||
| server_performance | entities_local | ... + side=`WEST`,`EAST`, etc | groups_total=`{side _x isEqualTo _thisSide && (local _x)} count _allGroups` |
|
||||
| server_performance | entities_local | ... + side=`WEST`,`EAST`, etc | vehicles_total=`{side _x isEqualTo _thisSide && (local _x) && !(_x isKindOf "WeaponHolderSimulated")} count _vehicles` |
|
||||
| server_performance | entities_local | ... + side=`WEST`,`EAST`, etc | vehicles_weaponholder=`{side _x isEqualTo _thisSide && (local _x) && (_x isKindOf "WeaponHolderSimulated")} count _vehicles` |
|
||||
| server_performance | entities_global | ... + side=`WEST`,`EAST`, etc | units_alive=`{side group _x isEqualTo _thisSide} count _allUnits` |
|
||||
| server_performance | entities_global | ... + side=`WEST`,`EAST`, etc | units_dead=`{side group _x isEqualTo _thisSide} count _allDeadMen` |
|
||||
| server_performance | entities_global | ... + side=`WEST`,`EAST`, etc | groups_total=`{side _x isEqualTo _thisSide} count _allGroups` |
|
||||
| server_performance | entities_global | ... + side=`WEST`,`EAST`, etc | vehicles_total=`{side _x isEqualTo _thisSide && !(_x isKindOf "WeaponHolderSimulated")} count _vehicles` |
|
||||
| server_performance | entities_global | ... + side=`WEST`,`EAST`, etc | vehicles_weaponholder=`{side _x isEqualTo _thisSide && (_x isKindOf "WeaponHolderSimulated")} count _vehicles` |
|
||||
| server_performance | entities_global | ... + side=`WEST`,`EAST`, etc | players_alive=`{side group _x isEqualTo _thisSide && alive _x} count (call BIS_fnc_listPlayers)` |
|
||||
| server_performance | entities_global | ... + side=`WEST`,`EAST`, etc | players_dead=`{side group _x isEqualTo _thisSide && !alive _x} count (call BIS_fnc_listPlayers)` |
|
||||
| server_performance | player_count | ... | players_connected=`count (_allUserInfos select {_x#7 isEqualTo false})` |
|
||||
| server_performance | player_count | ... | headless_clients_connected=`count (_allUserInfos select {_x#7 isEqualTo true})` |
|
||||
| player_performance | network | ... + playerUID=`getUserInfo#2`, playerName=`getUserInfo#3` | avgPing=`getUserInfo#9#0` |
|
||||
| player_performance | network | ... + playerUID=`getUserInfo#2`, playerName=`getUserInfo#3` | avgBandwidth=`getUserInfo#9#1` |
|
||||
| player_performance | network | ... + playerUID=`getUserInfo#2`, playerName=`getUserInfo#3` | desync=`getUserInfo#9#2` |
|
||||
| mission_data | server_time | ... | diag_tickTime=`diag_tickTime` |
|
||||
| mission_data | server_time | ... | serverTime=`time` |
|
||||
| mission_data | server_time | ... | timeMultiplier=`timeMultiplier` |
|
||||
| mission_data | server_time | ... | accTime=`accTime` |
|
||||
| mission_data | weather | ... | fog=`fog` |
|
||||
| mission_data | weather | ... | overcast=`overcast` |
|
||||
| mission_data | weather | ... | rain=`rain` |
|
||||
| mission_data | weather | ... | humidity=`humidity` |
|
||||
| mission_data | weather | ... | waves=`waves` |
|
||||
| mission_data | weather | ... | windDir=`windDir` |
|
||||
| mission_data | weather | ... | windStr=`windStr` |
|
||||
| mission_data | weather | ... | gusts=`gusts` |
|
||||
| mission_data | weather | ... | lightnings=`lightnings` |
|
||||
| mission_data | weather | ... | moonIntensity=`moonIntensity` |
|
||||
| mission_data | weather | ... | moonPhase=`moonPhase` |
|
||||
| mission_data | weather | ... | sunOrMoon=`sunOrMoon` |
|
||||
|
||||
## BUILDING
|
||||
|
||||
Set an environment variable in your terminal with the desired extension build version. It defaults to "DEVELOPMENT".
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_allUserInfos", [], [[]]];
|
||||
|
||||
private _hashesOut = [];
|
||||
|
||||
private _allUnits = allUnits;
|
||||
@@ -10,18 +12,20 @@ private _allPlayers = call BIS_fnc_listPlayers;
|
||||
{
|
||||
private _thisSide = _x;
|
||||
private _thisSideStr = _thisSide call BIS_fnc_sideNameUnlocalized;
|
||||
private _tags = +GVARMAIN(standardTags);
|
||||
_tags pushBack ["side", _thisSideStr];
|
||||
// Number of remote units
|
||||
_hashesOut pushBack ([
|
||||
["bucket", "server_performance"],
|
||||
["measurement", "entities_remote"],
|
||||
["tags", GVARMAIN(standardTags)],
|
||||
["tags", _tags],
|
||||
["fields", [
|
||||
["units_alive", {
|
||||
side _x isEqualTo _thisSide &&
|
||||
side group _x isEqualTo _thisSide &&
|
||||
not (local _x)
|
||||
} count _allUnits],
|
||||
["units_dead", {
|
||||
side _x isEqualTo _thisSide &&
|
||||
side group _x isEqualTo _thisSide &&
|
||||
not (local _x)
|
||||
} count _allDeadMen],
|
||||
["groups_total", {
|
||||
@@ -45,14 +49,14 @@ private _allPlayers = call BIS_fnc_listPlayers;
|
||||
_hashesOut pushBack ([
|
||||
["bucket", "server_performance"],
|
||||
["measurement", "entities_local"],
|
||||
["tags", GVARMAIN(standardTags)],
|
||||
["tags", _tags],
|
||||
["fields", [
|
||||
["units_alive", {
|
||||
side _x isEqualTo _thisSide &&
|
||||
side group _x isEqualTo _thisSide &&
|
||||
local _x
|
||||
} count _allUnits],
|
||||
["units_dead", {
|
||||
side _x isEqualTo _thisSide &&
|
||||
side group _x isEqualTo _thisSide &&
|
||||
local _x
|
||||
} count _allDeadMen],
|
||||
["groups_total", {
|
||||
@@ -78,13 +82,13 @@ private _allPlayers = call BIS_fnc_listPlayers;
|
||||
_hashesOut pushBack ([
|
||||
["bucket", "server_performance"],
|
||||
["measurement", "entities_global"],
|
||||
["tags", GVARMAIN(standardTags)],
|
||||
["tags", _tags],
|
||||
["fields", [
|
||||
["units_alive", {
|
||||
side _x isEqualTo _thisSide
|
||||
side group _x isEqualTo _thisSide
|
||||
} count _allUnits],
|
||||
["units_dead", {
|
||||
side _x isEqualTo _thisSide
|
||||
side group _x isEqualTo _thisSide
|
||||
} count _allDeadMen],
|
||||
["groups_total", {
|
||||
side _x isEqualTo _thisSide
|
||||
@@ -98,11 +102,11 @@ private _allPlayers = call BIS_fnc_listPlayers;
|
||||
(_x isKindOf "WeaponHolderSimulated")
|
||||
} count _vehicles],
|
||||
["players_alive", {
|
||||
side _x isEqualTo _thisSide &&
|
||||
side group _x isEqualTo _thisSide &&
|
||||
alive _x
|
||||
} count _allPlayers],
|
||||
["players_dead", {
|
||||
side _x isEqualTo _thisSide &&
|
||||
side group _x isEqualTo _thisSide &&
|
||||
!alive _x
|
||||
} count _allPlayers]
|
||||
]]
|
||||
@@ -116,12 +120,8 @@ if (isServer) then {
|
||||
["measurement", "player_count"],
|
||||
["tags", GVARMAIN(standardTags)],
|
||||
["fields", [
|
||||
["players_connected", {
|
||||
private _info = getUserInfo (getPlayerId _x);
|
||||
if (!isNil "_info" && {count _info >= 6}) then {
|
||||
_info select 7
|
||||
} else {false}
|
||||
} count _allPlayers]
|
||||
["players_connected", count (_allUserInfos select {_x#7 isEqualTo false})],
|
||||
["headless_clients_connected", count (_allUserInfos select {_x#7 isEqualTo true})]
|
||||
]]
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_allUserInfos", [], [[]]];
|
||||
|
||||
private _hashesOut = [];
|
||||
{
|
||||
_x params ["_playerID", "_ownerId", "_playerUID", "_profileName", "_displayName", "_steamName", "_clientState", "_isHC", "_adminState", "_networkInfo", "_unit"];
|
||||
@@ -23,6 +25,6 @@ private _hashesOut = [];
|
||||
["desync", _desync]
|
||||
]]
|
||||
]);
|
||||
} forEach (allUsers apply {getUserInfo _x});
|
||||
} forEach _allUserInfos;
|
||||
|
||||
_hashesOut;
|
||||
@@ -24,19 +24,22 @@ GVARMAIN(captureLoop) = [
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
// getUserInfo for all users
|
||||
_allUserInfos = allUsers apply {getUserInfo _x} select {count _x > 0};
|
||||
// entity_count returns an array of hashMap
|
||||
{
|
||||
GVARMAIN(extensionName) callExtension [
|
||||
":INFLUX:WRITE:",
|
||||
[_x]
|
||||
];
|
||||
} forEach (call EFUNC(capture,entity_count));
|
||||
} forEach ([_allUserInfos] call EFUNC(capture,entity_count));
|
||||
{
|
||||
GVARMAIN(extensionName) callExtension [
|
||||
":INFLUX:WRITE:",
|
||||
[_x]
|
||||
];
|
||||
} forEach (call EFUNC(capture,player_performance));
|
||||
} forEach ([_allUserInfos] call EFUNC(capture,player_performance));
|
||||
|
||||
["DEBUG", format[
|
||||
"Processed primary data loop in %1 ms",
|
||||
|
||||
Reference in New Issue
Block a user