Ori.livneh has uploaded a new change for review.

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

Change subject: MediaWiki/HHVM: log fatals to fluorine:/a/mw-log/hhvm-fatal.log
......................................................................

MediaWiki/HHVM: log fatals to fluorine:/a/mw-log/hhvm-fatal.log

* Remove hstr Python script. It's not useful at the moment. It can always be
  ressurected later.
* Set HHVM_TRACE_HANDLER to "/usr/bin/logger --tag hhvm-fatal --file ".
  This will log the fatal to syslog with the 'hhvm-fatal' tag.
* Configure MediaWiki to forward syslog messages tagged with 'hhvm-fatal' to
  fluorine.
* Rename syslog.pp's 'apache_log_aggregator' parameter to 'log_aggregator', to
  make it clear that it is not Apache-specific.

Change-Id: I98f9fc20cbe9c32ddee04a77427e06446e2f6de1
---
M manifests/role/beta.pp
M manifests/role/mediawiki.pp
D modules/hhvm/files/hstr
M modules/hhvm/manifests/init.pp
M modules/hhvm/templates/hhvm.default.erb
M modules/mediawiki/manifests/syslog.pp
D modules/mediawiki/templates/apache/rsyslog.conf.erb
A modules/mediawiki/templates/rsyslog.conf.erb
8 files changed, 28 insertions(+), 92 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/71/154271/1

diff --git a/manifests/role/beta.pp b/manifests/role/beta.pp
index 2c2c8c7..a779fd8 100644
--- a/manifests/role/beta.pp
+++ b/manifests/role/beta.pp
@@ -91,7 +91,7 @@
     include ::beta::common
 
     class { '::mediawiki::syslog':
-        apache_log_aggregator => 'deployment-bastion.eqiad.wmflabs:8420',
+        log_aggregator => 'deployment-bastion.eqiad.wmflabs:8420',
     }
 
     class { '::mediawiki::php':
diff --git a/manifests/role/mediawiki.pp b/manifests/role/mediawiki.pp
index b7472bb..952e75d 100644
--- a/manifests/role/mediawiki.pp
+++ b/manifests/role/mediawiki.pp
@@ -45,8 +45,8 @@
     }
 
     $log_aggregator = 'fluorine.eqiad.wmnet:8420'
