Skip to main content

EIDA nodes statistics aggregator

Project description

# EIDA Statistics aggregation

This project should provide unified statistics about EIDA nodes usage.

## Aggregating data

Each EIDA node prepares an aggregation of their logging file using the same script.

This aggregation result is sent to a central database through a webservice provided by a central node

### Install and execute

This program is intended for python3.6 and more.

From [Pypi](https://pypi.org/project/eida-statistics-aggregator/)

pip install eida-statistics-aggregator eida_stats_aggregator –help

Alternatively, if you want to install with pipenv , run

pipenv install pipenv shell pip install -e . eida_stats_aggregator –help

For now, the log file from seiscomp is expected to be a list of JSON entries compressed with BZIP2.

### Exemples

Aggregate one bz2 seiscomp logfile:

eida_stats_aggregator –output-directory aggregates fdsnws-requests.log.2020-11-02.bz2

Also available with stdin:

echo “fdsnws-requests.log.2020-11-02.bz2” | eida_stats_aggregator –output-directory

You can also agregate several logfiles:

eida_stats_aggregator –output-directory aggregates fdsnws-requests.log.2020-11-02.bz2 fdsnws-requests.log.2020-11-03.bz2

### Registering the aggregation to the central statistics service

In order to register, you first need a token. Please ask for one by submitting an issue in https://github.com/eida/etc/issues/

When you have a valid token, you can send all your aggregation files with curl :

gunzip -c aggregationfile.json.gz | curl –header “Authentication: Bearer MYSECRETTOKEN” –header “Content-Type: application/json” -d “@-” https://ws.resif.fr/eidaws/statistics/1/dataselectstats

The aggregation script can do this for you on the fly :

eida_stats_aggregator -o aggregates fdsn-requests.log.2020-11-02.bz2 –token MYSECRETTOKEN –send-to https://ws.resif.fr/eidaws/statistics/1/dataselectstats

### Test

From the projet’s root directory run

pipenv install pipenv shell python -m pytest tests/test_aggregator.py -s

### Aggregation problems

#### The Count distinct problem

Some information requested by EIDA need to count distint occurences of information (an IP, a country). A naive approach counting distinct occurences on each day and each node can’t be used to count the distinct occurences at a global scale nor for another timewindow.

Enters HyperLogLog, an algorithm allowing to estimate occurences for different timeframe. hll is implemented in Python and PostgreSQL this is why this project uses both technologies.

#### Anonimization

We want to anonimize every data that can link to a person. This is why IP adresses are hashed using the same algorithm on each datacenter, in order to have consistant statistics.

## Ingesting data

A webservice receiving POST request and ingesting the result in a database

## Creating reports

This code create automatic reports from the database

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

eida-statistics-aggregator-0.5.4.tar.gz (6.9 kB view details)

Uploaded Source

File details

Details for the file eida-statistics-aggregator-0.5.4.tar.gz.

File metadata

  • Download URL: eida-statistics-aggregator-0.5.4.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/53.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.2

File hashes

Hashes for eida-statistics-aggregator-0.5.4.tar.gz
Algorithm Hash digest
SHA256 d8473f9f7117e754a5adddea363d40f6dc6253068153bc96ee5fc53ef70115c1
MD5 7286d19d8254dae890a07e50f0185e65
BLAKE2b-256 0a708825b58f5d3898b9156977365939737b0637411ad59074ae0bf9335dab56

See more details on using hashes here.

Supported by

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