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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits