Giuseppe Lavagetto has submitted this change and it was merged.

Change subject: ganglia: autogenerate datasources from the list of clusters
......................................................................


ganglia: autogenerate datasources from the list of clusters

Bug:T93776
Change-Id: Ia32ea48028ff3b082f240cc01c602b0e9a6587f9
---
M hieradata/codfw.yaml
M hieradata/common.yaml
M hieradata/esams.yaml
M manifests/role/ganglia.pp
A modules/ganglia_new/lib/puppet/parser/functions/ganglia_aggregator_config.rb
M modules/ganglia_new/manifests/monitor/aggregator/instance.pp
6 files changed, 174 insertions(+), 125 deletions(-)

Approvals:
  Giuseppe Lavagetto: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/hieradata/codfw.yaml b/hieradata/codfw.yaml
index ebb6b56..c23a88a 100644
--- a/hieradata/codfw.yaml
+++ b/hieradata/codfw.yaml
@@ -25,3 +25,4 @@
   - '10.192.32.23:11211:1 "shard16"'
 jobrunner_state: 'stopped'
 ganglia_class: "new"
+ganglia_aggregators: install2001.wikimedia.org:10649
diff --git a/hieradata/common.yaml b/hieradata/common.yaml
index a87bf6a..8732306 100644
--- a/hieradata/common.yaml
+++ b/hieradata/common.yaml
@@ -5,195 +5,258 @@
   decommissioned:
     name: "Decommissioned servers"
     id: 1
-    sites: []
+    sites: {}
   lvs:
     name: "LVS loadbalancers"
     id: 2
     sites:
-      - eqiad
-      - codfw
-      - esams
-      - ulsfo
+      eqiad:
+        - lvs1001.wikimedia.org
+        - lvs1002.wikimedia.org
+      codfw: []
+      esams: []
+      ulsfo:
+        - lvs4001.ulsfo.wmnet
+        - lvs4003.ulsfo.wmnet
   search:
     name: "Search"
     id: 4
-    sites: []
+    sites: {}
   mysql:
     name: "MySQL"
     id: 5
     sites:
-      - eqiad
-      - codfw
+      eqiad:
+        - dbstore1001.eqiad.wmnet
+        - dbstore1002.eqiad.wmnet
+      codfw: []
   misc:
     name: "Miscellaneous"
     id: 8
     sites:
-      - eqiad
-      - codfw
-      - esams
-      - ulsfo
+      eqiad:
+        - carbon.wikimedia.org
+        - ms1004.eqiad.wmnet
+      codfw: []
+      esams: []
   appserver:
     name: "Application servers"
     id: 11
     sites:
-      - eqiad
-      - codfw
+      eqiad:
+        - mw1054.eqiad.wmnet
+        - mw1055.eqiad.wmnet
+      codfw: []
   imagescaler:
     name: "Image scalers"
     id: 12
     sites:
-      - eqiad
-      - codfw
+      eqiad:
+        - mw1153.eqiad.wmnet
+        - mw1154.eqiad.wmnet
+      codfw: []
   api_appserver:
     name: "API application servers"
     id: 13
     sites:
-      - eqiad
-      - codfw
+      eqiad:
+        - mw1114.eqiad.wmnet
+        - mw1115.eqiad.wmnet
+      codfw: []
   pdf:
     name: "PDF servers"
     id: 15
     sites:
-      - eqiad
+      eqiad:
+        - ocg1001.eqiad.wmnet
   cache_text:
     name: "Text caches"
     id: 20
     sites:
-      - eqiad
-      - esams
-      - ulsfo
+      eqiad:
+        - cp1052.eqiad.wmnet
+        - cp1053.eqiad.wmnet
+      esams: []
+      ulsfo:
+        - cp4008.ulsfo.wmnet
+        - cp4016.ulsfo.wmnet
   cache_bits:
     name: "Bits caches"
     id: 21
     sites:
