Export logs from rsync daemon logs as influxdb timeseries
Project description
rsyncstats
Parse rsync server logs, compute statistics and store in influxdb.
Installation
ringserverstats is distributed on PyPI https://pypi.org as a universal wheel.
$ pip install rsyncstats
Database preparation
Postgresql
Choose a database and a user able to insert rows. Then create the table as follow :
create table rsyncstats (
timestamp timestamp without time zone,
sentbytes bigint,
receivedbytes bigint,
totalbytes bigint,
module VARCHAR(256),
login VARCHAR(16),
endtime timestamp,
geohash VARCHAR(12),
hosthash VARCHAR(12),
hostname VARCHAR(256),
clientip VARCHAR(16)
);
Influxdb (deprecated)
configuration
This program will fill 2 measurements. You should configure a database for these, and configure a user with write priviledges.
Prepare database
First, create a database, a user, and retention policie.
create database rsyncdb
create user rsync with password 'rsyncer'
grant write on rsyncdb to rsync
grant read on rsyncdb to rsync
create retention policy rp_rsyncevents on rsync duration 1w replication 1
create retention policy rp_rsyncstats on rsync duration 520w replication 1
Usage
To work properly, this program needs the following environment variables set :
INFLUXDB_HOST
: The host name or adress of influxdb serverINFLUXDB_PORT
: The port number of influxdb serverINFLUXDB_USER
: The influxdb user to authenticate toINFLUXDB_PASS
: The password to authenticate withINFLUXDB_DB
: The database name containing the metricINFLUXDB_VERIFY_SSL
: Set toyes
orno
to verify SSL connectionINFLUXDB_SSL
: Should the connection go to https ?LOGLEVEL
: value can be DEBUG,INFO,WARNING,ERROR
$ ringserstats txlogs.log
Explanations
The logs from rsync are metrics suitable for a timeserie database. The idea is to parse the logs, as in the exemple below, and to generate values to insert into an influxdb timeseries database.
The file grafana-dashboard.json
can be imported into grafana to visualize this timeserie.
Used tags in influxdb :
show tag keys from rsyncevents
show tag keys from rsyncstats
The rsyncevents measure has several tags :
- module : the rsync moduled accesed during transfer
- geohash : location of the client in geohash format
- hosthash : a hash of the client ip (usefull to correlate the clients requests)
- city : an english city name
Because storing events in the longterm is not very relevant, the rsyncstats
measurement groups all events by day, by host and by network. The retention policies discribed above will manage the time your data get stored in influxdb.
Details
An event :
{'timestamp': '2019-03-05 03:28:03',
'pid': '27615',
'logtype': 'rsync to',
'sentbytes': '184494',
'receivedbytes': '19414234',
'totalbytes': '19609565',
'module': 'PORTAL-PRODUCTS-RW',
'directory': '/seedlinkplots/',
'user': 'resifportal',
'hostname': 'resif-vm30.ujf-grenoble.fr',
'clientip': '152.77.1.6',
'endtime': '2019-03-05 03:28:08',
'geohash': 'u0h0fpnzj9ft',
'city': 'Grenoble',
'hosthash': "b'khadLrK6HR6v'"
}
License
rsyncstats
is distributed under the terms of the GPL v3 or later. See LICENSE file.
Build
python3 setup.py sdist
Test
tox
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.
Source Distribution
File details
Details for the file rsyncstats-0.11.1.tar.gz
.
File metadata
- Download URL: rsyncstats-0.11.1.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1c529b5d265b5df53a73477e728c511e86ef76632d5c0cd919f5c1f353d284b |
|
MD5 | 264d8b47b385426fe22fe4a7cc16903e |
|
BLAKE2b-256 | d56824a8918657a33cb71babc7d9c983ac9efc20445acd762c9d51026d0b0851 |