"""Init methods for p3exporter package."""
import argparse
from wsgiref.simple_server import make_server
import yaml
import logging
import os
import signal
import sys
import time
from p3exporter.collector import Collector, CollectorConfig
from p3exporter.web import create_app
[docs]def shutdown():
"""Shutdown the app in a clean way."""
logging.info('Shutting down, see you next time!')
sys.exit(1)
[docs]def signal_handler(signum, frame):
"""Will be called if a signal was catched."""
shutdown()
[docs]def main():
"""Start the application."""
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGINT, signal_handler)
logging.getLogger().setLevel(logging.INFO)
parser = argparse.ArgumentParser(description="Python programmable Prometheus exporter.")
parser.add_argument('-c', '--config', default=os.getenv('P3E_CONFIG', 'p3.yml'),
help='path to configuration file.')
parser.add_argument('-p', '--port', default=os.getenv('P3E_PORT', 5876),
help='exporter exposed port')
args = parser.parse_args()
with open(args.config, 'r') as config_file:
cfg = yaml.load(config_file, Loader=yaml.SafeLoader)
collector_config = CollectorConfig(**cfg)
Collector(collector_config)
app = create_app(collector_config)
logging.info("Start exporter, listen on {}".format(int(args.port)))
httpd = make_server('', int(args.port), app)
httpd.serve_forever()
while True:
time.sleep(5)