Dzahn has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/376146 )
Change subject: webperf: Decom webperf::ve service ...................................................................... webperf: Decom webperf::ve service Bug: T175083 Change-Id: I76bf0e43d700120551f79013a2a6dd7394ab63be --- M modules/role/manifests/webperf.pp D modules/webperf/files/ve.py D modules/webperf/files/ve_expected.txt D modules/webperf/files/ve_fixture.yaml D modules/webperf/manifests/ve.pp D modules/webperf/templates/ve.systemd.erb 6 files changed, 0 insertions(+), 216 deletions(-) Approvals: jenkins-bot: Verified Dzahn: Looks good to me, approved diff --git a/modules/role/manifests/webperf.pp b/modules/role/manifests/webperf.pp index ab0d806..80b8388 100644 --- a/modules/role/manifests/webperf.pp +++ b/modules/role/manifests/webperf.pp @@ -31,12 +31,4 @@ statsd_host => $statsd_host, statsd_port => $statsd_port, } - - # Report VisualEditor performance measurements to Graphite. - # See <https://meta.wikimedia.org/wiki/Schema:Edit> - class { '::webperf::ve': - kafka_brokers => $kafka_brokers, - statsd_host => $statsd_host, - statsd_port => $statsd_port, - } } diff --git a/modules/webperf/files/ve.py b/modules/webperf/files/ve.py deleted file mode 100644 index c8318e5..0000000 --- a/modules/webperf/files/ve.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -from __future__ import unicode_literals -import sys -reload(sys) -sys.setdefaultencoding("utf-8") - -import argparse -import json -import socket -import unittest -import yaml - -from kafka import KafkaConsumer - - -def handle_edit(meta): - event = meta['event'] - if event['editor'] == 'visualeditor': - action = event['action'] - if action == 'saveSuccess': - metric = 'save' - elif action == 'ready': - metric = 'load' - else: - return - timing = int(event['action.%s.timing' % action]) - # Log values between 0.1s an 100s (1.6min) only - if timing < 100 or timing > 100000: - return - return 'VisualEditor.%s:%s|ms' % (metric, timing) - - -if __name__ == '__main__': - ap = argparse.ArgumentParser(description='Send VisualEditor PerfData to StatsD') - ap.add_argument('--brokers', required=True, - help='Comma-separated list of kafka brokers') - ap.add_argument('--consumer-group', required=True, - help='Consumer group to register with Kafka') - ap.add_argument('--statsd-host', default='localhost', - type=socket.gethostbyname) - ap.add_argument('--statsd-port', default=8125, type=int) - args = ap.parse_args() - - addr = args.statsd_host, args.statsd_port - sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - - kafka_bootstrap_servers = tuple(args.brokers.split(',')) - kafka_topic = 'eventlogging_Edit' - kafka_consumer_timeout_seconds = 600 - consumer = KafkaConsumer( - kafka_topic, - bootstrap_servers=kafka_bootstrap_servers, - group_id=args.consumer_group, - auto_offset_reset='latest', - enable_auto_commit=False, - consumer_timeout_ms=kafka_consumer_timeout_seconds * 1000 - ) - - try: - for message in consumer: - meta = json.loads(message.value) - try: - stat = handle_edit(meta) - if stat is not None: - sock.sendto(stat.encode('utf-8'), addr) - except (ValueError, KeyError): - continue - # If we reach this line, consumer_timeout_ms elapsed without events - raise RuntimeError('No messages received in %d seconds.' % kafka_consumer_timeout_seconds) - finally: - consumer.close() - - -# ##### Tests ###### -# To run: -# python -m unittest ve -# -class TestVePerfData(unittest.TestCase): - def test_handler(self): - with open('ve_fixture.yaml') as fixture_file: - fixture = yaml.safe_load(fixture_file) - actual = [] - for meta in fixture: - stat = handle_edit(meta) - if stat is not None: - actual.append(stat) - with open('ve_expected.txt') as expected_file: - self.assertItemsEqual( - actual, - expected_file.read().splitlines() - ) diff --git a/modules/webperf/files/ve_expected.txt b/modules/webperf/files/ve_expected.txt deleted file mode 100644 index f5ed936..0000000 --- a/modules/webperf/files/ve_expected.txt +++ /dev/null @@ -1,11 +0,0 @@ -VisualEditor.load:1955|ms -VisualEditor.load:33097|ms -VisualEditor.load:3077|ms -VisualEditor.load:2963|ms -VisualEditor.load:1769|ms -VisualEditor.save:14379|ms -VisualEditor.load:1067|ms -VisualEditor.load:9615|ms -VisualEditor.load:2391|ms -VisualEditor.load:16085|ms -VisualEditor.load:2711|ms diff --git a/modules/webperf/files/ve_fixture.yaml b/modules/webperf/files/ve_fixture.yaml deleted file mode 100644 index a10f256..0000000 --- a/modules/webperf/files/ve_fixture.yaml +++ /dev/null @@ -1,44 +0,0 @@ -# Random sample from August 2017 -# Anonimised by removing all fields, except: -# - event.action -# - event.action.* -# - event.editor -# - event.version -# - schema - -- {"event": {"action": "saveSuccess", "editor": "wikitext", "version": 1}, "schema": "Edit"} -- {"event": {"action": "saveAttempt", "editor": "wikitext", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 309305, "action.abort.type": "nochange", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 59002, "action.abort.type": "nochange", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 1955, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "saveIntent", "editor": "wikitext", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 2903, "action.abort.type": "nochange", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 33097, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 206, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 3077, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 817, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 2963, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 5502, "action.abort.type": "switchwithout", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 214, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 1769, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 3766, "action.abort.type": "switchwithout", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "saveIntent", "action.saveIntent.timing": 32831, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "saveAttempt", "action.saveAttempt.timing": 1987, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 3834, "action.abort.type": "nochange", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 435, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "saveSuccess", "action.saveSuccess.timing": 14379, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 128254, "action.abort.type": "nochange", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 147, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "saveFailure", "action.saveFailure.type": "responseUnknown", "editor": "wikitext", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 311, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 619, "action.abort.type": "nochange", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 1067, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 656, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 9615, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 237, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 2391, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "click", "action.init.timing": 142771, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "abort", "action.abort.mechanism": "navigate", "action.abort.timing": 6249, "action.abort.type": "nochange", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 16085, "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "init", "action.init.mechanism": "url", "action.init.timing": 345, "action.init.type": "page", "editor": "visualeditor", "version": 1}, "schema": "Edit"} -- {"event": {"action": "ready", "action.ready.timing": 2711, "editor": "visualeditor", "version": 1}, "schema": "Edit"} diff --git a/modules/webperf/manifests/ve.pp b/modules/webperf/manifests/ve.pp deleted file mode 100644 index d5f5c7c..0000000 --- a/modules/webperf/manifests/ve.pp +++ /dev/null @@ -1,45 +0,0 @@ -# == Class: webperf::ve -# -# Captures VisualEditor timing data and sends it to StatsD. -# See <https://meta.wikimedia.org/wiki/Schema:Edit>. -# -# === Parameters -# -# [*kafka_brokers*] -# String of comma separated Kafka bootstrap brokers. -# -# [*statsd_host*] -# Write stats to this StatsD instance. Default: '127.0.0.1'. -# -# [*statsd_port*] -# Write stats to this StatsD instance. Default: 8125. -# -class webperf::ve( - $kafka_brokers, - $statsd_host = '127.0.0.1', - $statsd_port = 8125, -) { - include ::webperf - - require_package('python-kafka') - require_package('python-yaml') - - file { '/srv/webperf/ve.py': - source => 'puppet:///modules/webperf/ve.py', - owner => 'www-data', - group => 'www-data', - mode => '0755', - notify => Service['ve'], - } - - file { '/lib/systemd/system/ve.service': - # uses $statsd_host, $statsd_port, $kafka_brokers - content => template('webperf/ve.systemd.erb'), - notify => Service['ve'], - } - - service { 've': - ensure => running, - provider => systemd, - } -} diff --git a/modules/webperf/templates/ve.systemd.erb b/modules/webperf/templates/ve.systemd.erb deleted file mode 100644 index 980b477..0000000 --- a/modules/webperf/templates/ve.systemd.erb +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=ve -After=network-online.target - -[Service] -WorkingDirectory=/srv/webperf -ExecStart=/usr/bin/python /srv/webperf/ve.py \ - --brokers <%= @kafka_brokers %> \ - --consumer-group webperf_ve \ - --statsd-host <%= @statsd_host %> \ - --statsd-port <%= @statsd_port %> -User=nobody -Restart=always - -[Install] -WantedBy=multi-user.target -- To view, visit https://gerrit.wikimedia.org/r/376146 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I76bf0e43d700120551f79013a2a6dd7394ab63be Gerrit-PatchSet: 2 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Krinkle <krinklem...@gmail.com> Gerrit-Reviewer: Dzahn <dz...@wikimedia.org> Gerrit-Reviewer: Gilles <gdu...@wikimedia.org> Gerrit-Reviewer: Giuseppe Lavagetto <glavage...@wikimedia.org> Gerrit-Reviewer: Jforrester <jforres...@wikimedia.org> Gerrit-Reviewer: Ottomata <ao...@wikimedia.org> Gerrit-Reviewer: Volans <rcocci...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits