echoIRCd

Metrics & RPC

echoIRCd exposes two machine interfaces for monitoring and control. Both bind privately by default — keep them on loopback or behind a trusted proxy.

Prometheus metrics#

Enable an OpenMetrics/Prometheus scrape endpoint with a single config key:

metrics_bind "127.0.0.1:9109";

It answers any HTTP GET with the text-exposition format — no authentication, so bind it somewhere private. Counters are bumped inline (lock-free atomics); the gauges are republished by the core each tick.

MetricTypeMeaning
echoircd_commands_totalcounterCommands dispatched
echoircd_messages_totalcounterPRIVMSG/NOTICE handled
echoircd_connects_totalcounterClient registrations completed
echoircd_usersgaugeUsers online
echoircd_channelsgaugeChannels in existence
echoircd_serversgaugeServers known on the network
echoircd_linksgaugeDirect server links

JSON-RPC 2.0#

A JSON-RPC 2.0 control interface lets admin tools introspect and drive the daemon. It is off unless both rpc = yes and an rpc_token are set; it binds rpc_bind (default 127.0.0.1:8080) and every request must carry the token as HTTP Basic or Bearer auth (checked in constant time).

rpc = yes;
rpc_token "a-long-random-secret";
rpc_bind "127.0.0.1:8080";

Method families:

FamilyMethods
corerpc.methods, rpc.info, server.info, stats.get
useruser.list / get, user.kill / set_mode / set_vhost / set_nick / set_oper
channelchannel.list / get, channel.kick / set_topic / set_mode
serverserver.list / rehash / connect / disconnect
banxline.list / add / del (K/G/Z/E/SHUN/Q/CBAN)
messagemessage.send_notice (channel / user / all)
spamfilterspamfilter.list / add / del
statsmodule.list, oper.list, security_group.list
whowaswhowas.get
loglog.tail, log.events