Skip to main content

Flask Monitor module

Project description

Flask-monitor

Generate time of execution and send data on multi destination

  • log

  • influxdb (and so grafana)

  • rabbitmq

  • zeromq

  • statsd

Installation

pip install flask-monitor

Or

git clone https://github.com/fraoustin/flask-monitor.git
cd flask-monitor
python setup.py install

Usage

from flask import Flask, request
from flask_monitor import Monitor , ObserverLog
import logging

app = Flask(__name__)
monitor = Monitor('monitor', __name__)
app.register_blueprint(monitor)
monitor.add_observer(ObserverLog())

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.logger.setLevel(logging.INFO)
    for h in app.logger.handlers:
        h.setLevel(logging.INFO)
    app.run(port=8080)

You can add a filter of event

from flask import Flask, request
from flask_monitor import Monitor , ObserverLog

def filterExt(event):
    return event.response.status_code == 400

app = Flask(__name__)
monitor = Monitor('monitor', __name__)
app.register_blueprint(monitor)
monitor.add_observer(ObserverLog(filter=filterExt))

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(port=8080)

You can create your own observer

from flask import Flask, request
from flask_monitor import Monitor , ObserverLog

class myeventlog(ObserverMetrics):

    def __init__(self):
        ObserverMetrics.__init__(self, filter=self.filter)

    def action(self, event):
        logging.getLogger().error(event.json)

    def filter(self, event):
        return event.response.status_code != 400

app = Flask(__name__)
monitor = Monitor('monitor', __name__)
app.register_blueprint(monitor)
monitor.add_observer(myeventlog())

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run(port=8080)

Influxdb

pip install influxdb

Usage

from flask_monitor.influxdb import ObserverInfluxdb
monitor.add_observer(ObserverInfluxdb(host='127.0.0.1',
                                    port=8086,
                                    user='root',
                                    password='root',
                                    db='mydb'))

RabbitMq

pip install pika

Usage

from flask_monitor.rabbitmq import ObserverRabbit
import pika

monitor.add_observer(ObserverRabbit(host='127.0.0.1',
                            credentials = pika.PlainCredentials('guest', 'guest')))

ZeroMq

pip install zmq

Usage

from flask_monitor.zeromq import ObserverZmq
import zmq

monitor.add_observer(ObserverZmq(context=zmq.Context(),
                                    addr='tcp://127.0.0.1:8080'))

Statsd

pip install statsd

Usage

from flask_monitor.statsd import ObserverStatsd
monitor.add_observer(ObserverStatsd(host='127.0.0.1', port=8125, format="{RequestUrl}"))

V. 0.2.0

  • change manage logger of ObserverMetrics

V. 0.1.3

  • hotfix for name pkg

V. 0.1.2

  • manage logger default

V. 0.1.1

  • manage setup.py generic

V. 0.1.0

  • init

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask-monitor-0.2.0.tar.gz (16.3 kB view details)

Uploaded Source

File details

Details for the file flask-monitor-0.2.0.tar.gz.

File metadata

  • Download URL: flask-monitor-0.2.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for flask-monitor-0.2.0.tar.gz
Algorithm Hash digest
SHA256 47933676774d95a38073ef886a3889baddd0e9fd21ea28f1137dba566e89435c
MD5 59f458da0453aa1a56f57c57e3593160
BLAKE2b-256 cb2f47d1d5495cd801c3600b839ecbeaab20955c05e09c8fcaae4253a357d2b5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page