f5devcentral / BigStats

Push BIG-IP stats to remote destinations: http(s), statsd, etc
MIT License
14 stars 9 forks source link

Bigstats issue 0.5.1-0012 Large export #96

Open tstrupp opened 5 years ago

tstrupp commented 5 years ago

Hello,

Virtual F5 running 14.1.0.2

I have the above BIG IP system failing to send a few items from the LARGE configuration. Doesn't seem to be getting SSL stats, or pool stats, VIP stats are fine. The errors I am seeing in the logs are as follows;

Fri, 07 Jun 2019 18:11:17 GMT - info: [BigStats - DEBUG] - err: No SSL profiles associated with: Common Fri, 07 Jun 2019 18:11:17 GMT - info: [BigStats - ERROR] - getPoolMemberStats(): TypeError: Cannot read property 'nestedStats' of undefined Fri, 07 Jun 2019 18:11:17 GMT - info: [BigStats - ERROR] - buildLargeStatsObject(): TypeError: Cannot read property 'nestedStats' of undefined Fri, 07 Jun 2019 18:11:17 GMT - info: [BigStats - ERROR] - pullStats() - Promise Chain Error: TypeError: Cannot read property 'nestedStats' of undefined Fri, 07 Jun 2019 18:11:17 GMT - info: [BigStats - ERROR] - getPoolMemberStats(): TypeError: Cannot read property 'nestedStats' of undefined Fri, 07 Jun 2019 18:11:17 GMT - info: [BigStats - ERROR] - buildLargeStatsObject(): TypeError: Cannot read property 'nestedStats' of undefined

The config I have posted to my bigip in question is as follows; { "config": { "destination": { "protocol": "statsd", "address": "x.x.x.x", (removed address) "port": 8125 }, "size": "large", "interval": 10, "enabled": true, "debug": true } }

Any insight on to why this is failing, or if this is a version specific bug? Thanks!

dija12 commented 5 years ago

No clue.. ;) ^ I know that guy.

npearce commented 5 years ago

Looks like F5 moved some objects around in the v14.1 API.

tstrupp commented 5 years ago

Thanks Nathan. Any recommendations on how I can remedy this issue?

npearce commented 5 years ago

The first line in the log is just a notice that the particular VIP had no SSL profile attached. The second line is the problem that caused the rest of the error messages.

What I believe the problem to be, take a look at these lines from bigstats.js:

        // Object structure changed in v14
        if (majorVer > 13) {
          // Crafting v14 url like this: https://localhost/mgmt/tm/ltm/virtual/~Common~myVip/stats
          entryUrl = vipResource.selfLink.split('?').shift() + '/stats';
        } else {
          // Crafting Pre-v14 url like this: https://localhost/mgmt/tm/ltm/virtual/~Common~myVip/~Common~myVip/stats
          let name = slicedPath.split('/').slice(-1)[0];
          let entryUri = `${slicedPath}/${name}/stats`;
          entryUrl = `https://localhost${entryUri}`;
        }

Note the URL change in the API. As you can see, the VIP stats objects were moved in v14.0.0, so teh above lines of code was written to check the BIG-IP version and adjust accordingly. It looks like the Pool Member resource stats were moved in v14.1.x........

You could verify this by comparing the results of a GET request on 14.1 with an earlier BIG-IP version.

I no longer have access to any F5 technology so can't product a patch for you, sorry. This is an F5 owned project so you'll need to take this up with F5.

Thanks.