Ema has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/366564 )
Change subject: varnish cachestats.py: cache statsd server IP ...................................................................... varnish cachestats.py: cache statsd server IP Resolve statsd's server IP once every statsd_ip_ttl instead of doing it every time a metric is sent. Bug: T151643 Change-Id: I44765095dfd54be5796c33877256ee94de004844 --- M modules/varnish/files/cachestats.py M modules/varnish/files/varnishstatsd 2 files changed, 24 insertions(+), 1 deletion(-) Approvals: Ema: Looks good to me, approved Elukey: Looks good to me, but someone else must approve jenkins-bot: Verified Filippo Giunchedi: Looks good to me, but someone else must approve diff --git a/modules/varnish/files/cachestats.py b/modules/varnish/files/cachestats.py index cf3a0f4..ecb7860 100644 --- a/modules/varnish/files/cachestats.py +++ b/modules/varnish/files/cachestats.py @@ -9,7 +9,7 @@ Subclasses are responsible for dealing with the details of parsing the log entries and generating stats. - Copyright 2016 Emanuele Rocca <[email protected]> + Copyright 2016-2017 Emanuele Rocca <[email protected]> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -66,6 +66,8 @@ ap.add_argument('--statsd-server', help='statsd server', type=parse_statsd_server_string, default=None) + ap.add_argument('--statsd-ip-ttl', help='statsd IP TTL', + type=int, default=60) ap.add_argument('--key-prefix', help='metric key prefix', type=parse_prefix_string, default=self.key_prefix) ap.add_argument('--interval', help='send interval', @@ -73,11 +75,30 @@ self.args = ap.parse_args(argument_list) self.next_pub = time.time() + self.args.interval + self.next_statsd_ip_refresh = time.time() + self.args.statsd_ip_ttl self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Initialize stats to default values self.stats = self.default_stats + + if self.args.statsd_server: + self.statsd_hostname = self.args.statsd_server[0] + else: + self.statsd_hostname = None + + def resolve_statsd_ip(self, now=None): + """Resolve statsd's server IP. We do that every statsd_ip_ttl instead + of every time a metric is sent. + + See https://phabricator.wikimedia.org/T151643""" + if now is None: + now = time.time() + + if now >= self.next_statsd_ip_refresh: + statsd_ip = socket.gethostbyname(self.statsd_hostname) + self.args.statsd_server = statsd_ip, self.args.statsd_server[1] + self.next_statsd_ip_refresh = now + self.args.statsd_ip_ttl @property def default_stats(self): @@ -109,6 +130,7 @@ buf.write(metric.encode('utf-8')) buf.seek(io.SEEK_SET) if self.args.statsd_server: + self.resolve_statsd_ip(now) self.sock.sendto(buf.read(), self.args.statsd_server) else: print(buf.read().decode('utf-8', errors='replace').rstrip()) diff --git a/modules/varnish/files/varnishstatsd b/modules/varnish/files/varnishstatsd index c26be35..564ebfe 100755 --- a/modules/varnish/files/varnishstatsd +++ b/modules/varnish/files/varnishstatsd @@ -81,6 +81,7 @@ data = self.buf.read() if self.args.statsd_server: + self.resolve_statsd_ip() self.sock.sendto(data, self.args.statsd_server) else: print(data.decode('utf-8', errors='replace').rstrip()) -- To view, visit https://gerrit.wikimedia.org/r/366564 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I44765095dfd54be5796c33877256ee94de004844 Gerrit-PatchSet: 5 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Ema <[email protected]> Gerrit-Reviewer: BBlack <[email protected]> Gerrit-Reviewer: Elukey <[email protected]> Gerrit-Reviewer: Ema <[email protected]> Gerrit-Reviewer: Faidon Liambotis <[email protected]> Gerrit-Reviewer: Filippo Giunchedi <[email protected]> Gerrit-Reviewer: Volans <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
