Rearrange metrics

This commit is contained in:
Erik Johnston 2017-04-05 14:15:09 +01:00
parent 1ca0e78ca1
commit 3f213d908d
2 changed files with 31 additions and 19 deletions

View File

@ -83,9 +83,6 @@ class CounterMetric(BaseMetric):
def render(self): def render(self):
return map_concat(self.render_item, sorted(self.counts.keys())) return map_concat(self.render_item, sorted(self.counts.keys()))
def unregister_counter(self, *values):
self.counts.pop(values, None)
class CallbackMetric(BaseMetric): class CallbackMetric(BaseMetric):
"""A metric that returns the numeric value returned by a callback whenever """A metric that returns the numeric value returned by a callback whenever

View File

@ -61,6 +61,7 @@ from commands import (
from streams import STREAMS_MAP from streams import STREAMS_MAP
from synapse.util.stringutils import random_string from synapse.util.stringutils import random_string
from synapse.metrics.metric import CounterMetric
import logging import logging
import synapse.metrics import synapse.metrics
@ -70,12 +71,6 @@ import fcntl
metrics = synapse.metrics.get_metrics_for(__name__) metrics = synapse.metrics.get_metrics_for(__name__)
inbound_commands_counter = metrics.register_counter(
"inbound_commands", labels=["command", "name", "conn_id"],
)
outbound_commands_counter = metrics.register_counter(
"outbound_commands", labels=["command", "name", "conn_id"],
)
connection_close_counter = metrics.register_counter( connection_close_counter = metrics.register_counter(
"close_reason", labels=["reason_type"], "close_reason", labels=["reason_type"],
) )
@ -139,6 +134,13 @@ class BaseReplicationStreamProtocol(LineOnlyReceiver):
# The LoopingCall for sending pings. # The LoopingCall for sending pings.
self._send_ping_loop = None self._send_ping_loop = None
self.inbound_commands_counter = CounterMetric(
"inbound_commands", labels=["command"],
)
self.outbound_commands_counter = CounterMetric(
"outbound_commands", labels=["command"],
)
def connectionMade(self): def connectionMade(self):
logger.info("[%s] Connection established", self.id()) logger.info("[%s] Connection established", self.id())
@ -197,7 +199,7 @@ class BaseReplicationStreamProtocol(LineOnlyReceiver):
self.last_received_command = self.clock.time_msec() self.last_received_command = self.clock.time_msec()
inbound_commands_counter.inc(cmd_name, self.name, self.conn_id) self.inbound_commands_counter.inc(cmd_name)
cmd_cls = COMMAND_MAP[cmd_name] cmd_cls = COMMAND_MAP[cmd_name]
try: try:
@ -246,7 +248,7 @@ class BaseReplicationStreamProtocol(LineOnlyReceiver):
self._queue_command(cmd) self._queue_command(cmd)
return return
outbound_commands_counter.inc(cmd.NAME, self.name, self.conn_id) self.outbound_commands_counter.inc(cmd.NAME)
string = "%s %s" % (cmd.NAME, cmd.to_line(),) string = "%s %s" % (cmd.NAME, cmd.to_line(),)
if "\n" in string: if "\n" in string:
@ -334,14 +336,6 @@ class BaseReplicationStreamProtocol(LineOnlyReceiver):
self.state = ConnectionStates.CLOSED self.state = ConnectionStates.CLOSED
self.pending_commands = [] self.pending_commands = []
for cmd in COMMAND_MAP:
outbound_commands_counter.unregister_counter(
cmd, self.name, self.conn_id
)
inbound_commands_counter.unregister_counter(
cmd, self.name, self.conn_id
)
if self.transport: if self.transport:
self.transport.unregisterProducer() self.transport.unregisterProducer()
@ -620,3 +614,24 @@ metrics.register_callback(
}, },
labels=["name", "conn_id"], labels=["name", "conn_id"],
) )
metrics.register_callback(
"inbound_commands",
lambda: {
(k[0], p.name, p.conn_id): count
for p in connected_connections
for k, count in p.inbound_commands_counter.counts.iteritems()
},
labels=["command", "name", "conn_id"],
)
metrics.register_callback(
"outbound_commands",
lambda: {
(k[0], p.name, p.conn_id): count
for p in connected_connections
for k, count in p.outbound_commands_counter.counts.iteritems()
},
labels=["command", "name", "conn_id"],
)