This project contains a C library that supports interfacing to AT&T's ECOMP Vendor Event Listener. For an overview of ECOMP, see the ECOMP White Paper.
Developed in 2016 for AT&T by:
Current Maintainers:
#The description about important directories are given here
evel - This contains the code for VES library for VES5.4.1, sample agents
VESreporting_vFW - This is the sample virtual firewall agent
VESreporting_vLB - This is the sample virtual load balancer agent
evel/evel-library/code/evel_library - Code for VES library 'evel'
evel/evel-library/code/VESreporting_HB - Sample json based heartbeat event generated periodically
evel/evel-library/code/VESreporting_fault - Sample json based fault event based on low byte/packet count on interface.
evel/evel-library/code/VESreporting_syslog - Sample json based syslog event based on pattern being logged into any file
evel/evel-library/code/VESreporting_vFW - Sample json based Firewall application that generates measurement event periodically.
This library supports following events. The corresponding factory functions to generate that event is also mentioned against it
Install gcc, libcurl3-dev packages as below
sudo apt-get install gcc sudo apt-get install libcurl3-dev
Clone the code from demo repository
#Compile VES library Go to evel/evel-library/bldjobs directory and run the below commands make all ==> to create the VES library make package ==> to create the VES package if needed
FYI - 'make install' can also be given to make a package and install the package in another machine - see evel/evel-library/bldjobs/Makefile for more details
After compilation VES libraries are generated and are available at below location evel/evel-library/libs/x86_64
#Loading VES the library Go to evel/evel-library/libs/x86_64 directory and run below commands sudo cp libevel.so /usr/lib sudo ldconfig
#Compiling agent code After successful compiling of VES library and loading the library, go to agent directory and run 'make all' For json heartbeat agent
cd evel/evel-library/VESreporting_HB make all
For all other jason based agents (VESreporting_fault, VESreporting_syslog and VESreporting_vFW) also, the compilation to be carried out in the same manner as mentioned above.
But for agents in VESreporting_vFW5.0 and VESreporting_vLB5.0, special care to be taken as below
#Run the agent
sudo chmod +x go-client.sh sudo ./go-client.sh
Each application that wants to send events would call evel_initialize() function to initialize the parameter with evel library. For more details about the parameters passed, see the evel/evel-library/code/evel_library/evel.h file. The public APIs to the library are defined in evel.h
EVEL_ERR_CODES evel_initialize(const char * const fqdn, int port, const char * const bakup_fqdn, int bakup_port, const char * const path, const char * const topic, int ring_buf_size, int secure, const char * const cert_file_path, const char * const key_file_path, const char * const ca_info, const char * const ca_file_path, long verify_peer, long verify_host, const char * const username, const char * const password, const char * const bakup_username, const char * const bakup_password, const char * const source_ip, const char * const bakup_source_ip, EVEL_SOURCE_TYPES source_type, const char * const role, int verbosity ) { fprintf(stderr, "Failed to initialize the EVEL library!!!"); exit(-1); }
After successful running of evel_initialize() API, call the APIs to generate the events.
For fault event generation, below APIs would be called. For other events see the APIs listed in evel/evel-library/code/evel_library/evel.h
EVENT_FAULT * fault = evel_new_fault("Fault_vFW-ATT-LinkdownError", "fault0001", "My alarm condition", "It broke very badly", EVEL_PRIORITY_NORMAL, EVEL_SEVERITY_MAJOR, EVEL_SOURCE_HOST, EVEL_VF_STATUS_PREP_TERMINATE); if (fault != NULL) { evel_fault_type_set(fault, "Bad things happen..."); evel_fault_interface_set(fault, "My Interface Card"); evel_fault_addl_info_add(fault, "name1", "value1"); evel_fault_addl_info_add(fault, "name2", "value2"); evel_rc = evel_post_event((EVENT_HEADER *)fault); if (evel_rc != EVEL_SUCCESS) { EVEL_ERROR("Post failed %d (%s)", evel_rc, evel_error_string()); } }