OddEye Linux Agent

OE-Agent2 is python2 metrics collection daemon for OddEye monitoring suite.


We have developed OE-Agent to support number of other OpenSource backends :





It uses REST and Pickle protocols with bulk uploads to talk to endpoints, so make sure your endpoint is configured properly.

Main idea behind OddEye Agent is simplicity and less as possible dependencies, it is tested on Debian and Ubuntu systems, but should work on any Linux system.

To install OddEye Agent just clone our repository. Base program requires only pycurl as external dependency, which exists in main repositories of the most o modern Linux distributions. On Debian/Ubuntu you can install it via apt-get

apt-get install python-pycurl

On RedHat/CentOS family systems:

yum install python-pycurl

If nether above works you can use python pip:

pip install pycurl

Some checks require additional modules, for example: check_mysql requires MySQLdb. So make sure to install it, before using MySQL check

Debian/Ubuntu :

apt-get install python-mysqldb

Python pip:

pip install MySQL-python

Make your changes, in config.ini and run

./oddeye.sh start

Python daemon process will start, run all python scripts from checks_available directory as well as all check_* files from scripts_available directory.

Main Config

OddEye client (OddEye Agent) uses ini files to configure main service and all checks. Configs are in sections.

Section [SelfConfig] contains base config parameters, like checks interval, log/pid file location as well as some tags.

check_period_seconds: 5
log_file: /tmp/oddeye.log
pid_file: /tmp/oddeye.pid
cluster_name: testcluster
host_group: testing
tmpdir: /tmp/oddeye_tmp
debug_log : False
run_user : oddeye
max_cache : 50000

We strongly recommend to run OddEye Agent via unprivileged user account. You can create user account for OddEye Agent from command line, like this:

useradd -r -s /bin/false -d /dev/null oddeye

The next step is to setup cluster_name and host_group tags. This is done for better manageability and easy filtration of metrics in OddEye UI.

Next step is to setup right backend for OddEye Agent. Its done in section [TSDB] of config.ini file.

Back End Config

OddEye server is native backend, but agent also supports several other open source backends. Only one TSDB can be set at once, so make sure that all other are ether commented out or deleted from config file.


To make it run, you need to change uuid to one, which you got during registration and start OddEye Agent, optionally change run user from oddeye.sh and start

url : https://api.oddeye.co/oddeye-barlus/put/tsdb
uuid : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sandbox: False
err_handler: 2
tsdtype: OddEye
`./oddeye.sh start`


OddEye Agent is designed to send metrics with small bulks, so you should enable chunked requests in opentsdb.conf .

tsd.http.request.enable_chunked = true

Then configure OddEye Agent with OpenTSDB backend

tsdtype: OpenTSDB
address: http://opentsdb_address:4242
datapoints: /api/put
user: netangels
pass: bololo
auth: False

OpenTSDB is designed to run in private networks and does not support authentication, but if you want it, you can use proxy server like HAProxy or NginX to provide HTTP Basic Auth. In order to do that, configure your proxy with HTTP Basic Auth and forward al requests to endpont. Next set auth: True for [TSDB] and restart OddEye Agent. If you not need authentication, set auth param to False and some placeholders as user/pass.
Do not delete user/pass/auth parameters.


address: http://kairosdb_address:8088
datapoints: /api/v1/datapoints
user: netangels
pass: bololo
auth: True
tsdtype: KairosDB

Enable or disable auth: in accordance to your KairosDB setup


address: http://influxdb_address:8086
auth: False
user: netangels
pass: bololo
database: test
tsdtype: InfluxDB

Enable or disable authentication.

Graphite Carbon

address: carbon_host:2004
user: netangels
pass: bololo
auth: false
tsdtype: Carbon

OddEye Agent uses Carbon pickle, the default port is 2004.

For all types of RESTful backends (OpenTSDB, KairosDB, InfluxDB) config fields user/pass are mandatory, even if you do not use authentication at backend. So Do not delete authentication parameters, just write something meaningless and use it as placeholder.

Configure modules

By default all checks are disabled. To enable check you need to create symlink, or copy check module from OE-AGENT_HOME/checks_available to OE-AGENT_HOME/checks_enable folder ans restart OddEye Agent

For example to enable system checks, that most likely you would like to do on Linux systems, do following:

cd $OE-AGENT_HOME/checks_enabled
ln -s ../checks_available/{check_cpustats.py,check_disks.py,check_load_average.py,check_memory.py,check_network_bytes.py ./
cd ../
./oddeye.sh restart 

Some of checks need to be configured before you are able to use it, for example check_nginx.py needs to know NginX status url and username password, if authentication on NginX status is enabled. Config files for NginX check is conf/webservers.ini . You can find more information about supported web servers configuration and OddEye Agent at our WEB Servers configuration guide

stats: /nginx_status
auth: True
user: netangels
pass: bololo

Some checks depend on non standard python modules, like check_mysql.py depends on MySQL-python, so be sure to install all dependent modules, before running checks. You can find information about needed python modules at our documentation as well, as inside checks as comments.
```text head checks-available/check_mysql.py

''' This check required Python MySQLDB, On Debian like systems do apt-get install python-mysqldb or pip install MySQL-python ''' ````

Please also take a little time to read Custom modules guide, if you want to create your custom checks, or our API Guide, if you plan to use home made OddEye client.