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