BigIP Report Old
Problem this snippet solves:
This codeshare has been deprecated due to a hosting platform corruption. I have moved code and conversation to a new record (on the same original URL) https://devcentral.f5.com/s/articles/bigip-report
can be Overview
This is a script which will generate a report of the BigIP LTM configuration on all your load balancers making it easy to find information and get a comprehensive overview of virtual servers and pools connected to them.
This information is used to relay information to our NOC and developers to give them insight in where things are located and to be able to plan patching and deploys. I also use it myself as a quick way get information or gather data used as a foundation for RFC's, ie get a list of all external virtual servers without compression profiles.
The script has been running on 13 pairs of load balancers, indexing over 1200 virtual servers for several years now and the report is widely used across the company and by many companies and governments across the world.
It's easy to setup and use and only requires guest permissions on your devices.
Demo/Preview
Please note that it takes time to make these so sometimes they're a bit outdated and they only cover one HA pair. However, they still serve the purpose of showing what you can expect from the report.
Interactive demo
http://loadbalancing.se/bigipreportdemo/
Screen shots
The main report:
The device overview:
Certificate details:
How to use this snippet:
This codeshare has been deprecated due to a hosting platform corruption. I have moved code and conversation to a new record (on the same original URL) https://devcentral.f5.com/s/articles/bigip-report
Installation instructions
BigipReport REST
This is the only branch we're updating since middle of 2020 and it supports 12.x and upwards (maybe even 11.6).
Download: https://loadbalancing.se/downloads/bigipreport-v5.5.4.zip
Documentation, installation instructions and troubleshooting: https://loadbalancing.se/bigipreport-rest/
Docker support
This will be the recommended way of running bigipreport in the near future. It's still undergoing testing but it's looking really good so far.
https://loadbalancing.se/2021/01/05/running-bigipreport-on-docker/
BigipReport (Legacy)
Older version of the report that only runs on Windows and is depending on a Powershell plugin originally written by Joe Pruitt (F5).
BigipReport (Stable):
https://loadbalancing.se/downloads/bigipreport-5.3.1.zip
BigipReport (BETA): https://loadbalancing.se/downloads/bigipreport-5.4.0-beta.zip
iControl Snapin: https://loadbalancing.se/downloads/f5-icontrol.zip
Documentation and installation instructions:
https://loadbalancing.se/bigip-report/
Upgrade instructions
Protect the report using APM and active directory
Written by DevCentral member Shann_P:
https://loadbalancing.se/2018/04/08/protecting-bigip-report-behind-an-apm-by-shannon-poole/
Got issues/problems/feedback?
Still have issues? Drop a comment below. We usually reply quite fast. Any bugs found, issues detected or ideas contributed makes the report better for everyone, so it's always appreciated.
---
Also trying out a Discord channel now. You're welcome to hang out with us there:
Code :
85931,86647,90730
Tested this on version:
13.0
- Maneesh_72711Cirrostratus
Ok for the working one I got below: - Here's the virtual server profile list
profile_type profile_context profile_name ------------ --------------- ------------ PROFILE_TYPE_FAST_L4 PROFILE_CONTEXT_TYPE_ALL /Common/fastL4 PROFILE_TYPE_CLIENT_SSL PROFILE_CONTEXT_TYPE_CLIENT /Common/clientssl-insecure-compatible PROFILE_TYPE_SERVER_SSL PROFILE_CONTEXT_TYPE_SERVER /Common/crypto-client-default-serverssl PROFILE_TYPE_TCP PROFILE_CONTEXT_TYPE_ALL /Common/tcp
Here's the object type
Method invocation failed because [iControl.LocalLBVirtualServer] does not contain a method named 'get_source_address_translation_type'.
While for the non-working one I got below: -
2017-01-11 06:04:14 Adding orphaned pools to the virtual server list 2017-01-11 06:04:14 Getting data from IP 2017-01-11 06:04:15 iControl session successfully established 2017-01-11 06:04:15 Getting hostname 2017-01-11 06:04:15 Hostname is ltm-hostname 2017-01-11 06:04:15 Caching LTM information from ltm-hostname 2017-01-11 06:04:15 Getting partition information 2017-01-11 06:04:15 Caching node data in partition Common 2017-01-11 06:04:15 Caching monitors in partition Common 2017-01-11 06:04:16 Caching data group lists in partition Common 2017-01-11 06:04:17 Caching Pools in partition Common 2017-01-11 06:04:28 Caching iRules in partition Common on LTM 2017-01-11 06:04:37 Caching Virtual servers in partition Common Exception calling "get_profile" with "1" argument(s): "There is an error in XML document (1118, 79)." At C:\inetpub\wwwroot\Bigipreport-4.3.0.ps1:964 char:3 + [array]$virtualserverprofilelist = $($virtu ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : InvalidOperationException
Here's the virtual server profile list Here's the object type You cannot call a method on a null-valued expression. At C:\inetpub\wwwroot\Bigipreport-4.3.0.ps1:971 char:1 + $virtualserverprofilelist.gettype() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
Method invocation failed because [iControl.LocalLBVirtualServer] does not contain a method named 'get_source_address_translation_type'.
- Maneesh_72711Cirrostratus
Yes Patrick this is part of a cluster and now I tried on another non-viprion unit which is again a cluster tried on primary and results are same no SSL info being populated. The above output is from the same cluster.
Yeah, this really confirms that you indeed does not get any profiles. I'm afraid F5 support is the next step.
/Patrik
- Maneesh_72711Cirrostratus
Cheers lemme try that route. Thanks for your help and it is a great script you have created.
Thanks mate, please report back with the findings (even if they're not positive)?
/Patrik
That one will most likely come soon. Stay tuned. :)
- ZdendaCirrus
Good job!
- Vikneswaran_709Nimbostratus
Hi patrick,
Below is the error. Please help to fix it.:
Out-File : Could not find a part of the path 'C:\inetpub\wwwroot\json\pools.json.tmp'. At C:\inetpub\wwwroot\Bigipreport-4.3.0.ps1:1385 char:54 + ... -Depth 5 | Out-File -Encoding "UTF8" $($Global:poolsjsonpath + ".tmp ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (:) [Out-File], DirectoryNotFoundException + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
2017-02-16 08:34:24 Failed to update the temporary pool json file 2017-02-16 08:34:24 Writing temporary monitor json object to C:\inetpub\wwwroot\json\monitors.json.tmp Out-File : Could not find a part of the path 'C:\inetpub\wwwroot\json\monitors.json.tmp'. At C:\inetpub\wwwroot\Bigipreport-4.3.0.ps1:1393 char:57 + ... -Depth 5 | Out-File -Encoding "UTF8" $($Global:monitorsjsonpath + ". ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (:) [Out-File], DirectoryNotFoundException + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
2017-02-16 08:34:24 Failed to update the temporary monitor json file 2017-02-16 08:34:24 Writing temporary virtual server json object to C:\inetpub\wwwroot\json\virtualservers.json.tmp Out-File : Could not find a part of the path 'C:\inetpub\wwwroot\json\virtualservers.json.tmp'. At C:\inetpub\wwwroot\Bigipreport-4.3.0.ps1:1402 char:63 + ... -Depth 5 | Out-File -Encoding "UTF8" $($Global:virtualserversjsonpat ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (:) [Out-File], DirectoryNotFoundException + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
2017-02-16 08:34:24 Failed to update the temporary virtual server json file 2017-02-16 08:34:24 Writing temporary irules json object to C:\inetpub\wwwroot\json\irules.json.tmp Out-File : Could not find a part of the path 'C:\inetpub\wwwroot\json\irules.json.tmp'. At C:\inetpub\wwwroot\Bigipreport-4.3.0.ps1:1414 char:56 + ... -Depth 5 | Out-File -Encoding "UTF8" $($Global:irulesjsonpath + ".tm ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (:) [Out-File], DirectoryNotFoundException + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
2017-02-16 08:34:24 Failed to update the temporary irules json file 2017-02-16 08:34:24 Writing temporary data group list json object to C:\inetpub\wwwroot\json\datagrouplists.json.tm Out-File : Could not find a part of the path 'C:\inetpub\wwwroot\json\datagrouplists.json.tmp'. At C:\inetpub\wwwroot\Bigipreport-4.3.0.ps1:1435 char:64 + ... -Depth 5 | Out-File -Encoding "UTF8" $($Global:datagrouplistjsonpath ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (:) [Out-File], DirectoryNotFoundException + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
2017-02-16 08:34:24 Failed to update the temporary data group lists json file 2017-02-16 08:34:24 Failed to write the temporary files, waiting 2 minutes and trying again PS C:\inetpub\wwwroot>
- paul_dawson_258Nimbostratus
Vikneswaran did you extract the directory which says "Move the content of this folder to the configured report root" to the web root which is configured in the XML file?
- Vikneswaran_709Nimbostratus
Hi Paul, Thanks for fixing the issue. Its my mistake. I extracted the files and its successful now. But when i open the default html file () which is written by the script, its showing only the four Dots keep rolling. Am i using the right procedure to open the file ? Please advice.
Here is the output:
2017-02-20 11:48:49 Adding orphaned pools to the virtual server list 2017-02-20 11:48:49 Verifying load balancer data to make sure that no load balancer is missing 2017-02-20 11:48:49 No missing loadbalancer data was detected, compiling the report 2017-02-20 11:48:50 No iRule links to add to the dropdown 2017-02-20 11:48:50 No iRule definitions to add to the body 2017-02-20 11:48:50 Writing report temporary file to C:\inetpub\wwwroot\default.html.tmp 2017-02-20 11:48:50 Writing temporary pools json object to C:\inetpub\wwwroot\json\pools.json.tmp 2017-02-20 11:48:50 Writing temporary monitor json object to C:\inetpub\wwwroot\json\monitors.json.tmp 2017-02-20 11:48:50 Writing temporary virtual server json object to C:\inetpub\wwwroot\json\virtualservers.json.tmp 2017-02-20 11:48:50 Writing temporary irules json object to C:\inetpub\wwwroot\json\irules.json.tmp 2017-02-20 11:48:50 Writing temporary data group list json object to C:\inetpub\wwwroot\json\datagrouplists.json.tmp 2017-02-20 11:48:50 Successfully wrote the temporary files 2017-02-20 11:49:00 Updating the report with the new data 2017-02-20 11:49:00 The report has been successfully been updated PS C:\inetpub\wwwroot>