-      - eqiad
-      - esams
-      - ulsfo
+      eqiad:
+        - cp1056.eqiad.wmnet
+        - cp1057.eqiad.wmnet
+      esams: []
+      ulsfo:
+        - cp4008.ulsfo.wmnet
+        - cp4016.ulsfo.wmnet
   cache_upload:
     name: "Upload caches"
     id: 22
     sites:
-      - eqiad
-      - esams
-      - ulsfo
+      eqiad:
+        - cp1048.eqiad.wmnet
+        - cp1061.eqiad.wmnet
+      esams: []
+      ulsfo:
+        - cp4005.ulsfo.wmnet
+        - cp4013.ulsfo.wmnet
   payments:
     name: "Fundraiser payments"
+    
     id: 23
-    sites:
-      - eqiad
-      - codfw
+    sites: []
   ssl:
     name: "SSL cluster"
     id: 26
-    sites:
-      - eqiad
-      - esams
+    sites: {}
   swift:
     name: "Swift"
     id: 27
     sites:
-      - eqiad
-      - codfw
-      - esams
+      eqiad:
+        - ms-fe1001.eqiad.wmnet
+        - ms-fe1002.eqiad.wmnet
+      codfw: []
+      esams: []
   cache_mobile:
     name: "Mobile caches"
     id: 28
     sites:
-      - eqiad
-      - esams
-      - ulsfo
-  virt:
+      eqiad:
+        - cp1046.eqiad.wmnet
+        - cp1047.eqiad.wmnet
+      esams: []
+      ulsfo:
+        - cp4011.ulsfo.wmnet
+        - cp4019.ulsfo.wmnet
+  virt: 
     name: "Virtualization cluster"
     id: 29
     sites:
-      - eqiad
+      eqiad:
+        - labnet1001.eqiad.wmnet
+        - virt1000.wikimedia.org
   jobrunner:
     name: "Jobrunners"
     id: 31
     sites:
-      - eqiad
-      - codfw
-  analytics:
+      eqiad:
+        - mw1001.eqiad.wmnet
+        - mw1002.eqiad.wmnet
+      codfw: []
+  analytics:     
     name: "Analytics cluster"
     id: 32
     sites:
-      - eqiad
+      eqiad:
+        - analytics1013.eqiad.wmnet
+        - analytics1014.eqiad.wmnet
+        - analytics1019.eqiad.wmnet
   memcached:
     name: "Memcached"
     id: 33
     sites:
-      - eqiad
-      - codfw
-  videoscaler:
+      eqiad:
+        - mc1001.eqiad.wmnet
+        - mc1002.eqiad.wmnet
+      codfw: []
+  videoscaler:       
     name: "Video scalers"
     id: 34
     sites:
-      - eqiad
-      - codfw
+      eqiad:
+        - tmh1001.eqiad.wmnet
+        - tmh1002.eqiad.wmnet
+      codfw: []
   fundraising:
     name: "Fundraising"
     id: 35
     sites:
-      - eqiad
-      - codfw
+      eqiad:
+        - pay-lvs1001.frack.eqiad.wmnet
+        - pay-lvs1002.frack.eqiad.wmnet
   ceph:           # Not used anymore
     name: "Ceph"
     id: 36
-    sites: []
+    sites: {}
   parsoid:
     name: "Parsoid"
     id: 37
     sites:
-      - eqiad
-  cache_parsoid:
+      eqiad:
+        - wtp1001.eqiad.wmnet
+        - wtp1002.eqiad.wmnet
+  cache_parsoid: 
     name: "Parsoid Varnish"
     id: 38
     sites:
-      - eqiad
-      - codfw
+      eqiad:
+        - cp1045.eqiad.wmnet
+        - cp1058.eqiad.wmnet
+      codfw: []
   redis:
     name: "Redis"
     id: 39
     sites:
-      - eqiad
-      - codfw
-  labsnfs:
+      eqiad:
+        - rdb1001.eqiad.wmnet
+        - rdb1002.eqiad.wmnet
+      codfw: []
+  labsnfs:   
     name: "Labs NFS cluster"
     id: 40
     sites:
-      - eqiad
+      eqiad:
+        - labstore1001.eqiad.wmnet
+        - labstore1003.eqiad.wmnet
   cache_misc:
     name: "Misc Web caching cluster"
     id: 41
     sites:
-      - eqiad
+      eqiad:
+        - cp1043.eqiad.wmnet
+        - cp1044.eqiad.wmnet
   elasticsearch:
     name: "Elasticsearch cluster"
     id: 42
     sites:
-      - eqiad
+      eqiad:
+        - elastic1001.eqiad.wmnet
+        - elastic1007.eqiad.wmnet
+        - elastic1013.eqiad.wmnet
   logstash:
     name: "Logstash cluster"
     id: 43
     sites:
-      - eqiad
-  rcstream:
+      eqiad:
+        - logstash1001.eqiad.wmnet
+        - logstash1003.eqiad.wmnet
+  rcstream:      
     name: "RCStream cluster"
     id: 44
     sites:
-      - eqiad
+      eqiad:
+        - rcs1001.eqiad.wmnet
   analytics_kafka:
     name: "Analytics Kafka cluster"
     id: 45
     sites:
-      - eqiad
+      eqiad:
+        - analytics1012.eqiad.wmnet
+        - analytics1018.eqiad.wmnet
+        - analytics1022.eqiad.wmnet
   sca:
     name: "Service Cluster A"
     id: 46
     sites:
-      - eqiad
+      eqiad:
+        - sca1001.eqiad.wmnet
+        - sca1002.eqiad.wmnet
   openldap_corp_mirror:
     name: "Corp OIT LDAP mirror"
     id: 47
     sites:
-      - eqiad
+      eqiad:
+        - plutonium.wikimedia.org
diff --git a/hieradata/esams.yaml b/hieradata/esams.yaml
index af849b7..2a2a4a1 100644
--- a/hieradata/esams.yaml
+++ b/hieradata/esams.yaml
@@ -1 +1,2 @@
 ganglia_class: "new"
+ganglia_aggregators: hooft.esams.wikimedia.org:11649
diff --git a/manifests/role/ganglia.pp b/manifests/role/ganglia.pp
index 9c45a8f..52bc665 100644
--- a/manifests/role/ganglia.pp
+++ b/manifests/role/ganglia.pp
@@ -1,60 +1,7 @@
 class role::ganglia::config {
     # TODO: hiera this
     $rra_sizes = '"RRA:AVERAGE:0.5:1:360" "RRA:AVERAGE:0.5:24:245" 
"RRA:AVERAGE:0.5:168:241" "RRA:AVERAGE:0.5:672:241" "RRA:AVERAGE:0.5:5760:371"'
-
-    $data_sources = {
-        'Video scalers eqiad'            => 'tmh1001.eqiad.wmnet 
tmh1002.eqiad.wmnet',
-        'Video scalers codfw'            => 'install2001.wikimedia.org:10673',
-        'Image scalers eqiad'            => 'mw1153.eqiad.wmnet 
mw1154.eqiad.wmnet',
-        'Image scalers codfw'            => 'install2001.wikimedia.org:10661',
-        'API application servers eqiad'  => 'mw1114.eqiad.wmnet 
mw1115.eqiad.wmnet',
-        'API application servers codfw'  => 'install2001.wikimedia.org:10662',
-        'Application servers eqaid'      => 'mw1054.eqiad.wmnet 
mw1055.eqiad.wmnet',
-        'Application servers codfw'      => 'install2001.wikimedia.org:10660',
-        'Jobrunners eqiad'               => 'mw1001.eqiad.wmnet 
mw1002.eqiad.wmnet',
-        'Jobrunners codfw'               => 'install2001.wikimedia.org:10680 
mw2001.codfw.wmnet mw2080.codfw.wmnet',
-        'MySQL'                          => 'db1050.eqiad.wmnet',
-        'PDF servers eqiad'              => 'ocg1001.eqiad.wmnet',
-        'Fundraising eqiad'              => 'pay-lvs1001.frack.eqiad.wmnet 
pay-lvs1002.frack.eqiad.wmnet',
-        'Virtualization cluster eqiad'   => 'labnet1001.eqiad.wmnet 
virt1000.wikimedia.org',
-        'Labs NFS cluster eqiad'         => 'labstore1001.eqiad.wmnet 
labstore1003.eqiad.wmnet',
-        'MySQL eqiad'                    => 'dbstore1001.eqiad.wmnet 
dbstore1002.eqiad.wmnet',
-        'LVS loadbalancers eqiad'        => 'lvs1001.wikimedia.org 
lvs1002.wikimedia.org',
-        'LVS loadbalancers codfw'        => 'install2001.wikimedia.org:10651 
lvs2001.codfw.wmnet lvs2002.codfw.wmnet',
-        'Miscellaneous eqiad'            => 'carbon.wikimedia.org 
ms1004.eqiad.wmnet',
-        'Miscellaneous codfw'            => 'install2001.wikimedia.org:10657',
-        'Mobile caches eqiad'            => 'cp1046.eqiad.wmnet 
cp1047.eqiad.wmnet',
-        'Mobile caches esams'            => 'hooft.esams.wikimedia.org:11677',
-        'Bits caches eqiad'              => 'cp1056.eqiad.wmnet 
cp1057.eqiad.wmnet',
-        'Upload caches eqiad'            => 'cp1048.eqiad.wmnet 
cp1061.eqiad.wmnet',
-        'Swift eqiad'                    => 'ms-fe1001.eqiad.wmnet 
ms-fe1002.eqiad.wmnet',
-        'Swift esams'                    => 'hooft.esams.wikimedia.org:11676',
-        'Swift codfw'                    => 'install2001.wikimedia.org:10676',
-        'Bits caches esams'              => 'hooft.esams.wikimedia.org:11670 
cp3019.esams.wmnet cp3020.esams.wmnet',
-        'LVS loadbalancers esams'        => 'hooft.esams.wikimedia.org:11651 
lvs3001.esams.wmnet lvs3002.esams.wmnet',
-        'Miscellaneous esams'            => 'hooft.esams.wikimedia.org:11657',
-        'Analytics cluster eqiad'        => 'analytics1013.eqiad.wmnet 
analytics1014.eqiad.wmnet analytics1019.eqiad.wmnet',
-        'Memcached eqiad'                => 'mc1001.eqiad.wmnet 
mc1002.eqiad.wmnet',
-        'Text caches esams'              => 'hooft.esams.wikimedia.org:11669',
-        'Upload caches esams'            => 'hooft.esams.wikimedia.org:11671 
cp3003.esams.wmnet cp3004.esams.wmnet',
-        'Parsoid eqiad'                  => 'wtp1001.eqiad.wmnet 
wtp1002.eqiad.wmnet',
-        'Parsoid Varnish eqiad'          => 'cp1045.eqiad.wmnet 
cp1058.eqiad.wmnet',
-        'Redis eqiad'                    => 'rdb1001.eqiad.wmnet 
rdb1002.eqiad.wmnet',
-        'Text caches eqiad'              => 'cp1052.eqiad.wmnet 
cp1053.eqiad.wmnet',
-        'Misc Web caches eqiad'          => 'cp1043.eqiad.wmnet 
cp1044.eqiad.wmnet',
-        'LVS loadbalancers ulsfo'        => 'lvs4001.ulsfo.wmnet 
lvs4003.ulsfo.wmnet',
-        'Bits caches ulsfo'              => 'cp4001.ulsfo.wmnet 
cp4003.ulsfo.wmnet',
-        'Upload caches ulsfo'            => 'cp4005.ulsfo.wmnet 
cp4013.ulsfo.wmnet',
-        'Mobile caches ulsfo'            => 'cp4011.ulsfo.wmnet 
cp4019.ulsfo.wmnet',
-        'Text caches ulsfo'              => 'cp4008.ulsfo.wmnet 
cp4016.ulsfo.wmnet',
-        'Elasticsearch eqiad'            => 'elastic1001.eqiad.wmnet 
elastic1007.eqiad.wmnet elastic1013.eqiad.wmnet',
-        'Logstash eqiad'                 => 'logstash1001.eqiad.wmnet 
logstash1003.eqiad.wmnet',
-        'RCStream eqiad'                 => 'rcs1001.eqiad.wmnet',
-        'Analytics Kafka cluster eqiad'  => 'analytics1012.eqiad.wmnet 
analytics1018.eqiad.wmnet analytics1022.eqiad.wmnet',
-        'Service Cluster A eqiad'        => 'sca1001.eqiad.wmnet 
sca1002.eqiad.wmnet',
-        'Corp OIT LDAP mirror eqiad'     => 'plutonium.wikimedia.org',
-        'Corp OIT LDAP mirror codfw'     => 'pollux.wikimedia.org',
-    }
+    $data_sources = ganglia_aggregator_config()
 }
 
 # A role that includes all the needed stuff to run a ganglia web frontend
