From 5bcf65dcff75a01a90b688626d97735372b594e2 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Thu, 24 Dec 2015 10:59:02 +0000 Subject: Initial commit --- .../journal/__init__.py | 1 + .../journal/journal_processor.py | 35 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 prometheus_haproxy_log_exporter/journal/__init__.py create mode 100644 prometheus_haproxy_log_exporter/journal/journal_processor.py (limited to 'prometheus_haproxy_log_exporter/journal') diff --git a/prometheus_haproxy_log_exporter/journal/__init__.py b/prometheus_haproxy_log_exporter/journal/__init__.py new file mode 100644 index 0000000..3ac2398 --- /dev/null +++ b/prometheus_haproxy_log_exporter/journal/__init__.py @@ -0,0 +1 @@ +from .journal_processor import JournalProcessor diff --git a/prometheus_haproxy_log_exporter/journal/journal_processor.py b/prometheus_haproxy_log_exporter/journal/journal_processor.py new file mode 100644 index 0000000..1d022d4 --- /dev/null +++ b/prometheus_haproxy_log_exporter/journal/journal_processor.py @@ -0,0 +1,35 @@ +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from systemd import journal + +from ..log_processing import AbstractLogProcessor + + +class JournalProcessor(AbstractLogProcessor): + def __init__(self, unit, *args, **kwargs): + super(JournalProcessor, self).__init__(*args, **kwargs) + + self.unit = unit + + def run(self): + with journal.Reader() as j: + j.add_match(_SYSTEMD_UNIT=self.unit) + + j.seek_tail() + j.get_previous() + + while True: + for entry in j: + self.update_metrics(entry['MESSAGE']) + j.wait() -- cgit v1.2.3