mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-05 23:45:02 -04:00
Rewrite BucketCollector
This was a bit unweildy for what I wanted: in particular, I wanted to assign each measurement straight into a bucket, rather than storing an intermediate Counter which didn't do any bucketing at all. I've replaced it with something that is hopefully a bit easier to use. (I'm not entirely sure what the difference between a HistogramMetricFamily and a GaugeHistogramMetricFamily is, but given our counters can go down as well as up the latter *sounds* more accurate?)
This commit is contained in:
parent
1c8ca2c543
commit
6d2d42f8fb
3 changed files with 88 additions and 70 deletions
|
@ -12,10 +12,8 @@
|
|||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
import typing
|
||||
from collections import Counter
|
||||
|
||||
from synapse.metrics import BucketCollector
|
||||
from synapse.metrics import GaugeBucketCollector
|
||||
from synapse.metrics.background_process_metrics import run_as_background_process
|
||||
from synapse.storage._base import SQLBaseStore
|
||||
from synapse.storage.database import DatabasePool
|
||||
|
@ -23,6 +21,14 @@ from synapse.storage.databases.main.event_push_actions import (
|
|||
EventPushActionsWorkerStore,
|
||||
)
|
||||
|
||||
# Collect metrics on the number of forward extremities that exist.
|
||||
_extremities_collecter = GaugeBucketCollector(
|
||||
"synapse_forward_extremities",
|
||||
"Number of rooms on the server with the given number of forward extremities"
|
||||
" or fewer",
|
||||
buckets=[1, 2, 3, 5, 7, 10, 15, 20, 50, 100, 200, 500],
|
||||
)
|
||||
|
||||
|
||||
class ServerMetricsStore(EventPushActionsWorkerStore, SQLBaseStore):
|
||||
"""Functions to pull various metrics from the DB, for e.g. phone home
|
||||
|
@ -32,18 +38,6 @@ class ServerMetricsStore(EventPushActionsWorkerStore, SQLBaseStore):
|
|||
def __init__(self, database: DatabasePool, db_conn, hs):
|
||||
super().__init__(database, db_conn, hs)
|
||||
|
||||
# Collect metrics on the number of forward extremities that exist.
|
||||
# Counter of number of extremities to count
|
||||
self._current_forward_extremities_amount = (
|
||||
Counter()
|
||||
) # type: typing.Counter[int]
|
||||
|
||||
BucketCollector(
|
||||
"synapse_forward_extremities",
|
||||
lambda: self._current_forward_extremities_amount,
|
||||
buckets=[1, 2, 3, 5, 7, 10, 15, 20, 50, 100, 200, 500, "+Inf"],
|
||||
)
|
||||
|
||||
# Read the extrems every 60 minutes
|
||||
def read_forward_extremities():
|
||||
# run as a background process to make sure that the database transactions
|
||||
|
@ -65,7 +59,7 @@ class ServerMetricsStore(EventPushActionsWorkerStore, SQLBaseStore):
|
|||
return txn.fetchall()
|
||||
|
||||
res = await self.db_pool.runInteraction("read_forward_extremities", fetch)
|
||||
self._current_forward_extremities_amount = Counter([x[0] for x in res])
|
||||
_extremities_collecter.update_data(x[0] for x in res)
|
||||
|
||||
async def count_daily_messages(self):
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue