Ottomata has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/197418

Change subject: Set up kafka processor and kafka consumer for client side 
events from /beacon/event.gif via varnishkafka
......................................................................

Set up kafka processor and kafka consumer for client side events from 
/beacon/event.gif via varnishkafka

Change-Id: I2f9a1655894b99f9a7e35c5c9626a769ceddce9a
---
M manifests/role/eventlogging.pp
1 file changed, 28 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/18/197418/1

diff --git a/manifests/role/eventlogging.pp b/manifests/role/eventlogging.pp
index 32713fb..d307dc9 100644
--- a/manifests/role/eventlogging.pp
+++ b/manifests/role/eventlogging.pp
@@ -18,6 +18,8 @@
 #
 class role::eventlogging {
     include eventlogging
+    # Infer Kafka cluster configuration from this class
+    include role::analytics::kafka::config
 
     if hiera('has_ganglia', true) {
         include role::eventlogging::monitoring
@@ -67,12 +69,33 @@
         output => 'tcp://*:8522',
     }
 
-    # Parsed and validated client-side (Varnish-generated) and
+
+
+    # Client-side events can also be generated by requests to
+    # //bits.wikimedia.org/beacon.event.gif?<event payload>.
+    # A varnishkafka instance on the bits caches sends these
+    # requests to kafka under the 'eventlogging' topic.
+    # Eventlogging can consume from this topic using kafka://
+    # URIs.
+    $kafka_brokers inline_template('<%= 
scope.lookupvar("role::analytics::kafka::config::brokers_array").join(",") %>')
+    $kafka_eventlogging_input_topic = 'eventlogging'
+    $kafka_input_uri = 
"kafka://${kafka_brokers}?topic=${kafka_eventlogging_input_topic}"
+
+    # This processor consumes client side events from Kafka and sends them
+    # to zmq port 8523.
+    eventlogging::service::processor { 'client-side events kafka':
+        format => '%q %{recvFrom}s %{seqId}d %t %h %{userAgent}i',
+        input  => 
"${kafka_input_uri}&group_id=eventlogging-client-side-processor",
+        output => 'tcp://*:8523',
+    }
+
+
+    # Parsed and validated client-side (varnishncsa and varnishkafka 
generated) and
     # server-side (MediaWiki-generated) events are multiplexed into a
     # single output stream, published on TCP port 8600.
 
     eventlogging::service::multiplexer { 'all events':
-        inputs => [ "tcp://${processor}:8521", "tcp://${processor}:8522" ],
+        inputs => [ "tcp://${processor}:8521", "tcp://${processor}:8522", 
"tcp://${processor}:8523" ],
         output => 'tcp://*:8600',
     }
 
@@ -109,6 +132,9 @@
         'client-side-events.log':
             input  => "tcp://${processor}:8422?raw=1",
             output => "file://${log_dir}/client-side-events.log";
+        'client-side-events-kafka.log':
+            input  => 
"${kafka_input_uri}&group_id=eventlogging-client-side-raw-consumer"
+            output => "file://${log_dir}/client-side-events-kafka.log";
         'all-events.log':
             input  => "tcp://${processor}:8600",
             output => "file://${log_dir}/all-events.log";
@@ -129,26 +155,6 @@
             require     => File[$log_dir],
             hosts_allow => $backup_destinations,
         }
-    }
-
-
-    ## Kafka / Hadoop
-
-    include role::analytics::kafka::config
-
-    $kafka_brokers = inline_template('<%= 
scope.lookupvar("role::analytics::kafka::config::brokers_array").join(",") %>')
-    $kafka_cluster = $::role::analytics::kafka::config::kafka_cluster_name
-
-    $kafka_topic_base_name = 'eventlogging'
-    $kafka_topic_version = 0
-    $kafka_topic = sprintf('%s-%02d', $kafka_topic_base_name, 
$kafka_topic_version)
-
-    eventlogging::service::consumer { 'kafka':
-        input  => "tcp://${processor}:8600",
-        output => 
"kafka://${kafka_cluster}?brokers=${kafka_brokers}&topic=${kafka_topic}",
-        # We are not currently using this data in Kafka or Hadoop, and Kafka 
is about
-        # to undergo some production failover testing.  Disabling this for now.
-        ensure => 'absent',
     }
 }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2f9a1655894b99f9a7e35c5c9626a769ceddce9a
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ottomata <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to