This repository supports the VES collector interface in O-RAN. It
makes use of three containers, the ves-collector container that
collects VES events posted by other parts of the O-RAN solution,
grafana, which is used to display measurement (PM) data posted
by other entities and influxdb which is used to persist the data
received by the collector.

PREREQUISITES:

The prerequisite to use this solution is that you need Docker
running on the machine, where you want to run these containers.

BUILD:

To build the solution, you need to do the following in the collector
folder.

% make

RUN:

There are two scripts in this folder. A ves-start.sh script
which starts the VES collector and other parts. A ves-stop.sh script
can be used to stop the collector.


Following steps are required for self-signed certificate.
 # Create ves-certificate directory on the host system using command "mkdir ~/ves-certificate".
 # Go to ves-certificate directory and use below commands to create self-signed certificate files.

		openssl genrsa -out vescertificate.key 2048
		openssl req -new -key vescertificate.key -out vescertificate.csr
		openssl x509 -req -days 365 -in vescertificate.csr -signkey vescertificate.key -out vescertificate.crt

**Note**: Third party certificates can be installed by overwriting the file vescertificate.csr, vescertificate.key, and vescertficate.crt in ~/ves-certificate directory of the host system.

