ADVA

This is an old article no longer maintained, please see official web site https://nabox.org/

The Advanced Dashboard Virtual Appliance (ADVA for short) is a packaged solution that provides NetApp metrics collection, archiving and graphing at the same time. It is based on the following products :

  • Harvest (Additional performance and capacity related data collection)
  • Graphite (metrics database)
  • Grafana (Web-UI for dashboards)

The ADVA is configured through a web interface, where you define your NetApp systems credentials and OCUM servers.

Note that you will need the files for NetApp Harvest and NMSDK before you can do anything with ADVA. Once installed and on the network, point your browser to https://ip_address/admin and click on the wrench tool icon on the upper right hand corner, then « Maintenance ». From here you can directly upload the files you got from the NetApp site.

Harvest is available on ToolChest, and NMSDK is available from the download section of NetApp web site.

 

Additional Documentations

LDAP / AD Authentication configuration

Introduction Video

Installation

Installing the virtual appliance is as easy as deploying an OVA template into your vSphere infrastructure. Just point your browser to your vSphere Web Client, and use the « Deploy OVF Template » feature.

Use the contextual menu to find the "Deploy OVF Template" option.

Use the contextual menu to find the « Deploy OVF Template » option.

That’s pretty much it. Just wait for the deployment to finish and boot the appliance.

Basic configuration

Web Interface

Use the web interface on https://<dhcp ip>/admin/ to configure the virtual appliance.

If you do not know the IP address, open a console and it will be displayed on the login prompt. It is also indicated by VMware on the VM properties.

Console configuration

Use the console configuration if the web interface is not reachable for some reason.

By default, the virtual appliance uses DHCP. You can use the console, or ssh to connect with « admin » account. The default password is « Netapp01« .

Note that the root password if you ever need it is « NetappGrafanaVA »

  [Main Menu]

  You are using appliance build X62 (2015-07-22)

  [1] Configure Network (Current IP: 192.168.99.20)
  [2] Set Timezone (America/New_York)
  [3] Set Host Name
  [4] Advanced/Maintenance

  [5] Configure Harvest

  [6] Power Off
  [7] Reboot

  [x] Quit

  Choice : 1

Use menu 1 to configure the network.

  [Network Configuration]

  Method [static|dhcp]: static
  IP Address       : 192.168.99.20
  Netmask          : 255.255.255.0
  Default GW       : 192.168.99.1
  DNS 1            : 192.168.99.10
  DNS 2 (or enter) : 
  Use a proxy for internet access ? (y/n)n

Once the network is configured, point your web browser to https://ip_address/admin and you can finish the installation and configure other aspects (password, timezone, clusters, OCUM servers, etc…)

OPM configuration

Now you need to point your OnCommand Performance Manager (OPM) installation to the virtual appliance.

This is fairly easy, you have to connect to OPM 1.1 console and log in with the maintenance account.

Last login: Mon Dec  8 15:52:16 2014

  OnCommand Performance Manager Maintenance Console

  Version    : 1.1.0RC1
  System ID  : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  Status     : Running

 Main Menu
 ---------
    1 ) Upgrade (Disabled. Must be run on virtual machine console.)
    2 ) Network Configuration
    3 ) System Configuration
    4 ) Support/Diagnostics
    5 ) Unified Manager Connection
    6 ) External Data Provider

    x ) Exit

 Enter your choice: 6

The magic happens in menu 6 « External Data Provider ». This is where you setup the information for the external database :

 External Server Connection Menu
 -------------------------------
    1 ) Display Server Configuration
    2 ) Add / Modify Server Connection
    3 ) Modify Server Configuration
    4 ) Delete Server Connection

    b ) Back
    x ) Exit

 Enter your choice: 2

  Current Connection Settings:
       Server Name or IP = 
       Server Port       = 

Do you wish to continue? (y/n):y

    External Server Name or IP    : 192.168.99.20
    External Server Port          : 2003

  Here are your settings:
       External Server Name or IP    :  192.168.99.20
       External Server Port          :  2003

  Are these settings correct? (y/n/q):y


Press any key to continue.

Last, you need to specify the level of detail you want exported. This is done through choice 3 and picking « DRILL_DOWN » if you want the maximum level of details :

 External Server Connection Menu
 -------------------------------
    1 ) Display Server Configuration
    2 ) Add / Modify Server Connection
    3 ) Modify Server Configuration
    4 ) Delete Server Connection

    b ) Back
    x ) Exit

 Enter your choice: 3

  Current Connection Configuration:
       Statistics group  = RESOURCE_UTILIZATION
       Vendor tag        = netapp-performance
       Transmit interval = 5
       Enable/disable    = ENABLE

Do you wish to continue? (y/n):y

  Current statistics group: RESOURCE_UTILIZATION
       0 - PERFORMANCE_INDICATOR
       1 - RESOURCE_UTILIZATION
       2 - DRILL_DOWN
    Statistics group id   : 2
    Vendor tag            : netapp-performance
  Current transmit interval: 5
       5/10/15 minutes
    Transmit interval     : 5
  Current transmit status: ENABLE
       0 - DISABLE
       1 - ENABLE
    Enable/disable        : 1

  Here are your settings:
       Statistics group    :  DRILL_DOWN
       Vendor tag          :  netapp-performance
       Transmit interval   :  5
       Enable/disable      :  ENABLE

  Are these settings correct? (y/n/q):y

