Install

How to install and configure the collector and its pre-requisites.

Prepare: XIQ-SE API Account

The collector will retrieve all managed switches and their read-only credentials from your XIQ-SE (aka XMC). To query them, you will need to create an API account to be used by the collector.
Navigate to Administration-->Users
Add a new Authoriation Group at the bottom of the screen. To configure the minimal access rights required, follow this example. Then use the top navigation to go to Client API Access and add a new API Client. Make sure to choose the Authorization Group created in the previous step. Note down the Client ID and Client Secret!

Prepare: XCC / WING API Account

For the collector to be able to retrieve data from your Wifi controllers it requires a user/API account with read-only authorization. Create those credentials and have them ready for the config steps lateron.
For XCC controllers: got to the account management page, choose an admin account (or reate a new one) and click on "Generate new API Key". This will download a JSON file which contains a "key" (=username) and "secret" (=password).
For WING controllers: make sure to create a full Admin account as the "REST-API" account doesn't give us access to the NOVA API!

Prepare: WING "Nova" API

The collector uses some of the newer API end-points provided by the "Nova" API. Make sure to enable Nova service in your controller's config. Example ouptput once Nova is enabled:
VX9000-1(config-management-policy-default)*#show context
management-policy default
no telnet
no http server
nova
https server
rest-server
ssh

Import OVA

The collector is provided as a single VMWare OVA file. Download the file as provided to you by your Extreme Networks representative and import it into your VMWare environment. The OVA requires only a single networks interface. Make sure the connected virtual network allows the collector to communicate with your switches, Wifi controllers and XIQ SiteEngine.
The OVA is configured to request an IP via DHCP so once it booted up you can connect to the VMWare WebConsole to see the IP it received.

Configure Networking

Use your browser to navigate to the Webmin interface. Example:
https://10.8.31.10:12321/
Login using the default account: root/Extreme!

Navigate to Networking-->Network Configuration, click on Network Interfaces and click on eth0 to configure the main interface.

Under IPv4 choose Static configuration and configure a static IP that you prefer.

Click the Save button below. Do not apply this config change yet.

Go back to Network Configuration and click on Routing and Gateways --> configure the default gateway for eth0. Click the Save button.

You can also configure your own DNS server by clicking on Hostname and DNS Client.

Finally, click the Apply Configuration button!

Login and modify the root password

Login to the collector VM using username root and password Extreme!.
First things first: change the root password! Type: passwd and provide a more secure password for the root account.

Configure the Timezone

Check the current timezone
ls -l /etc/localtime
and
date

List all available timezones by browsing through these folders
ls -l /usr/share/zoneinfo/
ls -l /usr/share/zoneinfo/Europe/

Change the timezone to Berlin (for example)
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

And reboot for the changes to take effect:
init 6

Configure the Time

Check the current time
date

If it is off from the real time, you can configure it using the following format:
date MMDDhhmmyyyy.ss

Example to set the time to 17:22:00 on June 14th 2022
date 061417222022.00

Configure Proxy (optional)

If you want to connect the VM to the internet (to download software updates) and this requires the use of an HTTP proxy then follow these instructions: Docker HTTP/HTTPS Proxy

Configure the Collector

The collector has all of its config files in folder /opt/energy-collector. There are two files to configure:

  1. Environment file: .env

  2. The .env file is hidden but your can still see it using ls -la and edit it using nano .env. You must edit at least these config parameters:
    • TZ
    • Configure your timezone as a string here to tell the DB in which timezone it operates. To see a list of all supported timezones take a look at the file available_timezones
    • COLLECTOR_CUSTOMER_ID
    • Configure your company name here. Can be long or short form but should be unique (very short abbreviations might be used by multiple customers which will be an issue later on).
    • COLLECTOR_COLLECTOR_ID
    • This can be the name of the location where you installed this collector instance. Could also be something like headquarter. This can be used to distinguish data from two or more collector instances.
    • XIQ_SE_* settings
    • As a minimum, you will have to set this feature to "True" if you want to pull your device info from your XIQ-SE and configure the XIQ-SE IP, client_id and client_secret (API credentials create in an earlier step).
  3. Main config file: config.toml
    • CustomerId
    • Configure your company name here. Can be long or short form but should be unique (very short abbreviations might be used by multiple customers which will be an issue later on).
    • CollectorId
    • This can be the name of the location where you installed this collector instance. Could also be something like headquarter. This can be used to distinguish data from two or more collector instances.
    • XiqSE settings
    • As a minimum, you will have to set this feature to "True" if you want to pull your device info from your XIQ-SE and configure the XIQ-SE IP, ApiClientId and ApiClientSecret (API credentials create in an earlier step).
    • XIQ Controllers
    • If you want to pull data from your XIQ-Controllers you can configure one [[CollectorXiqC.Controllers]] section per controller. Make sure each section has a unique IP address and the credentials are correct.

Start the Collector

Since this is your first time starting the collector and some backend services will take a few seconds to properly configure themselves, it is recommended to start those backend services first using this command:
docker compose up -d timescaledb grafana loki mqtt
Wait a minute and then check whether those backend services are still running (and not restarting):
docker ps
To start the rest of the app including all data collectors run
docker compose up -d
Wait a minute and then use your browser to navigate to the dashboard at
http://Collector-IP:3000
and login with admin/admin.