Git Product home page Git Product logo

indigo-dc / monitoring Goto Github PK

View Code? Open in Web Editor NEW
5.0 11.0 2.0 1.2 GB

Repository containing the Monitoring component for the Indigo DataCloud Platform. It includes a few scripts for supporting Zabbix server management, the wrapper for the Zabbix API and several probes implemented for Zabbix, in order to collect metrics from several sources.

License: Apache License 2.0

Java 93.11% Shell 0.49% Python 5.89% Dockerfile 0.52%
deep-hybrid-datacloud

monitoring's Introduction

Indigo Monitoring Framework

The Monitoring Framework is a set of tools which allow performing several monitoring operations in the platform resulting from the INDIGO-Datacloud project (https://www.indigo-datacloud.eu/). The Monitoring Framework is based on Zabbix, as the collector of the monitoring information coming from different sources, due to its maturity, its community support and its flexibility for different environments.

The Monitoring Framework is divided in several main parts:

  • The Zabbix server (with the corresponding configuration and some support scripts);
  • The Zabbix wrapper, created for enabling a REST API for Zabbix;
  • Several probes, with different monitoring purposes (OCCI, Heapster, etc.).

This repository contains the supporting scripts for the Zabbix server (in order to perform automatic backups of the Zabbix database and configuration), the wrapper to be deployed with Zabbix (as a way to facilitate integration) and the probes released in the first version: a probe for monitoring OCCI interfaces of Infrastructure Providers and a probe for monitoring the Kubernetes cluster where the Indigo platform is deployed (by means of the Heapster tool).

1 Zabbix Wrapper

1.1 Main Features

The first release of Zabbix Wrapper provides a Restful version of zabbix (which natively comes with JSON-RPC 2.0 protocol) APIs and potentially allows to develop a wrapper another products, therefore behaving as an adapter. For indigo project purposes is meant to be the middle layer between Monitoring Framework and zabbix so that it can:

  • Create a host on zabbix platform (corresponding to, from Indigo point of view, a specific Cloud Provider)
  • Get information about hosts (in indigo corresponding to specific providers)
  • Get information about hostgroups (in indigo groups of providers)
  • Get information about metrics based on configuration setup on zabbix

All these information are just returned in form of a REST response API which wrap zabbix ones.

1.2 Pre-Requisites

In order to get information and successfully monitor a specific cloud provider it has to be both registered on zabbix (via "create host" wrapper API) and there must be a zabbix agent installed and properly configured (for communicate with zabbix server) on board of a machine otherwise an exception will be thrown.

1.3 Installation

When having the war and a clean VM with Ubuntu at disposal, install the docker manager:

sudo apt-get update
sudo apt-get install wget
sudo wget -qO- https://get.docker.com/ | sh

Install the application server (Wildfly 9.x) right from directory into which there is the docker file for giving the proper instructions and deploy the webapp

docker build -t indigodatacloud/zabbix-wrapper .
docker logs -f `docker run -d --name=indigo-zabbix-wrapper -e ZABBIX_URL=http://<url-zabbix>/api_jsonrpc.php -e ZABBIX_USERNAME=<zabbix-username> -e ZABBIX_PASSWORD=<zabbix-password> -p 8080:808 indigodatacloud/zabbix-wrapper` 

The deploy will be successfull if the endpoints written in the property file are correct and the wrapper can reach the server itself

In case wrapper is not a war --> Compile the code

To compile the project you need to be in the same folder as the pom.xml file and type:

mvn clean install

This command compiles the code and skip the tests. If you want to compile the code running the tests too you can use:

mvn clean install -DskipTests

At compilation completed, the zabbix-wrapper.war file will be inserted in the target folder.

Build the Docker image

The generated war must then be placed in the docker folder.

You can build the docker image with the command

docker build -t indigodatacloud/zabbix-wrapper/path/to/the/docker/folder
docker logs -f `docker run -d --name=indigo-zabbix-wrapper -e ZABBIX_URL=http://<url-zabbix>/api_jsonrpc.php -e ZABBIX_USERNAME=<zabbix-username> -e ZABBIX_PASSWORD=<zabbix-password>  --name zabbix-wrapper -h zabbix-wrapper  -p 8080:808 indigodatacloud/zabbix-wrapper` 

1.4 Configuration

The only configuration needed for the project is concerned with the parameters to be passed when launching docker run command as the following:

  1. ZABBIX_URL: zabbix url in the format http://{domain-name}/api_jsonrpc.php
  2. ZABBIX_USERNAME: Zabbix username
  3. ZABBIX_PASSWORD: Zabbix password

2 Zabbix Probes

The first release of the Monitoring Framework provides three probes for monitoring concrete aspects of the Indigo Platform:

The documentation for installation, configuration and running of each probe is described in their own page. To develop new probes, please see the probe development guide.

monitoring's People

Contributors

alvarolopez avatar damian1976 avatar dmichelotto avatar fjaviernieto avatar jjparaire avatar maricaantonacci avatar mikereply avatar orviz avatar rutpal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monitoring's Issues

MesosZabbixProbe RPM does not work on CentOS 7.5

MesosZabbixProbe rpm does not work on CentOS 7.5

yum install https://github.com/indigo-dc/Monitoring/raw/1.02/zabbix-probes/mesos-zabbix-probe/MesosZabbixProbe-1.01-1.noarch.rpm

or the new version

yum install https://github.com/indigo-dc/Monitoring/raw/master/zabbix-probes/mesos-zabbix-probe/MesosZabbixProbe-1.2-1.noarch.rpm

give the same error

Transaction check error:
file /usr/bin from install of MesosZabbixProbe-1.01-1.noarch conflicts with file from package filesystem-3.2-25.el7.x86_64

and

Transaction check error:
file /usr/bin from install of MesosZabbixProbe-1.2-1.noarch conflicts with file from package filesystem-3.2-25.el7.x86_64

Documentation not clear

It is not clear how to use the tag "providers.exceptions" in order to specify different properties for the cloud providers.
Can you please provide some examples?

No error control when not finding the config file

When the Zabbix probes are not able to find the configuration file in the expected location (/etc/zabbix/) the PropertiesManager class fails and no property can be loaded. Since the jar file already contains a default config file, the class should take that default file in case the customized user config file cannot be found.
On the other hand, some control mechanism should take into account the configuration properties could be empty.

Documentation not clear

It is not clear how to use the tag "providers.exceptions" in order to specify different properties for the cloud providers.
Can you please provide some examples?

Cloud providers discovery

Why do you need to specify the list of providers in the configuration file oszones.yml?
The list of providers is available in CMDB:

# curl -X GET http(s)://cmdb_endpoint/provider/list
{"total_rows":14,"offset":4,"rows":[
{"id":"provider-IFCA-LCG2","key":["provider"],"value":{"name":"IFCA-LCG2"}},
{"id":"provider-RECAS-BARI","key":["provider"],"value":{"name":"RECAS-BARI"}}
]}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.