Instrument service for logs and metrics
Project description
taylor-instrument service
A service based on Pip.Services toolkit that collect logs and metrics by Elasticsearch and Prometheus.
- pip-services3-commons
- pip-services3-components
- pip-services3-rpc
- pip-services3-prometheus
- pip-services3-elasticsearch
Use
Install the Python package as
pip install taylor-instrument
Configure environment variables:
- INSTRUMENTATION_PORT - port number for instrument service (default: 8082)
- ELASTICSEARCH_ENABLED - enable ElasticSearch logger
- ELASTICSEARCH_INFO - loge level (default: info)
- ELASTICSEARCH_SOURCE - source (context) name
- ELASTICSEARCH_PROTOCOL - connection protocol: http or https (default: http)
- ELASTICSEARCH_SERVICE_HOST - host name or IP address (default: localhost)
- ELASTICSEARCH_SERVICE_PORT - port number (default: 9200)
- PROMETHEUS_ENABLED - enable prometheus logs and metrics
- PROMETHEUS_PROTOCOL - connection protocol: http or https (default: http)
- PROMETHEUS_SERVICE_HOST - host name or IP address (default: localhost)
- PROMETHEUS_SERVICE_PORT - port number (default: 9090)
- PUSHGATEWAY_PROTOCOL - connection protocol: http or https (default: http)
- PUSHGATEWAY_METRICS_SERVICE_HOST - host name or IP address (default: localhost)
- PUSHGATEWAY_METRICS_SERVICE_PORT - port number (default: 9091)
For more environment configs see above links.
Then use loggers and metrics in your services:
from pip_services3_commons.errors import ApplicationException
from pip_services3_components.log import LogLevel
from taylor_instrument import instrument, logger, counters
# Configure instrument
instrument.set_correlation_id_from_file('./component.json')
instrument.logger.set_level(LogLevel.Debug)
def info_service():
counters.increment_one('my_service.info.calls')
timing = counters.begin_timing('my_service.info.exec_time')
logger.warn(message='warning', correlation_id='my custom correlation id')
logger.debug('debug')
logger.trace('Trace')
logger.error(ApplicationException(FileNotFoundError('My exception1')), 'my error message')
logger.info('my custom correlation id', 'Info')
logger.fatal(ApplicationException(IOError('My exception2')), 'Fatal exception')
timing.end_timing()
info_service()
The loggers have next signatures:
See CustomCompositeLogger
def log(self, level, error, message, correlation_id=None, *args, **kwargs):
def fatal(self, error, message, correlation_id=None, *args, **kwargs)
def error(self, error, message, correlation_id=None, *args, **kwargs)
def warn(self, message, correlation_id=None, *args, **kwargs)
def info(self, message, correlation_id=None, *args, **kwargs)
def debug(self, message, correlation_id=None, *args, **kwargs)
def trace(self, message, correlation_id=None, *args, **kwargs)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.