BryanDavis has uploaded a new change for review.

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

Change subject: logstash: Ship logs via syslog udp datagrams
......................................................................

logstash: Ship logs via syslog udp datagrams

Use the support for syslog UDP datagram logging in 1.25wmf18 to ship log
events directly to Logstash.

Initially enabled only for group0 wikis.

Bug: T88732
Change-Id: Ie226587277d0ea7d8ea558d9882b63944e051aae
---
M wmf-config/InitialiseSettings.php
M wmf-config/logging.php
2 files changed, 33 insertions(+), 28 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/mediawiki-config 
refs/changes/59/191259/1

diff --git a/wmf-config/InitialiseSettings.php 
b/wmf-config/InitialiseSettings.php
index 3efe349..c1337af 100644
--- a/wmf-config/InitialiseSettings.php
+++ b/wmf-config/InitialiseSettings.php
@@ -14893,9 +14893,10 @@
        'default' => true,
 ),
 
-// Disabled on suspicion of being implicated in 5-Feb-2015 outage. --Ori
+// Needs 1.25wmf18 or newer
 'wmgUseMonologLogger' => array(
        'default' => false,
+       'group0'  => true,
 ),
 
 'wmgUseXAnalytics' => array(
diff --git a/wmf-config/logging.php b/wmf-config/logging.php
index 56f83e1..4aeb137 100644
--- a/wmf-config/logging.php
+++ b/wmf-config/logging.php
@@ -1,32 +1,28 @@
 <?php
 if ( $wmgUseMonologLogger ) {
        /**
-       * Create a config array for a \Monolog\Handler\RedisHandler instance.
+       * Create a config array for a MWLoggerMonologSyslogHandler instance.
        * @param int $level Minimum logging level at which this handler will be
        * triggered
        * @return array
        */
-       function wmMonologRedisConfigFactory( $level ) {
-               global $wmgLogstashPassword;
-               return array(
-                       'class' => '\\Monolog\\Handler\\RedisHandler',
-                       'args' => array(
-                               function () use ( $wmgLogstashPassword ) {
-                                       $servers = array(
-                                               '10.64.32.138', // 
logstash1001.eqiad.wmnet
-                                               '10.64.32.137', // 
logstash1002.eqiad.wmnet
-                                               '10.64.32.136', // 
logstash1003.eqiad.wmnet
-                                       );
-                                       // Connect to a random logstash host
-                                       $server = $servers[ mt_rand( 0, 
count($servers) - 1 ) ];
+       function wmMonologSyslogConfigFactory( $level ) {
+               static $servers = array(
+                       '10.64.32.138', // logstash1001.eqiad.wmnet
+                       '10.64.32.137', // logstash1002.eqiad.wmnet
+                       '10.64.32.136', // logstash1003.eqiad.wmnet
+               );
 
-                                       $redis = new Redis();
-                                       $redis->connect( $server, 6379, .25 );
-                                       $redis->auth( $wmgLogstashPassword );
-                                       return $redis;
-                               },
-                               'logstash',
-                               $level
+               return array(
+                       'class' => 'MWLoggerMonologSyslogHandler',
+                       'args' => array(
+                               'mediawiki',    // syslog appname
+                               function () use ( $servers ) {
+                                       return $servers[ mt_rand( 0, count( 
$servers ) - 1 ) ];
+                               },              // randomly chose server
+                               10514,          // logstash syslog listener port
+                               LOG_USER,       // syslog facility
+                               $level,         // minimum log level to pass to 
logstash
                        ),
                        'formatter' => 'logstash',
                );
@@ -66,7 +62,7 @@
                                'class' => '\\Monolog\\Handler\\NullHandler',
                                'formatter' => 'line',
                        ),
-                       'logstash' => wmMonologRedisConfigFactory( 
\Monolog\Logger::DEBUG ),
+                       'logstash' => wmMonologSyslogConfigFactory( 'debug' ),
                ),
 
                'formatters' => array(
@@ -101,14 +97,18 @@
 
                if ( $sendToLogstash ) {
                        if ( $level !== false ) {
+                               // Register handler that will only pass events 
of the given
+                               // log level
                                $logstashHandler = "filtered-{$group}";
                                $wmgMonologConfig['handlers'][$logstashHandler] 
=
-                                       wmMonologRedisConfigFactory( $level );
+                                       wmMonologSyslogConfigFactory( $level );
                        }
 
                        if ( $sample === false ) {
                                $handlers = array( $group, $logstashHandler );
                        } else {
+                               // Register a handler that will sample the 
event stream and
+                               // pass events on to $logstashHandler for 
storage
                                
$wmgMonologConfig['handlers']["sampled-{$group}"] = array(
                                        'class' => 
'MWLoggerMonologSamplingHandler',
                                        'args' => array(
@@ -126,15 +126,19 @@
                        $handlers = array( $group );
                }
 
-               $wmgMonologConfig['loggers'][$group] = array(
-                       'handlers' => $handlers,
-                       'processors' => array( 'wiki', 'psr', 'pid', 'uid', 
'web' ),
-               );
+               // Register a handler to send logs for this group via udp2log
                $wmgMonologConfig['handlers'][$group] = array(
                        'class' => 'MWLoggerMonologHandler',
                        'args' => array( $dest, true ),
                        'formatter' => 'legacy',
                );
+
+               // Enable emitting log events for this group to the handler(s) 
that
+               // have been chosen
+               $wmgMonologConfig['loggers'][$group] = array(
+                       'handlers' => $handlers,
+                       'processors' => array( 'wiki', 'psr', 'pid', 'uid', 
'web' ),
+               );
        }
 
        $wgMWLoggerDefaultSpi = array(

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie226587277d0ea7d8ea558d9882b63944e051aae
Gerrit-PatchSet: 1
Gerrit-Project: operations/mediawiki-config
Gerrit-Branch: master
Gerrit-Owner: BryanDavis <bda...@wikimedia.org>

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

Reply via email to