diff --git 
a/modules/ganglia_new/lib/puppet/parser/functions/ganglia_aggregator_config.rb 
b/modules/ganglia_new/lib/puppet/parser/functions/ganglia_aggregator_config.rb
new file mode 100644
index 0000000..5906e14
--- /dev/null
+++ 
b/modules/ganglia_new/lib/puppet/parser/functions/ganglia_aggregator_config.rb
@@ -0,0 +1,37 @@
+#
+# ganglia_aggregator_config - generates the aggregator config
+#
+def calc_url(aggregator, ip_octet)
+  url, port = aggregator.split(':')
+  port = port.to_i + ip_octet.to_i
+  return sprintf("%s:%d", url, port)
+end
+
+
+module Puppet::Parser::Functions
+  newfunction(:ganglia_aggregator_config, :type => :rvalue) do |args|
+    config = {}
+    site_config = {}
+    site_wide_aggregators = {}
+    clusters = function_hiera(['ganglia_clusters'])
+    clusters.each do |cluster, data|
+      data['sites'].each do |site, aggregators|
+        name = sprintf("%s %s", data['name'], site)
+        unless site_config.include? site
+          site_config[site] = function_hiera(['ganglia_class', nil, site])
+        end
+        if site_config[site] == 'old'
+          aggregator = aggregators.join(' ')
+        else
+          unless site_wide_aggregators.include? site
+            site_wide_aggregators[site] = 
function_hiera(['ganglia_aggregators', nil, site])
+          end
+          # Compute the port to use
+          aggregator = calc_url(site_wide_aggregators[site], data['id'])
+        end
+        config[name] = aggregator
+      end
+    end
+    return config
+  end
+end
diff --git a/modules/ganglia_new/manifests/monitor/aggregator/instance.pp 
b/modules/ganglia_new/manifests/monitor/aggregator/instance.pp
index 83746ea..5e228b2 100644
--- a/modules/ganglia_new/manifests/monitor/aggregator/instance.pp
+++ b/modules/ganglia_new/manifests/monitor/aggregator/instance.pp
@@ -9,7 +9,7 @@
 
     $cluster = regsubst($title, '^(.*)_[^_]+$', '\1')
     if has_key($ganglia_new::configuration::clusters[$cluster], 'sites') {
-        $sites = $ganglia_new::configuration::clusters[$cluster]['sites']
+        $sites = keys($ganglia_new::configuration::clusters[$cluster]['sites'])
     } else {
         $sites = $ganglia_new::configuration::default_sites
     }

-- 
To view, visit https://gerrit.wikimedia.org/r/198721
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia32ea48028ff3b082f240cc01c602b0e9a6587f9
Gerrit-PatchSet: 7
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Giuseppe Lavagetto <glavage...@wikimedia.org>
Gerrit-Reviewer: Dzahn <dz...@wikimedia.org>
Gerrit-Reviewer: Giuseppe Lavagetto <glavage...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to