Monitorex.Cluster
(monitorex v0.3.0)
Copy Markdown
Cluster support for Monitorex — provides multi-node data aggregation across distributed Erlang nodes.
Use fetch_from_all_nodes/2 to query all nodes in the cluster, then
pass the results to the appropriate merge_* function to produce
consolidated aggregates.
Summary
Functions
Returns all reachable nodes including Node.self().
Calls the given Storage function on all connected nodes via RPC.
Merges consumer aggregates from multiple nodes.
Merges endpoint aggregates from multiple nodes.
Merges host aggregates collected from multiple nodes.
Merges recent event lists from multiple nodes.
Merges route aggregates from multiple nodes.
Functions
@spec connected_nodes() :: [node()]
Returns all reachable nodes including Node.self().
When cluster_mode config is :single, returns only [Node.self()].
Otherwise returns [Node.self() | Node.list()].
Calls the given Storage function on all connected nodes via RPC.
Returns a list of {node, result} tuples for successful calls.
Nodes that return {:badrpc, _} are silently omitted.
Parameters
func_name— atom name of a function onMonitorex.Storage(e.g.:list_hosts,:list_routes,:list_recent_outbound)args— list of arguments to pass to the function
Configuration
:cluster_max_concurrency— max concurrent RPC calls (default3):cluster_rpc_timeout— per-call timeout in ms (default5_000)
Merges consumer aggregates from multiple nodes.
Same merge strategy as merge_hosts/1 but for consumer data.
Merges endpoint aggregates from multiple nodes.
Same merge strategy as merge_hosts/1 but for endpoint data.
Merges host aggregates collected from multiple nodes.
Input
A list of {node, [host_map]} tuples — as returned by
fetch_from_all_nodes(:list_hosts, []).
Merge strategy
requests,errors,total_durationare summedavg_latencyis recomputed astotal_duration / requestsp50,p95,p99are weighted by each node's request count:nodeis set to a list of all source nodes that contributed
@spec merge_recent([{node(), [map()]}], pos_integer()) :: [map()]
Merges recent event lists from multiple nodes.
Input
A list of {node, [event_struct]} tuples.
Merge strategy
- All events are flattened into a single list
- Each event is tagged with its source
:node - Sorted by
timestampdescending - Returns the top
top_nevents (default50)
Merges route aggregates from multiple nodes.
Same merge strategy as merge_hosts/1 but for route data.