Connect to the following address to have a view on the metrics hierarchy in Graphite UI: http://<virtual_appliance>/graphite/

"netapp-performance" in Graphite

« netapp-performance » in Graphite

After 10mn or so, you should see the first metrics showing up in Graphite UI in a new folder called « netapp-performance »

For 7-mode systems, make sure that TLS is enabled by setting :

options tls.enable on

41 réflexions sur « ADVA »

  1. William Artus

    Yann
    I just installed the ADVA Great Product, I had called netapp the other day and asked them for a copy and they directored me to your website with the password to install the appliance, and it worked perfect, and just wanted to say thank you, I do have an issue, I cannot collect capacity data, I have opm 2.1 and ocum6.4. opm2.1 is fully intergrated with ocum6.4 , and opm2.1 points to grafana ip for an external data source. and I get a not running under ADVA, Home, Harvest OCUM Servers, any Ideas or help would be very much appreciated .
    Thanks
    Bill Artus

    Répondre
  2. Stuart Walker

    Nice work! FInally overcame all the hurdles…..
    So we have to load harvest through the GUi – does that mean we can update harvest when a new version is released? (I’m thinking future versions of ONTAP support – I had to hack our harvest 1.2 install to get it working with 9.0)

    Répondre
    1. ybizeul Auteur de l’article

      Yes, I’m working with Chris Madden to make sure new versions of Harvest can be uploaded to the VA, with the same method, to update it.
      1.3 is available on ToolChest that works with latest ONTAP and OCUM by the way!

      Répondre
  3. Thomas Marteau

    Hi, nice work that reminds me of SexiGraf. In Graphite, I have all the metrics the OCUM has but no dashboard are drawn. Any idea ?

    Répondre
      1. Thomas Marteau

        I saw nothing. After adding the OCUM only, I had the netapp-performance collection but no dashboard in grafana. I had to add the clusters one by one into the systems section to have dashboards. In graphite, I see now that I have also a netapp collection.

        Répondre
        1. ybizeul Auteur de l’article

          Yes, the performance collection is only performed through the systems.
          As an optional task, you can configure OCUM servers for the capacity metrics to be collected as well, but performance is a minimum.

          Répondre
  4. Jan Kisla

    Hello,
    thank you very much for this, this is an excellent work! You have saved me A LOT of work and time. One question. Now I have harvest 1.2.2, which is not the latest version (1.3. is), but when updating to 1.3 from the web form, I am getting error 5. So version 1.3 is not supported (yet)?

    Répondre
    1. ybizeul Auteur de l’article

      That’s because you are trying to install the downloaded zip. The instructions should be more clear.

      You need to uncompress this, and only upload the .tgz it contains

      Répondre
      1. Stuart Walker

        Gah, I wish I’d read the comments again before I tried to set it up….
        No matter, I did work out that I had to extract it first 🙂

        You’ve even updated ADVA since I downloaded the OVA – but the update was very easy to apply!

        Répondre
  5. davekorns

    Awesome packaging and user interface! I started out today with adva 2.1.5 and went through basic vapp deployment and config without a hitch. In adva web maintenance it was warning me NMSDK and Harvest were not installed. So I downloaded NMSDK 5.6 (all platforms choice) and harvest 1.3. I uploaded and installed NMSDK 5.6 (.zip) which went fine ending with green and Installed. However, when I attempted to upload the harvest 1.3 package I didn’t guess right. First I tried the .zip, then the .deb … then I re-listened to the video and heard .tgz … so used that one and bingo. Awesome work Yann.

    Répondre
    1. ybizeul Auteur de l’article

      Thank you, that part needs to be simplified. I will probably accept the packages downloaded from ToolChest directly, in the next release!

      Répondre
  6. Stuart Walker

    Hi Yann,

    I’ve got the latest version up and running quite happily, but I had a couple of questions 🙂

    1. I’ve been playing with AD Authentication, but I can’t get to the file system as you’ve documented in the LDAP configuration, and when I try to enter the settings in the Maintenance/Settings it doesn’t seem to save (I enter the settings, hit submit, it says « LDAP now configured » – but if I navigate away and come back it’s all blank again.)

    I was running 2.1.5, but updated to 2.1.6-nightly (2016-11-27) this afternoon, but it still acts the same

    2. the VM got hung up last night – the CPU hit 100% at about 10pm, and basically would not respond to ping, web, or on the VMWARE console. A forced reset brought it back but odd…

    3. What are the support options? I’m assuming that NetApp doesn’t offer official support and we’re reliant on your good graces and the NetApp Community 🙂

    (And thankyou for your efforts on this appliance!)

    Cheers,
    Stuart

    Répondre
  7. Charles Behm

    I am looking to use this for our monitoring, I currently use the Performance Monitor and unified manager systems but I don’t like the look and feel of that vs the older DFM for 7mode. I manage government systems that do no allow server access to the internet and two classified systems that have no internet access at all. Will the ADVA, Harvest, Graphite and Grafana still be an option to use?

    Répondre
  8. Peter Hofbauer

    Hi,

    the appliance really looks nice, but I’m not a 100% sure if it meets our requirements.

    We currently have a lot of « Netapp Harvest virtual machines » running in our affiliate locations worldwide.
    Those Netapp Harvests are sending data to our central Grafana/Graphite server.
    Would it be possible to use the appliance in this way as well (in the affiliate locations)?
    I’m asking, because it really would be nice to use this appliance as « standard virtual machine » in all the locations.

    Thank you in advance for your reply 😉

    Répondre
    1. ybizeul Auteur de l’article

      Yes, it would definitely be possible, but you would have to alter the settings for the Harvest configuration file manually, just once. I know I’m late answering this, late me know if you need further explanations.

      Répondre
  9. Daniel Greenslade

    Hi there,

    Has anyone had this error before, trying to import the dashboards? Looks like the auth key works but ..

    root@grafana:/opt/netapp-harvest# /opt/netapp-harvest/netapp-manager -import
    [OK ] Will import dashboards to [http://localhost:3000]
    [OK ] Dashboard directory is [/opt/netapp-harvest/grafana]
    [ERROR ] Failed to import dashboard [db_netapp.json] due to error: 500 addr is not a string
    [ERROR ] -Response was :addr is not a string at /usr/share/perl/5.20/IO/Socket/IP.pm line 453.

    Répondre
  10. Andreas

    Hi Yann,

    after Update to Version 2.2b i get the following error when i call the Graphite UI: http:///graphite/

    « Graphite encountered an unexpected error while handling your request. »

    Traceback (most recent call last):
    File « /usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py », line 39, in inner
    response = get_response(request)
    File « /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py », line 249, in _legacy_get_response
    response = self._get_response(request)
    File « /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py », line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
    File « /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py », line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
    File « /opt/graphite/webapp/graphite/composer/views.py », line 35, in composer
    profile = getProfile(request)
    File « /opt/graphite/webapp/graphite/util.py », line 66, in getProfile
    return default_profile()
    File « /opt/graphite/webapp/graphite/util.py », line 132, in default_profile
    ‘password’: ‘!’})
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/manager.py », line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/query.py », line 475, in get_or_create
    return self._create_object_from_params(lookup, params)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/query.py », line 513, in _create_object_from_params
    six.reraise(*exc_info)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/query.py », line 505, in _create_object_from_params
    obj = self.create(**params)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/query.py », line 399, in create
    obj.save(force_insert=True, using=self.db)
    File « /usr/local/lib/python2.7/dist-packages/django/contrib/auth/base_user.py », line 80, in save
    super(AbstractBaseUser, self).save(*args, **kwargs)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/base.py », line 796, in save
    force_update=force_update, update_fields=update_fields)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/base.py », line 824, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/base.py », line 908, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/base.py », line 947, in _do_insert
    using=using, raw=raw)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/manager.py », line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/query.py », line 1045, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
    File « /usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py », line 1054, in execute_sql
    cursor.execute(sql, params)
    File « /usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py », line 64, in execute
    return self.cursor.execute(sql, params)
    File « /usr/local/lib/python2.7/dist-packages/django/db/utils.py », line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
    File « /usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py », line 64, in execute
    return self.cursor.execute(sql, params)
    File « /usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py », line 337, in execute
    return Database.Cursor.execute(self, query, params)
    IntegrityError: NOT NULL constraint failed: auth_user.last_login

    NAbox Virtual Appliance
    Version 2.2b (2016-12-22) Visit Web Page

    NetApp SDK v5.6 installed Visit Web Page (NetApp Login Required)
    Harvest v1.3 installed Visit Web Page (NetApp Login Required)
    Grafana v4.0.2 installed Visit Web Page
    Graphite v0.10.0 rc1 installed Visit Web Page

    Regards
    Andreas

    Répondre
  11. praganesh

    Hey , Good work,

    One thing i see missing is capacity information. Is there way to get capacity information at array /aggr/vol level for total /allocated/used capacity.

    Which help on capacity planning and analytics for application utilization.

    Please let me know , if anyway i can collect that information into this setup.

    Répondre
    1. ybizeul Auteur de l’article

      If you configure your OCUM server, then it will start collecting capacity information and populate it in the various dashboards.

      Répondre
    1. ybizeul Auteur de l’article

      For version 2.4, as ElasticSearch and Logstash are included, yes, there will be some documentation with « reasonable » configuration to ship some logs to NAbox.

      Répondre
  12. Stuart

    Wow, I just noticed the size for 2.4b – It’s almost double 2.3!
    What lovely new features do we have waiting for us?

    Répondre
    1. ybizeul Auteur de l’article

      I would love to keep the VA small, and unfortunately I wasn’t able as much as I wanted!

      The big increase in size is due to the addition of ElasticSearch and Logstash to the virtual appliance, which means great new features I think it’s worth it!

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *