20after4 has uploaded a new change for review.
https://gerrit.wikimedia.org/r/199302
Change subject: VarnishStatusCollector for diamond.
......................................................................
VarnishStatusCollector for diamond.
This is needed to collect specific request stats for T88705
Bug: T88705
Change-Id: I1b4448653d1cfe6420f23b87df792256e4d762be
---
A modules/diamond/files/collector/varnishstatus.py
A modules/diamond/manifests/collector/varnishstatus.pp
2 files changed, 52 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/02/199302/1
diff --git a/modules/diamond/files/collector/varnishstatus.py
b/modules/diamond/files/collector/varnishstatus.py
new file mode 100644
index 0000000..497dee3
--- /dev/null
+++ b/modules/diamond/files/collector/varnishstatus.py
@@ -0,0 +1,40 @@
+"""
+Collect request status code stats from varnish (by using varnishtop)
+
+#### Dependencies
+
+ * subprocess
+"""
+import diamond.collector
+import subprocess
+
+class VarnishStatusCollector(diamond.collector.Collector):
+
+ def get_default_config(self):
+ """
+ Returns the default collector settings
+ """
+ config = super(VarnishStatusCollector, self).get_default_config()
+ config.update({
+ 'path': 'varnish',
+ 'bin': '/usr/bin/varnishtop',
+ })
+ return config
+
+ def collect(self):
+ lines = self.poll().splitlines()
+ # Publish Metric
+ for line in lines:
+ parts = line.split()
+ self.publish('requests.'+parts[2], int(parts[0]))
+
+ def poll(self):
+ try:
+ command = [self.config['bin'], '-b', '-i', 'RxStatus', '-1']
+
+ output = subprocess.Popen(command,
+ stdout=subprocess.PIPE).communicate()[0]
+ except OSError:
+ output = ""
+
+ return output
diff --git a/modules/diamond/manifests/collector/varnishstatus.pp
b/modules/diamond/manifests/collector/varnishstatus.pp
new file mode 100644
index 0000000..79f35a6
--- /dev/null
+++ b/modules/diamond/manifests/collector/varnishstatus.pp
@@ -0,0 +1,12 @@
+# == Define: diamond::collector::nginx
+#
+# configures the Diamond VarnishStatusCollector to poll it varnish stats.
+
+define diamond::collector::varnishstatus {
+ diamond::collector { 'VarnishStatus':
+ source => 'puppet:///modules/diamond/collector/varnishstatus.py',
+ settings => {
+ path => $domain
+ }
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/199302
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b4448653d1cfe6420f23b87df792256e4d762be
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: 20after4 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits