Source code for insights.parsers.rabbitmq_log

"""
RabbitMQ Logs
=============

Module for parsing the log files for RabbitMQ:

RabbitMQLogs - file ``/var/log/rabbitmq/rabbit@$HOSTNAME.log``
--------------------------------------------------------------

RabbitMQStartupErrLog - file ``/var/log/rabbitmq/startup_err``
--------------------------------------------------------------

RabbitMQStartupLog - file ``/var/log/rabbitmq/startup_log``
-----------------------------------------------------------

"""

from .. import LogFileOutput, parser
from insights.specs import Specs


[docs] @parser(Specs.rabbitmq_startup_log) class RabbitMQStartupLog(LogFileOutput): """Class for parsing ``/var/log/rabbitmq/startup_log`` file. Typical content of ``startup_log`` file is:: Starting all nodes... Starting node rabbit@ubuntu... +---+ +---+ | | | | | | | | | | | | | +---+ +-------+ | | | RabbitMQ +---+ | | | | | | v1.8.0 +---+ | | | +-------------------+ AMQP 8-0 Copyright (C) 2007-2010 LShift Ltd., Cohesive Financial Technologies LLC., and Rabbit Technologies Ltd. Licensed under the MPL. See http://www.rabbitmq.com/ node : rabbit@ubuntu app descriptor : /usr/lib/rabbitmq/lib/rabbitmq_server-1.8.0/sbin/../ebin/rabbit.app home dir : /var/lib/rabbitmq cookie hash : mfoMkOc9CYok/SmH7RH9Jg== log : /var/log/rabbitmq/rabbit@ubuntu.log sasl log : /var/log/rabbitmq/rabbit@ubuntu-sasl.log database dir : /var/lib/rabbitmq/mnesia/rabbit@ubuntu erlang version : 5.7.4 starting file handle cache server ...done starting worker pool ...done starting database ...done starting empty DB check ...done starting exchange recovery ...done starting queue supervisor and queue recovery ...BOOT ERROR: FAILED Note: Please refer to its super-class ``LogFileOutput`` """ pass
[docs] @parser(Specs.rabbitmq_startup_err) class RabbitMQStartupErrLog(LogFileOutput): """Class for parsing ``/var/log/rabbitmq/startup_err`` file. Typical content of ``startup_err`` file is:: Error: {node_start_failed,normal} Crash dump was written to: erl_crash.dump Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}) .. note:: Please refer to its super-class :py:class:`insights.core.LogFileOutput` """ pass
[docs] @parser(Specs.rabbitmq_logs) class RabbitMQLogs(LogFileOutput): """Class for parsing ``/var/log/rabbitmq/rabbit@$HOSTNAME.log`` file Typical content of ``rabbit@$HOSTNAME.log`` file is:: =INFO REPORT==== 9-Nov-2016::14:29:11 === Starting RabbitMQ 3.6.3 on Erlang 18.3.4.4 Copyright (C) 2007-2016 Pivotal Software, Inc. Licensed under the MPL. See http://www.rabbitmq.com/ =INFO REPORT==== 9-Nov-2016::14:29:11 === node : rabbit@overcloud-controller-0 home dir : /var/lib/rabbitmq config file(s) : /etc/rabbitmq/rabbitmq.config cookie hash : F7g8XhNTzvEK3KywLHh9yA== log : /var/log/rabbitmq/rabbit@overcloud-controller-0.log sasl log : /var/log/rabbitmq/rabbit@overcloud-controller-0-sasl.log database dir : /var/lib/rabbitmq/mnesia/rabbit@overcloud-controller-0 ... .. note:: Please refer to its super-class :py:class:`insights.core.LogFileOutput` for full usage. .. note:: Because this parser is defined using a PatternSpec, which returns multiple files, the data in the shared parser state is a list of these parser objects. This means that for the moment you will have to iterate across these objects directly. Examples: >>> for log in shared[RabbitMQLogs]: ... print 'log file:', log.file_path ... print 'INFO lines:', len(log.get('INFO REPORT')) ... print 'ERROR lines:', len(log.get('ERROR REPORT')) ... log file: /var/log/rabbitmq/rabbit@queue.example.com.log INFO lines: 2 ERROR lines: 0 """ time_format = '%d-%b-%Y::%H:%M:%S'