-    class { '::mediawiki::php': fatal_log_file => "udp://${log_aggregator}" }
-    class { '::mediawiki::syslog': apache_log_aggregator => $log_aggregator }
+    class { '::mediawiki::php':    fatal_log_file => "udp://${log_aggregator}" 
}
+    class { '::mediawiki::syslog': log_aggregator => $log_aggregator }
 }
 
 class role::mediawiki::webserver( $pool, $workers_limit = undef ) {
diff --git a/modules/hhvm/files/hstr b/modules/hhvm/files/hstr
deleted file mode 100755
index b959fc5..0000000
--- a/modules/hhvm/files/hstr
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-  HHVM stack trace reporter
-
-  Usage: hstr stacktrace.XXX.log
-
-  The path to this script can be set as the value for $HHVM_TRACE_HANDLER
-  in /etc/default/hhvm.
-
-"""
-import sys
-reload(sys)
-sys.setdefaultencoding('utf-8')
-
-import ast
-import re
-
-
-cpp_trace_re = re.compile(r'^#[\d\s]+(?P<context_line>.+?) at (?P<abs_path>'
-                          r'[^\]]+?):(?P<lineno>[^\]]+?)$', re.M)
-php_trace_re = re.compile(r'^#[\d\s]+(?P<context_line>.+?) called at '
-                          r'\[(?P<abs_path>.*?):(?P<lineno>\d+?)\]$', re.M)
-
-
-def auto_cast(literal):
-    """Cast numeric strings to the appropriate type."""
-    try:
-        return ast.literal_eval(literal)
-    except (ValueError, SyntaxError):
-        return literal
-
-
-if '-h' in sys.argv or '--help' in sys.argv or len(sys.argv) != 2:
-    sys.exit('Usage: hstr stacktrace.XXX.log')
-
-with open(sys.argv[1], 'rt') as f:
-    raw = f.read()
-
-data = {k: auto_cast(v) for k, v in re.findall(r'^(\w+): ([^\n]+)', raw, re.M)}
-data['cpp_trace'] = [{k: auto_cast(v) for k, v in m.groupdict().items()}
-                     for m in cpp_trace_re.finditer(raw)]
-data['php_trace'] = [{k: auto_cast(v) for k, v in m.groupdict().items()}
-                     for m in php_trace_re.finditer(raw)]
-
-
-# XXX: do something useful!
-print data
diff --git a/modules/hhvm/manifests/init.pp b/modules/hhvm/manifests/init.pp
index f9a56b4..948da27 100644
--- a/modules/hhvm/manifests/init.pp
+++ b/modules/hhvm/manifests/init.pp
@@ -191,14 +191,6 @@
         mode   => '0555',
     }
 
-    file { '/usr/local/bin/hstr':
-        source => 'puppet:///modules/hhvm/hstr',
-        owner  => 'root',
-        group  => 'root',
-        mode   => '0555',
-        before => Service['hhvm'],
-    }
-
     file { '/usr/local/sbin/hhvm-dump-debug':
         source => 'puppet:///modules/hhvm/hhvm-dump-debug',
         owner  => 'root',
diff --git a/modules/hhvm/templates/hhvm.default.erb 
b/modules/hhvm/templates/hhvm.default.erb
index 4524c38..37cde3b 100644
--- a/modules/hhvm/templates/hhvm.default.erb
+++ b/modules/hhvm/templates/hhvm.default.erb
@@ -9,4 +9,4 @@
 
 # If set to an executable, that executable will be invoked with the path
 # to a stack trace as an argument whenever HHVM crashes.
-HHVM_TRACE_HANDLER="/usr/local/bin/hstr"
+HHVM_TRACE_HANDLER="/usr/bin/logger --tag hhvm-fatal --file "
diff --git a/modules/mediawiki/manifests/syslog.pp 
b/modules/mediawiki/manifests/syslog.pp
index 85465f7..3a543c1 100644
--- a/modules/mediawiki/manifests/syslog.pp
+++ b/modules/mediawiki/manifests/syslog.pp
@@ -1,14 +1,15 @@
 # syslog instance and configuration for applicationservers
-class mediawiki::syslog( $apache_log_aggregator ) {
-    file { '/etc/logrotate.d/mediawiki_apache':
-        source  => 'puppet:///modules/mediawiki/logrotate.d_mediawiki_apache',
-        owner   => 'root',
-        group   => 'root',
-        mode    => '0444',
+class mediawiki::syslog( $log_aggregator ) {
+    rsyslog::conf { 'mediawiki':
+        content  => template('mediawiki/rsyslog.conf.erb'),
+        priority => 40,  # before 50-default.conf
     }
 
-    rsyslog::conf { 'mediawiki_apache':
-        content  => template('mediawiki/apache/rsyslog.conf.erb'),
-        priority => 40,
+    file { '/etc/logrotate.d/mediawiki_apache':
+        source => 'puppet:///modules/mediawiki/logrotate.d_mediawiki_apache',
+        owner  => 'root',
+        group  => 'root',
+        mode   => '0444',
+        before => Rsyslog::Conf['mediawiki'],
     }
 }
diff --git a/modules/mediawiki/templates/apache/rsyslog.conf.erb 
b/modules/mediawiki/templates/apache/rsyslog.conf.erb
deleted file mode 100644
index fa62426..0000000
--- a/modules/mediawiki/templates/apache/rsyslog.conf.erb
+++ /dev/null
@@ -1,23 +0,0 @@
-# rsyslog configuration for MediaWiki on Apache
-# This file is managed by Puppet
-
-# Emulate MediaWiki's wfDebugLog / wfErrorLog format
-$template MediaWiki,"%programname% %timegenerated% %HOSTNAME%: %msg%\n"
-
-# Maximum 100MB log file size
-$outchannel apache2,/var/log/apache2.log,100000000,/usr/sbin/logrotate -f 
/etc/logrotate.d/mediawiki_apache
-
-# Send apache2 messages to the apache output channel
-:programname,isequal,"apache2" $apache2
-
-# ..and to the MediaWiki log aggregator
-& @<%= @apache_log_aggregator %>;MediaWiki
-
-# Discard apache2 messages before they get to 50-default.conf
-& ~
-
-# Send HHVM messages to the MediaWiki log aggregator
-:programname,isequal,"hhvm" @<%= @apache_log_aggregator %>;MediaWiki
-
-# Discard HHVM messages before they get to 50-default.conf
-& ~
diff --git a/modules/mediawiki/templates/rsyslog.conf.erb 
b/modules/mediawiki/templates/rsyslog.conf.erb
new file mode 100644
index 0000000..8b98f77
--- /dev/null
+++ b/modules/mediawiki/templates/rsyslog.conf.erb
@@ -0,0 +1,14 @@
+# rsyslog configuration for MediaWiki
+# This file is managed by Puppet
+
+# Emulate MediaWiki's wfDebugLog / wfErrorLog format
+$template MediaWiki,"%programname% %timegenerated% %HOSTNAME%: %msg%\n"
+
+# Forward Apache to /var/log/apache2.log and log aggregator.
+# Rotate /var/log/apache2.log when it exceeds 100MB.
+$outchannel apache2,/var/log/apache2.log,100000000,/usr/sbin/logrotate -f 
/etc/logrotate.d/mediawiki_apache
+:programname,isequal,"apache2" $apache2 @<%= @log_aggregator %>;MediaWiki ~
+
+# Forward HHVM logs and stack traces to log aggregator.
+:programname,isequal,"hhvm" @<%= @log_aggregator %>;MediaWiki ~
+:syslogtag,isequal,"hhvm-fatal:" @<%= @log_aggregator %>;MediaWiki ~

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I98f9fc20cbe9c32ddee04a77427e06446e2f6de1
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ori.livneh <[email protected]>

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

Reply via email to