Learn F5 Technologies, Get Answers & Share Community Solutions Join DevCentral

Filter by:
  • Solution
  • Technology
Clear all filters
code share

BigIP Report

Problem this snippet solves:

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 (including those specified in iRules).

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 pair of load balancers, indexing over 1200 virtual servers for over two years now and the report is widely used across the company.

It's easy to setup and use.

An interactive demo can be found here:

http://loadbalancing.se/bigipreportdemo/

A video of an older version can be found here:

https://youtu.be/mWsmjmY_tbE

Image Text

Current noted feature requests in the comment section:

  • Allow for adding cluster members and return configuration from the active one
  • VIP status column
  • Hypervisor support - Add the host and automatically populate the guests
  • Direct links to objects in the mgmt UI

Please let me know if I missed one?

How to use this snippet:

I've been running into problems with the ASM of devcentral and will move the installation instructions to another site for now. Sorry about the inconvenience.

Fast track instructions available here:

https://loadbalancing.se/bigip-report/#Fast_track_installation_instructions

Detailed instructions here:

https://loadbalancing.se/bigip-report/#Detailed_installation_instructions

Tested on Version:
11.5
Comments on this Snippet
Comment made 13-Oct-2015 by danielpenna 260
That is awesome, have run it up ourselves as a PoC and will set it up into production. The only thing extra I would like to see ( and will try and get it working ourselves ) is the iRules associated with a Virtual Server and the ability to see that iRule.
0
Comment made 16-Oct-2015 by thennessey 79
Excellent! Thanks for this!
0
Comment made 16-Oct-2015 by Patrik Jonsson 3060
Thanks guys, glad you liked it!
0
Comment made 20-Oct-2015 by cookie2323 0
i like this i am newwwwww...........................
0
Comment made 09-Dec-2015 by Andrew78 12
This worked out great for me. My only comment is it wasn't abundantly clear on how to configure multiple load balancers. The syntax tripped me up since there was no example for multiple. I was trying commas, commas and parentheses... Finally figured out it's a semi-colon to delimit each load balancer and the parentheses needs to be changed to a curly brace. In case anyone else gets stuck on this... Example: $Global:bigipdict = @{ "172.16.0.1" = "LB1"; "172.16.0.2" = "LB2"; "172.16.0.3" = "LB3" }
0
Comment made 09-Dec-2015 by Patrik Jonsson 3060
Thank you for your comment Andrew, I will make it easier in the next version.
0
Comment made 22-Dec-2015 by Walter Kacynski 922
Can this script be adapted to report on "sys db" values? We have a need to reconcile any differences in this information since this falls outside of a sync group.
0
Comment made 22-Dec-2015 by Patrik Jonsson 3060
Yeah, it could. But I'm not sure how this would be presented and/or be beneficial as a permanent part in the report? I believe though that it would be easy to generate a comparison table. Can check it out tomorrow after work.
0
Comment made 23-Dec-2015 by Patrik Jonsson 3060
Here you go: http://pastebin.com/7Le9JFue /Patrik
0
Comment made 03-Feb-2016 by tonytroubleshooter@gmail.com 0
Hi Patrick, this would work wonders in our environment. I am having issues getting it running...Do you have some simple instructions or quick guide to getting this up and running? I Powershell minimum version 3.0 - Check F5 Powershell Snap-in - Check A web server of your choice - ? You mean an F5 load-balancer of our choice to report from? I am surprised of how long F5 has had Load balalncers, but not a simplified way or guided way, to report configuration settings on them in our environment.. i.e. VIP's, pools, pool members, nodes, nodes IP, nodes port. Any help is much appreciated. Thanks again, Tony
0
Comment made 03-Feb-2016 by Patrik Jonsson 3060
Oh dear. The project information disappeared 2 months ago or so (devcentral bug) and it seems like I did not restore the installation instructions. Will do that right away!
0
Comment made 03-Feb-2016 by Patrik Jonsson 3060
For some reason I can't update the snippet. While waiting for the DC superheroes I'll add the info here. Brace yourself for no formatting at all! Instructions: 1. Copy the content of the Web folder to the root of your Web server. 2. Open the script and configure it. Minimum configuration is $user, pass, bigipdict and reportpath. Report path should point to the root of your web server. I recommend using a separate user for the report generation (Only guest access needed). 3. Run the script. 4. Done! Additional instructions: One thing that I have seen in the comments is that the bigipdict can be a bit tricky to declare. I will simplify that in a later version but for now I'll add some extra information here: Example: $Global:bigipdict = @{"192.168.100.1" = "mybigip.domain.local";"192.168.100.11" = "mybigip2.domain.local";} If you run into problems, just leave feedback in the comment section below. I'll do my best to help as soon as I can.
0
Comment made 03-Feb-2016 by Patrik Jonsson 3060
Hope that answered your questions Tony!
0
Comment made 04-Feb-2016 by tonytroubleshooter@gmail.com 0
Thank you very much Patrik! I am now moving forward. For the web server, I am actually working off a Xeon system in the NOC, and want to just use it as the web server, I started up ISS, and have the inetpub folder and all. But I dont have a default.html in my webroot folder.. do I need to just create it? Thanks.. oh here are the first few errors I am getting.. :) hopefully it helps... S C:\BigipReport3.8> C:\BigipReport3.8\NewBigIPReport3.8.ps1 Exception setting "OutputEncoding": "The handle is invalid. " At C:\BigipReport3.8\NewBigIPReport3.8.ps1:291 char:1 + [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException + FullyQualifiedErrorId : ExceptionWhenSetting Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string. At C:\BigipReport3.8\NewBigIPReport3.8.ps1:363 char:20 + if(Test-Path -Path $Global:NATFilePath){ + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidati EmptyStringNotAllowed,Microsoft.PowerShell.Commands.TestPathComm and Initialize-F5.iControl : Could not initialize connection with supplied information At C:\BigipReport3.8\NewBigIPReport3.8.ps1:802 char:13 + $success = Initialize-F5.iControl -Username $user -Password $pass -HostName $bi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (10.8.96.175:String) [Initialize-F5.iControl], Exception + FullyQualifiedErrorId : 2,iControlSnapIn.CmdLet.Global.InitializeiControl
0
Comment made 04-Feb-2016 by Patrik Jonsson 3060
I will make a fresh install myself and test it. :)
0
Comment made 04-Feb-2016 by Patrik Jonsson 3060
Good news is that I fixed it. Bad news is that I can't update the file on devcentral! Will report to the DC guys.
0
Comment made 04-Feb-2016 by Patrik Jonsson 3060
Ok, you can try this link until they have fixed the problem with the forum: http://www.filedropper.com/bigipreport39 First time using file dropper for me so download and scan it at virustotal or something first. :) /Patrik
0
Comment made 25-Feb-2016 by Patrik Jonsson 3060
Sorry mate, I keep chasing them but no news yet.
0
Comment made 28-Feb-2016 by Patrik Jonsson 3060
Chased them again just now.
0
Comment made 01-Mar-2016 by Adam Embrey 0
Patrick, I am getting the following error Exception setting "SecurityProtocol": "Cannot convert null to type "System.Net.SecurityProtocolType" due to invalid enumeration values. Specify one of the following enumeration values and try again. The possible enumeration values are "Ssl3, Tls"." i have tried to edit line 287 to contain SSl3 or Tls and nothing seems to fix this. can you please advise? Thank you
0
Comment made 01-Mar-2016 by Patrik Jonsson 3060
Hi Adam! Which version of powershell are you using? Have you tried setting the variable $Global:useTLS12 to $false (or removing those 3 lines altogether)? Since I still can't update the project via DC I'll leave the last "stable" version in my dropbox for now: https://dl.dropboxusercontent.com/u/17343231/BigipReport3.9.zip Note that you need to re-configure the script a bit with the new version as it uses a list instead of dictionary when specifying the F5s. /Patrik
0
Comment made 04-Mar-2016 by RossVermette 269
Hey, Love the script, but I have an issue when the pool members are defined using fqdn nodes. (Where you have a non and ephemeral node defined to represent the same server) The Pool/Members displays all nodes in the table even though they do not belong to the pool. any ideas on how to fix this?
0
Comment made 04-Mar-2016 by Patrik Jonsson 3060
Hi! Thanks! Keep an eye out for the next version. There's going to be quite a bit of improvement in usability. About your issue, could you please post a ltm config example (feel free to use dummy objects) which I can use to replicate the issue? /Patrik
0
Comment made 07-Mar-2016 by Patrik Jonsson 3060
Allright! Now I can update the codeshare again!
0
Comment made 07-Mar-2016 by Patrik Jonsson 3060
New versions out. Hope you like the new one! :)
0
Comment made 08-Mar-2016 by RossVermette 269
Hey Patrik, Here is the sample conf: ltm pool /Common/ServicesUAT1_pool { description "" load-balancing-mode fastest-node members { /Common/nodename01.domainname.ca:80 { fqdn { autopopulate enabled name nodename01.domainname.ca } } /Common/nodename02.domainname.ca:80 { fqdn { autopopulate enabled name nodename02.domainname.ca } } } monitor /Common/HTTP-Head-Monitor } ltm node /Common/nodename01.domainname.ca { description "" fqdn { autopopulate enabled name nodename01.domainname.ca } } ltm node /Common/nodename02.domainname.ca { description "" fqdn { autopopulate enabled name nodename02.domainname.ca } }
0
Comment made 08-Mar-2016 by Patrik Jonsson 3060
I added the config and changed the nodes to facebook and google. Is this what you're seeing? http://imgur.com/rYnIAmp /Patrik
0
Comment made 10-Mar-2016 by RossVermette 269
Sort of, it would show me all the fqdn nodes defined, even though they did not belong to that pool. (I haven't tried the latest 4.0 code, but was happening in the 3.9)
0
Comment made 10-Mar-2016 by Sebastian Maniak 262
This is great, looking forward to building it out in my lab
0
Comment made 11-Mar-2016 by Patrik Jonsson 3060
Ross, could you please try version 4.0 and let me know the result? /Patrik
0
Comment made 11-Mar-2016 by Patrik Jonsson 3060
Thank you Sebastian! :)
0
Comment made 11-Mar-2016 by RossVermette 269
I tried the 4.0 code but I seem to have issues with the following: access.log shows 10.0.2.2 - - [11/Mar/2016:15:11:22 -0600] "GET /json/virtualservers.json HTTP/1.1" 404 514 "http://127.0.0.1:22280/default.html" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" For some reason, the "json/virtualservers.json" doesn't get created. (The other json/monitors.json and pools.json do get created) I don't see any errors when I run the powershell script either. (Even enabled debug loggin, and no errors are thrown)
0
Comment made 11-Mar-2016 by Patrik Jonsson 3060
I think I know what it is. New version in a few minutes.
0
Comment made 11-Mar-2016 by Patrik Jonsson 3060
It was a referal to a future function that broke it. Try the new version? /Patrik
0
Comment made 16-Mar-2016 by RossVermette 269
Sorry for the Delay, but you Rock! Latest version fixed the issue I was seeing with the fqdn members. I love the pool details view.(especially the curl/netcat links)
0
Comment made 17-Mar-2016 by Patrik Jonsson 3060
Thanks for your kind words! You might want to check out this one too? https://devcentral.f5.com/codeshare/web-ui-tweaks
0
Comment made 27-Mar-2016 by DebenB 1
thanks for posting such helpful content.. Tried this , its awesome. I this i can see client ssl-profile shows only YES and NO. I will like to add the profile name so thinking to modify below section ; please suggest if that work or any other changes needed. "@ } if($vs.sslprofile -ne "None"){ $Global:html += @" <td> $($vs.sslprofile) ---> Modified from Yes to the added content. </td> "@ } else { $Global:html += @" <td> No </td> "@ Also please guide how i can add VIP enabled / disabled status and poo/node availability status like UP or down. Regards Deben
0
Comment made 27-Mar-2016 by Patrik Jonsson 3060
Thank you for your kind words and suggestions. What you seek will come in the next version. I working on making a similar setup for the virtual servers as I did with the pool details. The issue I had with writing out the name of the SSL profile is that it would take up too much horizontal space in the table. What you suggested seems to be correct though and you're free to make any modifications to the code that you like. :)
0
Comment made 27-Mar-2016 by DebenB 1
Thanks Patrik, Eagerly waiting for next version :).. Meanwhile i will try bit modification if that works for me :) Regards A Cisco guy trying powershell .. ha ha ..:)
0
Comment made 26-Apr-2016 by Andy Edwards 2
I am getting the following error every time I run the script. It appears that the variable $pools is never declared. You cannot call a method on a null-valued expression. At C:\temp\Bigipreport4.0.1\Bigipreport-4.0.1.ps1:1262 char:6 + if(!$pools.loadbalancer.contains($Loadbalancer)){ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
0
Comment made 27-Apr-2016 by Patrik Jonsson 3060
Hi Andrew! Which variables have you configured. What happens if you in the powershell window enter "$pools" and press enter. I suspect that you've missed something in the config section.
0
Comment made 04-May-2016 by mike 54
Fantastic! - is it possible to auto refresh? / make it dynamic? - also in our particular scenario, we want to monitor one particular pool, and would be great if that could be made to be the default page? (with node view expanded? ) many thanks
0
Comment made 09-May-2016 by Patrik Jonsson 3060
Hi Mike! Thank you for your nice comments! Making it dynamic (getting realtime data) is too slow, but you could make it auto refresh. As it is today though you should bet a yellow/red button saying that a new report is available. I chose that way because I figured it would be annoying to look at a report data post and suddenly the page reloaded. Regarding the start page I might suggest that you use the share feature of the report and use that link to access the report. Would that work?
0
Comment made 11-May-2016 by Andy 52
I have been trying to run this against a list of 45 F5, with ~750 VIPs but with no success. The script interrogates the F5 correctly and parses the information but no files are output, is there an upper limit on the amount of files that can be parsed? Also I tried running this in separate scripts and noticed that the output uses html absolute paths, rather than relative paths within the web server, if this were resolved I could split this into multiple scripts which seemed to resolve my issue.
0
Comment made 11-May-2016 by Patrik Jonsson 3060
Hi Andy! That's quite many machines. :) You say the F5 parses the information from the F5's which means that the data collection should work. You can double check this by entering "$pools" in the Powershell prompt after the script has been running. If you get a long list of pools you should be good to go in terms of that. Another thing that could be an issue could be if one of the load balancers has not returned any data to the script (refer to the last section of the script where $loadbalancerdatamissing is set). Double check the execution to check for errors, or manually set the $loadbalancerdatamissing to $true before the check occurs.
0
Comment made 12-May-2016 by DebenB 1
@ paul.dawson Think you have to adjust PS ExecutionPolicy ; please check below Get-ExecutionPolicy –List ---> List all policies Set-ExecutionPolicy AllSigned -Scope CurrentUser ---> Set execution policy for current user
0
Comment made 12-May-2016 by Patrik Jonsson 3060
Hi Paul Which version of TMM are you running? The powershell script has a section where you can enable/disable TLS1.2. If the F5 powershell snap-in is not able to negotiate a cipher it will throw an exception that indicates invalid credentials, but this is NOT true. Also, get-credentials will not help you in this case as the user and password variables expects a string. I would also recommend you to run the script as a non-admin use later when you have made everything work as it does not require and special permissions on the server (just access to write the html files to the web root). Please update this thread if you still have problems.
0
Comment made 13-May-2016 by Patrik Jonsson 3060
Could be newer version of powershell than I use. I will issue a patch soon. Hang on. :)
0
Comment made 13-May-2016 by Patrik Jonsson 3060
Try the new version and please let me know if that solved it for you? Out of curiosity, could you please tell me the PS-version running on your server? Would like to figure out if it's a policy setting of version issue. /Patrik
0
Comment made 14-May-2016 by Patrik Jonsson 3060
Hi Paul! The color setting you're looking for is in /css/bigipreportstyle.css. :) /Patrik
0
Comment made 16-May-2016 by Craig Gauntlett 0
Hi Patrik Is there a way to show the SNAT List/pools/Translation and associated config and also if AutoMap it turned on for VS? Craig
0
Comment made 16-May-2016 by Patrik Jonsson 3060
Hi Craig! Sorry, not at the moment. /Patrik
0
Comment made 16-May-2016 by Craig Gauntlett 0
Thanks Patrik, do you have any plans/time frames to develop this?
0
Comment made 16-May-2016 by Patrik Jonsson 3060
Hi Craig! The next version will contain virtual server details similar to the pool details. Depending on the iControl methods I might add some of that functionality. At the moment I do not have a time frame. I have written the script 50/50 at work and on my spare time so it all mounts up to if I have time to spare. /Patrik
0
Comment made 16-May-2016 by Craig Gauntlett 0
It would be great even if it just showed SNAT Profile = "None|AutoMap|{snat-pool-name}" as an additional column.
0
Comment made 17-May-2016 by mike 54
Hi Patrik Thanks for your reply - the share function might work yes :) . With regard to the "update available yellow/red" button, are you saying that is already a feature of the report? - because I dont see it? Keep up the great work!!
0
Comment made 17-May-2016 by Iqbal_khan 0
hi Patrik, Script run perfect on version 11.5, however I am getting error for 11.6 as below, i am putting correct credentials but seem couldn't initialize icontrole for version 11.6: Initialize-F5.iControl : Could not initialize connection with supplied information At line:1 char:1 + Initialize-F5.iControl -HostName XXXX -Username XXX ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (hostname:String) [Initialize-F5.iControl], Exception + FullyQualifiedErrorId : 2,iControlSnapIn.CmdLet.Global.InitializeiControl Could you please comment on this?
0
Comment made 17-May-2016 by Patrik Jonsson 3060
That particular function is dependent on the report changing. Run a fresh batch to create a new html file, wait a while and see what happens. :-) Thanks!
0
Comment made 17-May-2016 by Iqbal_khan 0
I just tried to Initialize-F5.iControl for multiple version 11.6 devices but it is giving same error on them, it however Initialize-F5.iControl returning True for lower version, looks like powershell Initialize-F5.iControl is not supported on V11.6, any idea on it?
0
Comment made 18-May-2016 by Patrik Jonsson 3060
Are you running the latest version of the snap-in? Do you have the same ciphers configured on the management interfaces? Refer to the earlier comments regarding TLS1.2 for more information. /Patrik
0
Comment made 19-May-2016 by mike 54
Hi Patrik I have this running well on BIG-IP 12.0.0 Build 1.0.628 Hotfix HF1 but if I add another F5 running BIG-IP 11.6.0 Build 6.341.442 Engineering Hotfix HF6, I get similar issues as Iqbal_Khan. the v12 report still runs and populates correctly but v11 fails with the same errors as Iqbal_Khan - I am running PS4 with latest snapin I can find...Any assistance would be most appreciated :-)
0
Comment made 19-May-2016 by Patrik Jonsson 3060
We're not running any v12 devices, so it's nice to hear that the script still seem to work with them. :) Have you compared the management ciphers? /Patrik
0
Comment made 20-May-2016 by mike 54
Hi Patrik I have compared the management ciphers and both are identical: sys httpd { ssl-ciphersuite DEFAULT:!aNULL:!eNULL:!LOW:!RC4:!MD5:!EXP } Any other ideas please? :-)
0
Comment made 20-May-2016 by Patrik Jonsson 3060
The "default" portion of the cipher strings differ between versions, but I checked the SOL article and TLS1.2 should be supported for all of the versions you mentioned. Is the TLS1.2 option set to $true in the config section? What's the exact error message you get? Does it matter in which order you run them? I will try and see if I can fire up a v12 in my home lab. /Patrik
0
Comment made 20-May-2016 by Iqbal_khan 0
Hi Patrik, Tried all combinations mentioned regarding TLS1.2 but no joy :(... getting error message as below: Initialize-F5.iControl : Could not initialize connection with supplied information At C:\Program Files (x86)\F5 Networks\iControlSnapIn\MyBigIPReport.PS1:805 char:13 + $success = Initialize-F5.iControl -Username $user -Password $pass -HostName $Bi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (test-lb-4:String) [Initialize-F5.iControl], Exception + FullyQualifiedErrorId : 2,iControlSnapIn.CmdLet.Global.InitializeiControl
0
Comment made 21-May-2016 by Patrik Jonsson 3060
Thank you for the update. Will get back to you as soon as I have something.
0
Comment made 21-May-2016 by mike 54
Hi Patrik Thanks for your reply - I did try both true and false for TLS1.2 but that made no difference. The error I was getting is the same as Iqbal_khan. HOWEVER it is now all working perfectly - the trouble is I have no idea why - it just decided to work - I did not change anything.... just arrived at work, decided to try and have another go at it, but is just worked. frustrating. Did you say there should be an "update available" button / indicator on the report? because if there is, I don't see it? Thanks
0
Comment made 21-May-2016 by Patrik Jonsson 3060
Hi Mike. That's good news, if not a bit puzzling. :) Yes, the update button will appear after a while when a new report has been generated. The client runs a javascript which polls the page and checks if the document has been updated. If it has it will show the button, if not it won't. I will still proceed to test 11.6 and 12.0 in order to try and reproduce the problems. As I might have mentioned before the error thrown by Initialize-F5.iControl is a bit devious. It says that the authentication has failed but I believe this is a hard coded error message as it says so even when a connection can't be established at all. I have had issues in the past with certain platforms (I think it was Windows 7). We're running the script on a Windows 2012 server.
0
Comment made 21-May-2016 by Patrik Jonsson 3060
Hi! I just ran the latest version of the snapin using powershell 4.0 on a Windows 8.1 client. Tried to connect to the v12 and then the 11.6. Then I reversed the order. Both worked fine. Could you capture some pcaps and see if iControl manage to negogiate a cipher and send some authentication? Could you also try to change the order of the device list to use v12 first and then v11.6 (and then reverse)? /Patrik
0
Comment made 23-May-2016 by mike 54
Hi Patrik, Not sure what I'm doing / not doing but try as I might, I cannot get the "update indicator" to appear - have the script running every 10 mins using task scheduler on the webserver, and webpage is displayed on there and also on a remote machine - I make changes to nodes etc. but no indicator appears even after considerable time to indicate that a change has been made? thanks!
0
Comment made 23-May-2016 by Patrik Jonsson 3060
Do you use a custom port to host the report by any chance? If you check the network tab of Chrome developer tools, do you see any requests heading for the bigipreport server? By default the update check will run every 30 minutes. I will run it myself and get back to you with my findings. /Patrik
0
Comment made 23-May-2016 by mike 54
Hi Patrik Nope - standard port 80 - and no I dont see any requests - how often should they occur? Thanks
0
Comment made 23-May-2016 by Patrik Jonsson 3060
I ran some tests and the update works as intended. It's just not as aggressive as you expect it to be (our environment is big so the script takes a long time to run so we never had need for short intervals). I've updated the script now and hopefully it will work more closely to what you'd expect. :) Thank you for all the feedback and keep it coming! Version 4.0.3 is out now. /Patrik
0
Comment made 24-May-2016 by mike 54
Hi Patrik Thanks for your reply - update installed, and the "updates available" feature now works :) Cheers
0
Comment made 25-May-2016 by Andy 52
Thanks for the guidance, I am running the script at the moment with "$loadbalancerdatamissing = $true" enabled against a single LB, however I am getting no output. I do get the following error when running the script, could this be the issue? PS D:\F5-PS> D:\F5-PS-4.03\Bigipreport-4.0.3.ps1 Exception setting "OutputEncoding": "The handle is invalid. " At D:\F5-PS-4.03\Bigipreport-4.0.3.ps1:342 char:1 + [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException + FullyQualifiedErrorId : ExceptionWhenSetting
0
Comment made 25-May-2016 by Patrik Jonsson 3060
Hi Andy! What version of Powershell are you using? Which OS is running the script? How are you running the script (directly via the powershell shell: .\bigipreport.ps1 or via explorer, via Powershell ISE, are you pasting it in to a shell or some other way)?
0
Comment made 25-May-2016 by Andy 52
I am running Major Minor Build Revision ----- ----- ----- -------- 3 0 -1 -1 When i run the script via ISE i get the encoding message, but when via powershell directly (./Bigipreport-4.0.3.ps1) I do not get the error message. However in both cases I get no html or json pages generated.
0
Comment made 25-May-2016 by Patrik Jonsson 3060
Skip ISE and try Powergui. :) Do you have the debug option set to true? If so, can you see that the script goes trough partitions and indexes items? When the script has finished, do you get pool data if you enter "$Global:pools" and hit enter? I would recommend to upgrade powershell to version 4.0 (though that's probably not the issue here it's the version I use to test my "builds").
0
Comment made 25-May-2016 by Patrik Jonsson 3060
Have you added the $loadbalancerdatamissing part yourself btw? Because the script won't output any html or json if that's $true. :) The error you got earlier has been fixed since version 4.0.2. If you altered the script (except the config secion), try to use the original. /Patrik
0
Comment made 25-May-2016 by Andy 52
I am running the 4.0.3 code with $loadbalancerdatamissing set as default from download. I have run the script against a single LB and I do get output, when I 'scale' this out to the 45 instances I do not get data written out to file. Is there any further debugging I can enable to help determine the root cause of my issue?
0
Comment made 25-May-2016 by Patrik Jonsson 3060
Reason is most likely that information is missing from one of your devices. If you disable the debug option and run the script on all devices you should have less output and if one of your devices fails you should be able to pinpoint if a device is missing. If you end up empty handed I'll try to write a check function for you for debugging purposes. :) /Patrik
0
Comment made 25-May-2016 by Andy 52
Thanks for the help, I have two nodes that have failed to pull config, when these are commented out of the script the html and json files are created ok.
0
Comment made 25-May-2016 by Patrik Jonsson 3060
Thank you for your feedback Andrew! I will re-write the validation part to give better feedback in terms of missing load balancer data. /Patrik
0
Comment made 26-May-2016 by mike 54
Hi Patrik Just another thought - would it be possible to build in an option to have the default view either with the pools automatically expanded or as it is currently with the click to view? Thanks!
0
Comment made 26-May-2016 by Patrik Jonsson 3060
Sure, I'll add it to the feature request list. :)
0
Comment made 29-May-2016 by SSD 2
Hi Patrick, Thanks for the script! It worked great for a v11 system. I'm getting below error when trying to run against a LTM running v9.x: ************************************************** Cannot index into a null array. At D:\F5\Bigipreport4.0.3\Bigipreport-4.0.3.ps1:598 char:13 + For($x=0;$x -lt $PoolMembers[$i].count;$x++){ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray ************************************************** I have to change the TLS to false for v9 or it was just not connecting.
0
Comment made 30-May-2016 by Patrik Jonsson 3060
Hi! Sorry, I can only support version 11 and to some extent version 12. Simply because I don't have a version 9 to test against. :) /Patrik
0
Comment made 02-Jun-2016 by mike 54
Hi Patrik Is it possible to get the report to display pools that do not have an associated VS please?
0
Comment made 03-Jun-2016 by Patrik Jonsson 3060
Sure, that should not be a problem Mike. I'm on parental leave now and the weather is far too nice, but if you do some rain dancing I'll look into it as soon as the dark clouds arrive. :) /Patrik
0
Comment made 03-Jun-2016 by mike 54
Thanks Patrik, and congratulations :)
0
Comment made 05-Jun-2016 by Amanpreet Singh 384
Hi Patrik, Can we run this report on LB Configuration file. That is, if I import the configuration file to it or specify its path, will I be able to see the similar report ? The Idea is to prevent the script to log on into the production box every-time we run the script.
0
Comment made 05-Jun-2016 by Patrik Jonsson 3060
Sorry, the script is based around the iControl api. To do what you request I'd have to make a whole new script. :) /Patrik
0
Comment made 05-Jun-2016 by Patrik Jonsson 3060
Thanks Mike! :)
0
Comment made 14-Jun-2016 by mike 54
Hi Patrik I am successfully using your monitor which is superb. I am a little confused however, in as much as there are a bunch of nodes which are disabled by monitor (an http monitor) and instead of being shown as down, they are appearing in your monitor as "unknown" (in red) - I have other nodes using similar monitors which act correctly - the only thing I can think of is that the pools to which the naughty monitors belong do not have an associated VS - is it likely that this would cause this behaviour? Thanks!! Mike
0
Comment made 14-Jun-2016 by Patrik Jonsson 3060
Hi Mike! Thank you for keeping reporting bugs! I think that the reason you get "Unknown" is that my status translation function is lacking a case. Will add that to my current to-do list! Pools that do not have an associated VS should not appear at all in the current version. I'm working on a new version now though which will have that and some other features. /Patrik
0
Comment made 21-Jun-2016 by danielpenna 260
Small problem with the way we deploy the script and the json folder ( where monitors.json and pools.json are created and exist ). Because we have a large fleet of F5's we deploy a copy of each script per F5 to an individual folder each ( /F5-Prod and /F5-NonProd for example ) and have an index.html in there. With 4.0.3, it creates the objects successfully under /F5-Prod/json, but the site loads and references the root to find the files ( /json instead of /F5-Prod/json ) which means it doesn't load the site. This is not a complaint, just digging through the powershell now to see if I can resolve it. Just letting you know :). Edit: Found the / reference in bigipreport.js file, now how to figure out how to pass the current folder value into the script. Edit 2: To hard to modify JS, found reference in html input at the end of the PS script so have uniquely modified the html to point to modified bigipreport.js which has specific folder names. Manual hack but it should work.
0
Comment made 21-Jun-2016 by DebenB 1
Hi danielpenna , Same issue with me .. Any idea how to get the site working ... Site never loads
0
Comment made 21-Jun-2016 by danielpenna 260
DebenB, did some basic configuration hacking, Ill try and explain. 1. Modify the powershell for each F5 script from "language="javascript" src="/js/bigipreport.js" to "language="javascript" src="/F5directory/js/bigipreport.js" 2. Modify bigreport.js in each F5 folder to: $.when( // Get pools $.getJSON("/F5directory/json/pools.json", function(result){ pools = result; }), //Get the monitor data $.getJSON("/F5directory/json/monitors.json", function(result){ monitors = result; })
0
Comment made 21-Jun-2016 by DebenB 1
Thanks danielpenna .. I Changed the F5 directory after which site loads but the search option's are not working.
0
Comment made 23-Jun-2016 by DebenB 1
Hi Patrik; I Have problem loading the site.. Script works fine but when i host in IIS its becomes a flat file and no search options and working ... all outputs in one file and JS not working correctly .. Please suggest.
0
Comment made 23-Jun-2016 by Patrik Jonsson 3060
Hi guys! Sorry for the late reply! So the problem you two are facing is that you try to host the report in a subfolder instead of the site root? @DanielPenna, how big is your fleet? For us the report is the most useful when we combine all our machines. Easier to pinpoint where individual services are. If you need to search for data in only one F5 you can filter in the column. That said, I will try to finish the new version asap and try to arrange so it does not have to reside in the site root. Check back sometime next week and thank you both for reporting issues!
0
Comment made 25-Jun-2016 by DebenB 1
Thanks Patrik.... Yup the reason to host seperate reports for individual devices is to limit users to have access all of data. Thanks for support as always , will check next week for ne version :)
0
Comment made 26-Jun-2016 by Patrik Jonsson 3060
New version is out now. Note that the configuration is now done through a configuration file. Just download the zip file, make sure that the bigipreportconfig.xml is in the same directory as the script. Edit the xml file and test the script. As usual, please let me know if you encounter any problems. FAQ can be found here: https://loadbalancing.se/bigip-report/#FAQ /Patrik
0
Comment made 30-Jun-2016 by Patrik Jonsson 3060
Deben, Daniel. Did the new version work out for you?
1
Comment made 03-Jul-2016 by danielpenna 260
Hey Patrick, I will try and get back to you over the next few days. Have a few key tasks that need to be done :)
0
Comment made 04-Jul-2016 by yarrowfish 286
Hi Patrik! Hope you are doing well! I just tried the new version, but unfortunately it didn't work for me. The report was successfully generated, but It did not load in the browser. Any idea's ? /Riad
0
Comment made 07-Jul-2016 by Patrik Jonsson 3060
Hi Riad! Thank you for your feedback! When you say it does not load in the browser, do you mean that the spinner never disappears? If so, can you please check the console of the web browser to check for javascript errors? Did you do fresh "install"? /Patrik
0
Comment made 07-Jul-2016 by danielpenna 260
Hey Patrick, have setup 4.1.3 Beta now and it looks much better. The /json folder gets the right files in /f5_name/json folder and the site loads for me. Only issue I have is when you click on the pool name is that the page goes dark and the window shows up in front but there is no details. I confirm monitor.json contains the pool I was searching for. In regards to size of enviornment, I have 7 clusters of F5's for Production and a matching 7 in our PreProd. The one I am testing on now has 690 Virtual servers ( our Preprod device ).
0
Comment made 07-Jul-2016 by Patrik Jonsson 3060
Hi Daniel Thank you for your feedback! Could you please check the console window in the browser to see if there's any errors? /Patrik
0
Comment made 07-Jul-2016 by Patrik Jonsson 3060
And please tell me which browser you're using? /Patrik
0
Comment made 07-Jul-2016 by danielpenna 260
Hey Patrick, deleted another F5 directory and ran it against another F5 ( 380 VIPs this time ) and it worked fine. Chrome 50 as test browser but will try FF/IE after destroy the whole originial directory and try again. Appreciate your persistence :).
0
Comment made 07-Jul-2016 by Patrik Jonsson 3060
Great news! Yes, a fresh install is always preferred. The positive thing now at least is that you can keep the config file between releases unless I add features. :) /Patrik
0
Comment made 07-Jul-2016 by Patrik Jonsson 3060
Oh, and the report works best in Chrome, might work in Firefox. Forget IE, it's a lost cause! :) /Patrik
0
Comment made 07-Jul-2016 by danielpenna 260
Sorry Patrick, rerun the report on the F5 with 694 Virtuals and have the empty pool details, ran a report on one with 1390 Virtual Servers and same issue. I have one with only 5 Virtuals and Ill try that one. Edit: Tested one with 200 VS, same issue. I think I'll work backwards from the working one and check the others...probably something simple :|
0
Comment made 07-Jul-2016 by Patrik Jonsson 3060
Daniel, would you mind creating a question in the forum and link it in the comments? The comment formatting in the code share is non-existent and it would be much easier to help that way. /Patrik
0
Comment made 07-Jul-2016 by danielpenna 260
https://devcentral.f5.com/questions/issues-with-bigip-report-47511
0
Comment made 08-Jul-2016 by Patrik Jonsson 3060

Thanks Daniel, I've updated the question.

Btw, formatting is now supported in the comments. But the question is still nice as it keeps the page a bit less cluttered. :)

/Patrik

0
Comment made 11-Jul-2016 by synergieuk 0

Hi Patrik

I'm trying to get the new beta version running but despite completing the necessary IPs, creds etc in the xml config file, I keep getting this:

Initialize-F5.iControl : Could not initialize connection with supplied information At C:\inetpub\wwwroot\Bigipreport-4.1.2-beta.ps1:1047 char:13 + $success = Initialize-F5.iControl -Username $Global:Bigipreportconfig.Settings. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (:String) [Initialize-F5.iControl], Exception + FullyQualifiedErrorId : 2,iControlSnapIn.CmdLet.Global.InitializeiControl

What did I (not) do??

Thanks
0
Comment made 11-Jul-2016 by synergieuk 0

Sorted!! - PROXY Grrrr

0
Comment made 11-Jul-2016 by Patrik Jonsson 3060

Evil evil proxies! :) Thanks for updating, might be useful to others when troubleshooting. Will add that to the FAQ too.

/Patrik

0
Comment made 11-Jul-2016 by Patrik Jonsson 3060

Just wanted to add for those who want to use sub folders to host the report. I have an updated version of bigipreport but I can't upload it due to a problem with devcentral. Meanwhile, please look here for a manual patch:

https://devcentral.f5.com/questions/issues-with-bigip-report-47511

/Patrik

0
Comment made 14-Jul-2016 by Patrik Jonsson 3060

A patch has now been added with the help of DC's esteemed Jason Rahm. Now sub folders should work properly.

/Patrik

0
Comment made 14-Jul-2016 by danielpenna 260

Hey Patrick, thanks for the assistance. Getting great feedback from within my organization around the site. We already have an inhouse portal for pools that is more dynamic ( uses the old SOAP interface ) but the search feature on this gets everyone excited.

The only request I have left is back to the first comment I put back in OCT 2015 :). We love iRules internally and most Virtuals have at least 1-2 ( some 4-5 ) on them. I know you have included a section where you can manually add iRules that you want display but is there a future version where the iRules that are attached to the Virtuals can be dispalyed without explicitly defining them. Just a simple feature request and hopefully not read as a demand.

Again, awesome work. This thing rocks :).

0
Comment made 14-Jul-2016 by Patrik Jonsson 3060

Thanks Daniel, your comment is very much appreciated. I will make sure to include that in a future version. Adding virtual details might take a bit of a time since there's so many properties of a virtual server. Stay tuned. :)

/Patrik

0
Comment made 18-Jul-2016 by Patrik Jonsson 3060

I can't update this page anymore due to the ASM giving me issues so I've added the latest version here:

https://loadbalancing.se/2016/07/18/bigipreport-4-2-0/

It now features:

  • Virtual server details
  • Virtual server details allows for displaying iRules (requested by Daniel Penna)
  • Associated address translation (requested by Craig Gauntlett)
  • Some smaller bug fixes

Hope to make it more pretty in future versions. Enjoy!

/Patrik

0
Comment made 19-Jul-2016 by Patrik Jonsson 3060

Deleted some stuff from the code share page. Latest version can be found there again.

Fixed in 4.2.1:

Members having status unknown is now not listed as down any more. (requested by Mike)

/Patrik

0
Comment made 26-Jul-2016 by Patrik Jonsson 3060

I've seen some potential issues with 4.2.1 and error reporting. Will try to issue an update soon.

/Patrik

0
Comment made 30-Jul-2016 by DebenB 1

Thanks Patrik for you continuous support and dedication.. Appreciated....

Trying scheduler to schedule scripts to generate report every morning.. But the problem is that old file is not replaced by new one and error below...If you can guide / help...

Also need you support/guidance how to display persistence and LB method used.. Is new version 4.2 includes that.


Move-Item : Cannot create a file when that file already exists. At C:\inetpub\Bigipreport-4.1.2-beta\TCS F5 Script\Bigipreport-4.1.2-beta.ps1:1119 char:2 + Move-Item -Force $($Global:poolsjsonpath + ".tmp") $Global:poolsjsonpath + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (C:\inetpub\Bigi...json\pools.json:FileInfo) [Move-Item], IOException

+ FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

Thanks Deben

0
Comment made 30-Jul-2016 by Patrik Jonsson 3060

Hi Paul

CSV being a flat file is not optimal for this kind of "multi-dimensional" output, but if you could provide me with one or two example rows with data, preferrably with at least two pools connected to the VIP and at least two members per pool, I should be able to figure something out.

/Patrik

0
Comment made 30-Jul-2016 by Patrik Jonsson 3060

Hi Deben

Do you have the files on the same server as the report is running on? Have you double checked the web folder permissions? Do you also get these problems if you run the script manually?

I can see also that you're running an old version of the script. A newer version could give you better error handling.

If you're upgrading to version 4.2.0 or higher, don't forget to update your configuration file with the irules section.

/Patrik

0
Comment made 31-Jul-2016 by DebenB 1

Thanks Patrik,

Yes files are on same server and located in root folder.

Script path >>> C:\inetpub\Bigipreport-4.1.2-beta\TCS F5 Script\ Report HTML Files >>>> C:\inetpub\Bigipreport-4.1.2-beta

Did not get problems normally running the script. Using Admin account to run the scripts and have admin rights on all the folders. Let me try newer version.

0
Comment made 01-Aug-2016 by yarrowfish 286

Hi Patrik!

Just downloaded version 4.2.1 and it works great. One question, is it possible to hide the partition information everywhere and not only for the Pools?

/Riad

0
Comment made 04-Aug-2016 by Patrik Jonsson 3060

Sorry about the late reply. Not at the moment I'm afraid. While starting on new versions I'm usually going through the comments checking for feature requests and I'll include this in the future versions. Just keep track on the project and you'll get an alert. :)

/Patrik

0
Comment made 07-Aug-2016 by yarrowfish 286

Great! I forgot one feature request. It would be really nice to be able to no only see the DataGroup list that is associated with a VIP but also see the content, like you done with the irules. :-)

0
Comment made 07-Aug-2016 by Patrik Jonsson 3060

Added to the list. :)

/Patrik

0
Comment made 17-Aug-2016 by DebenB 1

Hi Patrik, Appreciate you efforts , thanks for great work and sharing.

V4.2.1 In bigipreportconfig.xml section "choose which columns to show" showcompressionprofile set to false but in main .PS file there is no condition set hence its showing up.

.......... Also please guide which section to look for to be able to display "Server SSL Profile" details in virtual server details once clicked a VIP.

.................. Feature request - For VIP persistence used. - For Pool Load-balancing method in use

0
Comment made 17-Aug-2016 by Patrik Jonsson 3060

Thanks Deben, it must have fallen off in one of the upgrades. :)

I started to work on a new version, but it's been some crazy weeks for me with firewall troubles and a new environment to set up from scratch in Georgia (not the US one).

I have not planned to add that many feature in the coming version, it's mostly focus on making it more stable and fixing some bugs that has been raised by the users at my company.

Can't make any promises as to when the new version or what it will contain, but I do promise to put the things you requested on the list.

/Patrik

0
Comment made 19-Aug-2016 by Patrik Jonsson 3060

Released a new and hopefully more stable version now.

  • Fixed a bug with error reporting
  • Made it easier to close larger irules by putting the close button below the lightbox
  • Cleaning up CSS. Still got some work here. :)
  • Fixed a bug in the data group list parser function

Working on the following for the next version:

  • Data group lists
  • Clearing filter searches
  • Fix the bug where you can't hide the compression profile

If I have time:

  • Realtime pool status polling
  • Hiding partition information in more places
  • Persistence profiles used
  • Pool load balancing method

/Patrik

0
Comment made 19-Aug-2016 by Fabinounours 0

Hello, I have seen this program. Thank you It is usefull. I have 2 idea of evolution. 1 - the information presented are good for people that administrate F5. We have, I think too much information for users. To my mind, it could be interested to have a simple view (vs and pool/pool members) for people, who wants know what F5 is loadbalancing. 2 - To have a simple view of state ( of vs and pool member: available, unavailable, offline, unknown, disabled, forced offline))

0
Comment made 19-Aug-2016 by Patrik Jonsson 3060

Hi!

Thanks!

So you would like an option to remove the pool details and the virtual server details altogether?

/Patrik

0
Comment made 01-Sep-2016 by Patrik Jonsson 3060

Hi!

Releasing a new version now, but I have not had time to test it as much as I would have liked to. Thus the "-beta" in the name. :)

The significant changes apart from smaller bug fixes:

  • Adding data group list parsing and writing the output to json files * Fixed so you can hide the compression columns
  • Showing data group list content now works
  • Made data group lists clickable when looking at irules definitions.
  • Added pre-checks for the static files

New options in the settings file, so either update that one fully, or replace the irule settings section with the new content.

I would also like to know if any of you have been encountering issues when extracting virtual server information? I had some issues when running the script on W2012 in regards to getting NAT rules from VIP's.

Left to do for the next version:

  • Clearing search filters

If I have time:

  • Realtime pool status polling
  • Hiding partition information in more places
  • Persistence profiles used
  • Pool load balancing method

Please let me know if you run into any issues with the new version!

/Patrik

0
Comment made 06-Sep-2016 by yarrowfish 286

Nice Work Patrik! Now we can see the Data group list content :-)

What doesn't seem to work is to hide the compression column. I set it to false but it still shows up.

/Riad

0
Comment made 06-Sep-2016 by Patrik Jonsson 3060

Hi!

Thanks. I ran it myself now and it seems to work fine. Have you done a "fresh" install?

/Patrik

0
Comment made 06-Sep-2016 by Patrik Jonsson 3060

4.2.7 Released

Small fix in the data group list parser where it will now ignore data group lists or commands that resides in comments.

/Patrik

0
Comment made 07-Sep-2016 by yarrowfish 286

My mistake Patrik, it now works hiding the Compression column. :-)

Have you thought of making it possible to search inside a Datagroup or irule? I mean that when you in the search field type anything that it will also match the content of the Datagroup lists and rules? Would it be possible?

/Riad

0
Comment made 07-Sep-2016 by Patrik Jonsson 3060

Hi!

Thanks for getting back regarding the compression column and for your feedback.

Yes, but I have not been able to come up with a good way to do it yet. If one day I finally take the step to fully generate the report using javascript it would not be a problem. But right now this would mean that I would have to add the content of the data group lists and irules in the html DOM, and that would make the report several times bigger than it is today.

Given how heavy it is to load already I don't consider that an option. There could be a way to search them in a separate lightbox, but until I can come up with a clever way to do it will have to be added to the RFE list. :)

/Patrik

0
Comment made 12-Sep-2016 by JackRodriguez 1

Hi Patrik,

Just started using the reporting tool on version 4.2.1. Very pleased with the output. Winning big marks with management. Thanks so much. Not sure if this feature request has been discussed or road-mapped already but it would be awesome if we could see the Priority Group settings in the Pool details. Has that been discussed already? I apologize if that is the case.

thanks again.

0
Comment made 12-Sep-2016 by Patrik Jonsson 3060

Hi Jack!

Thanks, it's nice to hear that! :) I don't think it has been mentioned before. Adding it to the feature request list. Not sure when it will be done though as the list is long. :)

/Patrik

0
Comment made 12-Sep-2016 by Patrik Jonsson 3060

Hi again

I am learning Git, so I needed something to experiment with. Consider your wish granted. :)

4.2.8 Released

Now showing priority groups in the pool details.

Planned features

  • Clearing search filters
  • Realtime pool status polling
  • Pool load balancing method
  • Persistence profiles used
  • Using anchor links to make it easier to share information
  • Adding searching in data group lists and irules
  • Pool parsing support of policies and data group lists

Possible updates that might come as a separate module

  • License expiration
  • SSL certificate expiration warnings
  • iHealth analysis

/Patrik

0
Comment made 13-Sep-2016 by JackRodriguez 1

Patrik,

Just loaded 4.2.8 and the Priority Groups are now showing up. Thanks for the quick response on the feature request. I will continue to check back for feature enhancements from time to time.

thanks again.

0
Comment made 28-Sep-2016 by Patric 0

Hi Patrik, thanks for a great work on BigIP-report your sharing. Do you think you can add Hypervisor support? Collect all vCMP in a hypervisor and then collect all the information inside that LB.

"Nice to have" would also be to have Load balancer name as a http link pointing to the F5 device. Or even better would be if link can point to Virtual server it self in GUI.

https:///tmui/Control/jspmap/tmui/locallb/virtual_server/properties.jsp?name=/Common/emer1-443/CallHome_vs.

But maybe last is more admin like stuff and not basic read-only as I understand you have made BigIP report as. / Cheers Patric

0
Comment made 03-Oct-2016 by Patrik Jonsson 3060

Thank you for the suggestions. Adding to backlog!

0
Comment made 04-Oct-2016 by AN 162

Hi Patrik, Are you planning to add graphical presentation of those virtual server and their pool member? I remember there were some script that I came across that show real time status of VSERVER and Pool member with green for up and red for down.

Thanks.

0
Comment made 04-Oct-2016 by Patrik Jonsson 3060

Hi Anis

I have an idea on how to provide real-time status of pool members through javascript, but that would require users to set up a virtual server on every load balancer with a specific irule.

Not sure if people would be willing to do so, and if not, how to do it in another way... Any suggestions are very welcome. :)

/Patrik

0
Comment made 06-Oct-2016 by Patrik Jonsson 3060

Should not be a problem. Added to the list! :)

/Patrik

1
Comment made 06-Oct-2016 by danielpenna 260

Put myself down for a +1 on the ASM Policy request feature Patrick. Would assist my teams in understanding what policy is applied to what.

1
Comment made 07-Oct-2016 by Patrik Jonsson 3060

Noted!

0
Comment made 11-Oct-2016 by Prakash 03 0

Hello Patrik,

Newbee here, Thanks for the awesome script. The script works good for 11.5.x versions. But, it breaks for 10.x Do you have a stable script for 10.2.x and 11.3.x versions?

0
Comment made 18-Oct-2016 by DebenB 1

Thanks Patrik; Can VIP status be added in status ; have a requirement to see both VIP and Pool member status.

0
Comment made 19-Oct-2016 by Frank 129

Thanks Patrick !!! I just started using version 4.2.8 and modified a script little bit so at the end of the script the browser open ups automatically and report comes up instantly. Here is the line

start-process FireFox.exe -ArgumentList 'http://localhost/Report.html'

Also, I have active/Standby LTM's, So if somehow LTM fails over to standby then would it be possible to add that information in the report's Load Balancer section that if it is active or standby.?

0
Comment made 19-Oct-2016 by Patrik Jonsson 3060

Hey!

Np. :) Adding the feature requests to the list. Currently a bit short on time due to big projects at work and spare time so they will probably take a while.

/Patrik

0
Comment made 02-Nov-2016 by Patrik Jonsson 3060

Made a really small change in the last version in order to be able to view persistence profiles.

Sorry to all that is waiting for features. Still crazy and work and spare time. Of course, if you have a serious bug, please let me know and I will make time to solve it.

/Patrik

2
Comment made 09-Nov-2016 by JackRodriguez 1

Hi Patrik. I am running into a small issue with V4.2.8. Seems to only be affecting one of our LTMs on code 11.6.0 HF5. All of our LTMs are running same code so not sure what is different. Anyway, this system is not reporting SSL Client Profiles on any of the SSL VIPs. "SS" column is "No" and when you click the VIP, the Client SSL Profile section is "None". I ran across this issue when trying to search all VIPs that had a certain SSL Profile attached. Not a sortable field by the way but that would be awesome if it was. Anyway, have you seen this issue before?

thanks in advance.

0
Comment made 12-Nov-2016 by Patrik Jonsson 3060

Hi Jack!

  • Was this working in earlier versions?
  • Is is affecting this particular SSL profile, or all of them?
  • Do you have other LTM's with 11.6 where this is working?
  • Do you have error reporting enabled? If not, could you please run it manually against this particular machine? Any exceptions being thrown?

When you refer to the field being sortable, do you mean that you'd like to see the profile name in the column?

/Patrik

-1
Comment made 12-Nov-2016 by Patrik Jonsson 3060

Hi Paul

Sure thing. Our ASM implementation has been put on hold at the moment due to big external projects. But I will add it later.

/Patrik

0
Comment made 15-Nov-2016 by JackRodriguez 1

Patrik,

Here is what I know.

•Was this working in earlier versions? Not completely certain of that since I never was really trying to search for a particular cert profile. •Is is affecting this particular SSL profile, or all of them? It is affecting the entire LTM and all of the VIPs that should have cert profiles attached but are not showing up. In fact no VIPs are reporting SSL client profiles attached on this LTM. •Do you have other LTM's with 11.6 where this is working? Yes, all others are on this code and reporting correctly. •Do you have error reporting enabled? If not, could you please run it manually against this particular machine? Any exceptions being thrown? I do not currently but I will try this.

The sortable thing was just a comment about what I was originally trying to do (task) with this reporting tool. I was trying to find all instances where a particular cert (SSL Profile) was being used. A better word would have been searchable and not sortable.

thanks again

0
Comment made 19-Nov-2016 by Patrik Jonsson 3060

Hi Jack!

Did you get around to checking for errors?

Regarding the sorting. It's hard to fit everything with limited screen estate. Most people today are sadly still using 1080p monitors and adding the name into the column would be stealing too much valuable space.

Searching for it would be possible, but a bit challenging as the report is built right now.

May I suggest a third option parsing the data you have with powershell?

Check out this article:

https://loadbalancing.se/2016/10/07/synergy-effect-of-running-bigipreport/

Searching for all virtual servers using a specific ssl profile could then be accomplished by running:

$Virtualservers | Where-Object { $_.sslprofile -eq "/Common/myprofile" }

/Patrik

0
Comment made 14-Dec-2016 by Bman27 0

Do you have a port of this to python?

0
Comment made 14-Dec-2016 by Patrik Jonsson 3060

No, sorry.

/Patrik

0
Comment made 5 months ago by Maneesh 282

Hi Patrick I am unable to get correct information for SSL using the script I have got my LTM's running on BIG-IP 12.1.1 Build 1.0.196 Hotfix HF1.

Have got another pair of LTM's running on BIG-IP 10.2.4 Build 866.0 Hotfix HF12. In which I get the SSL info correct but script does not provide the pool information.

0
Comment made 5 months ago by Patrik Jonsson 3060

Could you please elaborate what is wrong with the ssl information?

As for version 10, sorry but I am unable to support that as we don't have any available for testing.

/Patrik

0
Comment made 5 months ago by Maneesh 282

In the SSL section it says NO SSL though there is a client and Server SSL profile both enabled on the VIP.

0
Comment made 5 months ago by Maneesh 282

Image Text

0
Comment made 5 months ago by Patrik Jonsson 3060

Ok, that's not how it's supposed to be at all. Could you please paste the virtual server config section in a PM to me so I can try to re-produce it?

/Patrik

-1
Comment made 5 months ago by Patrik Jonsson 3060

I believe that I have managed to re-produce the bug. Will investigate and issue an update as soon as I can.

Thanks for reporting!

/Patrik

0
Comment made 5 months ago by Patrik Jonsson 3060

Might have been false alarm actually. Upon checking closer I got the right information on my vips.

The script currently only checks for client profiles, so if it was only a server side profile assigned it would show the ssl profile for that vip as "No". But in your case you say you have both client and server assigned.

Have you tried running the script manually? Is there any errors?

/Patrik

0
Comment made 5 months ago by Maneesh 282

Cannot index into a null array. At C:\inetpub\wwwroot\testBigipreport-4.2.9 -.ps1:1003 char:4 + $virtualserverprofilelist[$i] | ForEach-Object { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\testBigipreport-4.2.9 -.ps1:1011 char:4 + $virtualserverprofilelist[$i] | ForEach-Object { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\testBigipreport-4.2.9 -.ps1:1059 char:5 + $objTempVirtualServer.sourcexlatetype = [string]$virtualserversourceaddresst ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\testBigipreport-4.2.9 -.ps1:1060 char:5 + $objTempVirtualServer.sourcexlatepool = [string]$virtualserversourceaddresss ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

2017-01-09 06:19:49 Adding orphaned pools to the virtual server list 2017-01-09 06:19:49 Verifying load balancer data to make sure that no load balancer is missing 2017-01-09 06:19:49 No missing loadbalancer data was detected, compiling the report 2017-01-09 06:20:01 No iRule links to add to the dropdown 2017-01-09 06:20:01 No iRule definitions to add to the body 2017-01-09 06:20:01 Writing report temporary file to C:\inetpub\wwwroot\index.html.tmp 2017-01-09 06:20:01 Writing temporary pools json object to C:\inetpub\wwwroot\json\pools.json.tmp 2017-01-09 06:20:01 Writing temporary monitor json object to C:\inetpub\wwwroot\json\monitors.json.tmp 2017-01-09 06:20:01 Writing temporary virtual server json object to C:\inetpub\wwwroot\json\virtualservers.json.tmp 2017-01-09 06:20:01 Writing temporary irules json object to C:\inetpub\wwwroot\json\irules.json.tmp 2017-01-09 06:20:01 Writing temporary data group list json object to C:\inetpub\wwwroot\json\datagrouplists.json.tmp 2017-01-09 06:20:01 Successfully wrote the temporary files 2017-01-09 06:20:11 Updating the report with the new data 2017-01-09 06:20:11 The report has been successfully been updated 2017-01-09 06:20:11 There were errors while generating the report 2017-01-09 06:20:11 No error mail reporting enabled/configured

0
Comment made 5 months ago by Patrik Jonsson 3060

Ok, I have an idea. Writing a fix for you. Hopefully that will help.

/Patrik

0
Comment made 5 months ago by Patrik Jonsson 3060

Try 4.3.0 and see if you still get the errors?

/Patrik

0
Comment made 5 months ago by Maneesh 282

Thank you so much Patrick. If it shows SSL info that would be really helpful as we use SSL extensively and for both client and server side encryption.

0
Comment made 5 months ago by Patrik Jonsson 3060

Sure, I will add that.

Let's focus on getting those errors out of the way first and see if it helps.

/Patrik

0
Comment made 5 months ago by Maneesh 282

Cannot index into a null array. At C:\inetpub\wwwroot\newBigipreport-4.3.0.ps1:1004 char:4 + $virtualserverprofilelist[$i] | ForEach-Object { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\newBigipreport-4.3.0.ps1:1012 char:4 + $virtualserverprofilelist[$i] | ForEach-Object { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\newBigipreport-4.3.0.ps1:1060 char:5 + $objTempVirtualServer.sourcexlatetype = [string]$virtualserversourceaddresst ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\newBigipreport-4.3.0.ps1:1061 char:5 + $objTempVirtualServer.sourcexlatepool = [string]$virtualserversourceaddresss ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

2017-01-10 10:18:50 Adding orphaned pools to the virtual server list 2017-01-10 10:18:51 Verifying load balancer data to make sure that no load balancer is missing 2017-01-10 10:18:51 No missing loadbalancer data was detected, compiling the report 2017-01-10 10:19:00 No iRule links to add to the dropdown 2017-01-10 10:19:00 No iRule definitions to add to the body 2017-01-10 10:19:00 Writing report temporary file to C:\inetpub\wwwroot\index.html.tmp 2017-01-10 10:19:00 Writing temporary pools json object to C:\inetpub\wwwroot\json\pools.json.tmp 2017-01-10 10:19:00 Writing temporary monitor json object to C:\inetpub\wwwroot\json\monitors.json.tmp 2017-01-10 10:19:00 Writing temporary virtual server json object to C:\inetpub\wwwroot\json\virtualservers.json.tmp 2017-01-10 10:19:00 Writing temporary irules json object to C:\inetpub\wwwroot\json\irules.json.tmp 2017-01-10 10:19:00 Writing temporary data group list json object to C:\inetpub\wwwroot\json\datagrouplists.json.tmp 2017-01-10 10:19:00 Successfully wrote the temporary files 2017-01-10 10:19:10 Updating the report with the new data 2017-01-10 10:19:10 The report has been successfully been updated 2017-01-10 10:19:10 There were errors while generating the report 2017-01-10 10:19:10 No error mail reporting enabled/configured

0
Comment made 5 months ago by Patrik Jonsson 3060

This certainly shows why you're not seeing the ssl profiles, but it does not explain why the errors occur.

  • What role does the iControl user have? It should have read-only on all partitions.
  • Is there no other error prior to the ones you pasted above? I would have expected an error on line 964 too considering the output.

Please paste this below the data retrieval (line 967) and run the script again?

"Here's the virtual server profile list"
$virtualserverprofilelist
"Here's the object type"
$virtualserverprofilelist.gettype()

Paste the output in a comment (censor as needed). It should look like this:

[array]$virtualserverlist = $f5.LocalLBVirtualServer.get_list()
[array]$virtualserverdestinationlist = $f5.LocalLBVirtualServer.get_destination($virtualserverlist)
[array]$virtualserverdefaultpoollist = $f5.LocalLBVirtualServer.get_default_pool_name($virtualserverlist)
[array]$virtualserverprofilelist = $f5.LocalLBVirtualServer.get_profile($virtualserverlist)
[array]$virtualserverirulelist = $f5.LocalLBVirtualServer.get_rule($virtualserverlist)
[array]$virtualserverpersistencelist = $f5.LocalLBVirtualServer.get_persistence_profile($virtualserverlist)
"Here's the virtual server profile list"
$virtualserverprofilelist
"Here's the object type"
$virtualserverprofilelist.gettype()

/Patrik

0
Comment made 5 months ago by Maneesh 282

What role does the iControl user have? It should have read-only on all partitions. Ans - It is an Admin User on the LTM's Is there no other error prior to the ones you pasted above? I would have expected an error on line 964 too considering the output. Ans - I would re-run and look closely, have around 270 VIP's and the four errors I pasted are common for all the VIP's.

Would try again and keep you posted.

0
Comment made 5 months ago by Patrik Jonsson 3060

So strange. We have ~1000 VIPs in total on multiple clusters and I have never seen this before. If you add the debug lines I asked for it might give some more insight as to what could be wrong.

From the errors you have provided it looks like the F5 does not return any profiles at all.

  • Do you have any other load balancers you can try this against?
  • Could you try a different account? The script does not need more than read-only, so feel free to pick any other user with at least read access to all partitions.

/Patrik

0
Comment made 5 months ago by Maneesh 282

Would try using a read only account btw FYI I tried on a lab ltm and there I got the ssl information though for both client and server side it gave the same I.e client profile info.

0
Comment made 5 months ago by Patrik Jonsson 3060

That would conclude that it's a problem with one specific load balancer, and only for some objects? Very weird...

Read-only vs admin does not make a difference in terms of results, it's just good practice to not give more access than necessary.

For "fun" could you please run this on the device (ssh to it) and see if you see your ssl profiles then?

curl -sku user:password https://localhost/mgmt/tm/ltm/virtual?expandSubcollections=true\&\$select=name,profilesReference/items/name,profilesReference/items/context | json-format

You need to run the command as an admin user, preferably the same user you used to generate the report earlier.

You should then get a list that looks like this:

{
      "name": "vipname",
      "profilesReference": {
        "items": [
          {
            "name": "profilename",
            "context": "all",
            "nameReference": {
              "link": "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~profilename?ver\u003d12.1.2"
            }
          }
        ]
      }
    },

If you don't see the profiles on your servers you have grounds to open up a case with F5 (they support iControl Rest but not the powershell snap-in).

That would be the "simple" way. Then there is a way of using Wireshark to capture the iControl traffic, decipher it to extract the SOAP request and response and then open up a case with that. But that would probably require too much effort. :)

/Patrik

0
Comment made 5 months ago by Maneesh 282

You are correct I tried the command on the problematic LTM and was able to get the output.

"name": "VIP NAME", "profilesReference": { "items": [ { "name": "VIP NAME", "context": "clientside", "nameReference": { "link": "https://localhost/mgmt/tm/ltm/profile/client-ssl/~Common~VIP NAME?ver\u003d12.1.1" }

Additionally the problematic LTM is a Virtual instance on a Viprion chassis dunno if that make a difference.

0
Comment made 5 months ago by Patrik Jonsson 3060

VCMP instance or not would not make a difference I'm afraid. The only thing left from what I can see if so to open up a case with F5 asking them for help troubleshooting iControl SOAP. I'd point out that it's working on other F5's while this particular unit is not returning the SSL profiles.

Perhaps they've seen this issue before or know some way to troubleshoot further.

Is this unit part of a cluster? If so, have you tried it against both nodes?

/Patrik

0
Comment made 5 months ago by Maneesh 282

Added those lines "Here's the virtual server profile list" $virtualserverprofilelist "Here's the object type" $virtualserverprofilelist.gettype()

Post running got below output 2017-01-11 05:30:28 Fetching information about /Common/www.VIP-443 Cannot index into a null array. At C:\inetpub\wwwroot\updated-Bigipreport-4.3.0.ps1:1009 char:4 + $virtualserverprofilelist[$i] | ForEach-Object { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\updated-Bigipreport-4.3.0.ps1:1017 char:4 + $virtualserverprofilelist[$i] | ForEach-Object { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\updated-Bigipreport-4.3.0.ps1:1065 char:5 + $objTempVirtualServer.sourcexlatetype = [string]$virtualserversourceaddresst ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

Cannot index into a null array. At C:\inetpub\wwwroot\updated-Bigipreport-4.3.0.ps1:1066 char:5 + $objTempVirtualServer.sourcexlatepool = [string]$virtualserversourceaddresss ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray

This is line 1009 $virtualserverprofilelist[$i] | ForEach-Object { 1009 >>>>> $virtualserverprofilelist[$i] | ForEach-Object { 1010>>>>>> if(string -eq "PROFILE_TYPE_CLIENT_SSL"){ 1011>>>>>> $objTempVirtualServer.sslprofile = $_.profile_name; 1012>>>>>> } 1013>>>>>> }

This is line 1017 $virtualserverprofilelist[$i] | ForEach-Object {

0
Comment made 5 months ago by Maneesh 282

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 = $f5.LocalLBVirtualServer.get_profile($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'.

0
Comment made 5 months ago by Maneesh 282

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.

0
Comment made 5 months ago by Patrik Jonsson 3060

Yeah, this really confirms that you indeed does not get any profiles. I'm afraid F5 support is the next step.

/Patrik

0
Comment made 5 months ago by Maneesh 282

Cheers lemme try that route. Thanks for your help and it is a great script you have created.

0
Comment made 5 months ago by Patrik Jonsson 3060

Thanks mate, please report back with the findings (even if they're not positive)?

/Patrik

0
Comment made 5 months ago by Patrik Jonsson 3060

That one will most likely come soon. Stay tuned. :)

1
Comment made 5 months ago by Zdenda 431

Good job!

0
Comment made 4 months ago by Vikneswaran 69

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>

0
Comment made 4 months ago by paul.dawson 69

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?

0
Comment made 4 months ago by Vikneswaran 69

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 (file:///C:/inetpub/wwwroot/default.html) 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>

0
Comment made 4 months ago by Patrik Jonsson 3060

Thank you for helping Paul!

Sorry, the BigIP Report support crew (aka. me) was on vacation for a few days. :)

This tool won't work using file:// as your browser would not allow XHR requests. Put the stuff on a web server according to the guide and you should be good to go. :)

2
Comment made 4 months ago by Vikneswaran 69

Thanks Patrik. Is it possible to get the health check parameter & Status as well through the report ? Also Whats next to SSL column(Starting with "c") ?

0
Comment made 4 months ago by Patrik Jonsson 3060

No problem. :) Health check parameter is available if you click on the pools. Having it in the table would take up way to much space.

C for "Compression Profile". :)

/Patrik

1
Comment made 4 months ago by Vikneswaran 69

Thanks for your quick response.

0
Comment made 4 months ago by Patrik Jonsson 3060

You are most welcome! :)

1
Comment made 4 months ago by Vikneswaran 69

Hi patrik, instead of BigIP Report, version 2.0- is it possible to add our own banner ? Also is it possible to have our own logo ?

0
Comment made 4 months ago by Patrik Jonsson 3060

Yeah, it is possible. But for what reason? :)

/Patrik

1
Comment made 4 months ago by Vikneswaran 69

Its to put the organisation logo and the name. Please let me know the procedure.

0
Comment made 4 months ago by Patrik Jonsson 3060

It's easy. Just replace the logo image file in /images :)

1
Comment made 4 months ago by Vikneswaran 69

:-) thanks

0
Comment made 4 months ago by Frank 129

Hi Patrix, I am currently using prior version (4.3.0) of BIG IP report, could please specify the new features introduced in version 4.3.0

Thanks

0
Comment made 4 months ago by Patrik Jonsson 3060

All the added features are documented in the powershell script. Download it and look at the top of the ps1 script to see what's been changed since your version.

If your version is old you might be better off doing a "re-installation" as the latest versions uses a configuration file instead of a configuration section in the script.

/Patrik

1
Comment made 4 months ago by Patrik Jonsson 3060

Hi Paul!

Thank you for your patience. :) The way I interpret your RFE is that you want to add one more column to see if the ASM policy is in blocking mode or standby mode. You'd also like the policy name to be available.

My idea how to solve this would be to:

  1. Check if ASM is enabled.
  2. If it is, add a column named ASM and have values "B", "S" or "N/A".

As for the name, this would be best placed in the virtual server details (because of screen estate reasons).

What do you think?

/Patrik

0
Comment made 4 months ago by Patrik Jonsson 3060

Hehe, as you can see we still have not started implementing it, hence my newbie mistake with the lingo.

I came back this Monday from 2.5 months parental leave so I expect to start with this within a month or so. Need to get back into the game mentally first. :)

/Patrik

1
Comment made 3 months ago by Luc @ NTTD 10

Awesome script Patrik :) Thank you for sharing. I just figured out an issue and I'm wondering if you can throw an option in to remove routing domain identifiers. It was screwing up my NAT entries really hard. IE $vs.ip returns 1.1.1.1%1 or 1.1.1.1%2 and unless I throw that into my NATFile it will never match! Is there an easy way to clean up $vs.ip so that it prunes the routing domain after the IP? Thanks!

0
Comment made 3 months ago by Patrik Jonsson 3060

Hi Luc

We only had route domains for a short while. Updating this should be simple, if you're OK with testing as I do not have any configured.

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

A "beta" is available now. Please test and get back to me with the results?

/Patrik

0
Comment made 3 months ago by Luc @ NTTD 10

That little Regex did the trick :) It's now properly matching. Thank you Patrik!

EDIT and as an FYI I've verified that this works on 12.0 and 12.1.2 :)

0
Comment made 3 months ago by Patrik Jonsson 3060

Thank you Luc! :)

0
Comment made 3 months ago by Patrik Jonsson 3060

New beta version:

  • The report generation done in recursive mode, which should speed up the process a lot.
  • Removing route domain info when matching against NAT list
  • Adding option to show column with ASM blocking mode
  • Adding ASM profile name in the VIP details

Please note that in order to use this new version you must update to the latest version of the configuration file, or at your own risk, add the following section:

howASMPolicyBlockingMode>true</ShowASMPolicyBlockingMode>

You will also need to update the js and css folders with content from the latest release.

I have only tested this a short period, so please do treat it as a beta.

/Patrik

0
Comment made 3 months ago by Luc @ NTTD 10

Welcome! Thought of something - would it be useful to display the version of the script in the web interface so it's easy to know what version you are on? Somewhere down by the 'Report generated on x with BigIPReport Version x' kind of thing. Also I updated to 4.3.3 and noticed that it's now picking up more VIPs than it was before for whatever reason :) So yay. And it works.

Also do you know if there's an easy way to change the location of the f5 powershell snapin? Or remove it and reinstall it? I mistakenly installed it from a stupid location and now I need to change it :(

0
Comment made 3 months ago by Patrik Jonsson 3060

Version is a good idea. I'll add that to the feature list. About the additional VIP's. That sounds weird. Should be the same. Have you verified that all of them are legit?

I think I did the same thing as you did with the snap-in. Don't remember how I solved it, but have you unregistered it through Powershell and registred at the new location? The installation ps1 should have two options. One for install and one for uninstall, or something similar.

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

Some more tests has been made now. The time to generate the report has been cut to half. Would probably be faster except for current VPN throughput issues.

Feedback on the new version appreciated as I don't have an army of QA engineers behind me.

Please note that "All OK" is also helpful.

/Patrik

0
Comment made 3 months ago by Luc @ NTTD 10

I'm certainly noticing an improvement in the speed of execution :) All is OK and works great for me. Still looking into the additional VIPs

0
Comment made 3 months ago by Patrik Jonsson 3060

Thanks Luc!

My VIP count and the size of the HTML was exactly the same (down to he byte) so the additional VIPs should be due to something else.

Are you running any other scripts with the bigip report user? If the user is active somewhere else changing ie. partitions it could affect the output of the script.

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

Hi Paul

Oh noes, you're my main guinea pig. :)

Which version are you running?

/Patrik

0
Comment made 3 months ago by paul.dawson 69

Hi Patrik, Some more info although the ASM column is still not being populated - all are showing N/A. I noticed that the ASM variables were not being cached.

#Get-Variable | Out-String
 ASMPolicies                    {}

I didn't see any of the other ASM variables loaded.

On line 995 I think ShowCompressionProfile should read ShowASMPolicyBlockingMode. I changed this but it still did not work so I commented out the second condition:

#and ($ProvisionedModules | Where-Object { $_.loadbalancer -eq $loadbalancername     }).ProvisionedModules -Contains "TMOS_MODULE_ASM"){

Now I can see the ASM Policies and they are loaded into cache while the script is running

Get-Variable | Out-String

Name                           Value                                           
----                           -----                                           
$                              $ASMPolicies                                    
?                              True                                            
^                              $ASMPolicies                                    
args                           {}                                              

ASMPolicies                    {ASMPolicy, ASMPolicy, ASMPolicy, ASMPolicy...} 

And the info is there

$ASMPolicies (example)

name               : /Common/TEMPLATE
blockingmode       : Transparent
language           : UNICODE_UTF_8
http_header_length : 8192
cookie_length      : 8192
description        : 
loadbalancer       : lb10mgt.domain.com

Unfortunately still not showing up in the ASM column though. Hope this helps.

0
Comment made 3 months ago by Patrik Jonsson 3060

Hi Paul

Thank you for your feedback and cooperation. In v12 it looks like the string as "ASM_" is prepended to the policy name when listing virtual server profiles (for some reason the policy is listed amongst the profiles). Perhaps this is not the case in v11.6.

I'll try to write a debug script for you to run tomorrow if that's OK?

Meanwhile could you please try these things (within the same partition)?

  1. Create an ASM policy with the name name as an HTTP profile.
  2. Create an HTTP profile with the name ASM_test and an ASM policy with the name test.

This might help me determine if they share the same "name space" and might make it easier to check if a virtual server has a valid ASM profile.

/Patrik

0
Comment made 3 months ago by Luc @ NTTD 10

Interesting development and I'm not sure if this started happening with 4.3.3 or when exactly, but now after I run the script and then try to browse to the URL, it just displays the 'loading' animation and will not proceed. The scroll bar in my window is pretty huge so I'm assuming the data is loading but it won't go past the loading animation. Want me to try an earlier version or what's the best way to troubleshoot? I've also tried on Edge (using Chrome) and same result. Oh and the ps1 executes perfectly, no errors reported at all.

0
Comment made 3 months ago by paul.dawson 69

Hi Patrik, I'll test it out and let you know. It's worth noting that all our policies are prefixed with the string

asm_<domain.name.com>
0
Comment made 3 months ago by Patrik Jonsson 3060

Luc:

That's a symptom of broken java scripts. Have you updated the web files? If you have, please do a full "re-install"? If that does not work, please let me know the output of the console in Chrome?

Paul:

Ah, I **_think_** I took that into considerations for that, but will double check tomorrow.

/Patrik

0
Comment made 3 months ago by Luc @ NTTD 10

Turns out it was a ID 10 T error ... incorrect permissions on the json folder because I decided I wanted to share it. DERP. Chrome Console pointed me in the right direction :)

0
Comment made 3 months ago by Patrik Jonsson 3060

I guess I should add some javascript exceptions too. A very large part of the Powershell script consists of error prevention and pre checks but the web front end contains none. :)

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

Paul, here's the snippet I'd like you to run. Please note the comments I've made in the output section at the bottom, there's a question mark in it for you to answer (if you can).

#Configuration
$User = "user"
$Password = "password"
$BigIP = "10.10.10.10"

#Allow TLS1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

#Initialize Snapin
if ( (Get-PSSnapin | Where-Object { $_.Name -eq "iControlSnapIn"}) -eq $null ){
    Add-PSSnapIn iControlSnapIn
}

#Connect to the BigIP
$Success = Initialize-F5.iControl -HostName $BigIP -Username $User -Password $Password

#Get an iControl Handle
$F5 = Get-F5.iControl

$f5.LocalLBVirtualServer.get_profile("/Partition/VIP-name")

#            profile_type             profile_context profile_name
#            ------------             --------------- ------------
#       PROFILE_TYPE_HTTP    PROFILE_CONTEXT_TYPE_ALL /Common/http
# PROFILE_TYPE_CLIENT_SSL PROFILE_CONTEXT_TYPE_CLIENT /Common/sslprofile
#        PROFILE_TYPE_TCP    PROFILE_CONTEXT_TYPE_ALL /Common/tcp
#PROFILE_TYPE_WEBSECURITY    PROFILE_CONTEXT_TYPE_ALL /Common/websecurity <-- Not sure where this comes from, but it seems like an indication that ASM is enabled?
#    PROFILE_TYPE_UNKNOWN    PROFILE_CONTEXT_TYPE_ALL /Partition/ASM_test_policy <-- This policy's real name is "test_policy". "ASM_" as added by the API (or configuration). This caused me a lot of grief when the writing the new version. :)
  1. How does the profile names look to you? Is there a prefix?
  2. Do you also have a profile type called "PROFILE_TYPE_WEBSECURITY" for every VIP with an ASM policy?

/Patrik

0
Comment made 3 months ago by paul.dawson 69

Security Policy Disabled

              $f5.LocalLBVirtualServer.get_profile("/Common/vipname.domain.com")

          profile_type            profile_context profile_name             
          ------------            --------------- ------------             
     PROFILE_TYPE_HTTP   PROFILE_CONTEXT_TYPE_ALL /Common/http             
     PROFILE_TYPE_CLIENT_SSL ...ILE_CONTEXT_TYPE_CLIENT /Common/vipname.domain.com
     PROFILE_TYPE_SERVER_SSL ...ILE_CONTEXT_TYPE_SERVER /Common/vipname.domain.com
     PROFILE_TYPE_TCP   PROFILE_CONTEXT_TYPE_ALL /Common/tcp              

Security Policy Enabled:

$f5.LocalLBVirtualServer.get_profile("/Common/vipname.domain.com")
Exception calling "get_profile" with "1" argument(s): "There is an error in 
XML document (50, 79)."
At line:20 char:1
+ 
$f5.LocalLBVirtualServer.get_profile("/Common/vipname.domain.com")
+ 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException
0
Comment made 3 months ago by Patrik Jonsson 3060

Now that does not look promising at all. When running the actual report and listing $Global:virtualservers, do you get any profiles at all on the virtual servers that has ASM policies assigned to them?

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

Oh, and could you please try the same procedure on more devices?

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

Version 4.3.4 changes:

Fixed a mistake when referring to the wrong setting in the column settings (thanks to Paul Dawson for reporting it).

/Patrik

0
Comment made 3 months ago by paul.dawson 69

I've tried 2 different LB's and 2 different virtual servers with different virtual server names, one with asm_vsname and one without. I've also tried with different asm policynames such as asm_policyname and just TEMPLATE. Still no joy. I don't see asmpolicy being populated in $Global:virtualservers.

0
Comment made 3 months ago by Patrik Jonsson 3060

Ok, then it would look like it's not possible with version 11.6. :(

/Patrik

0
Comment made 3 months ago by paul.dawson 69

Hmmm... Tested this on 12 and the same thing. ASM column is not being populated. Very strange.

0
Comment made 3 months ago by Patrik Jonsson 3060

Could you please run those "manual" tests against the v12 too?

/Patrik

0
Comment made 3 months ago by Luc @ NTTD 10

Virtual F5 with ASM running 12.0 and I caught it throwing exceptions. Still completes and compiles just fine. Also running 4.3.4 version. Paste below

2017-03-08      14:31:25        Caching iRules
2017-03-08      14:31:26        Caching Virtual servers
Exception calling "get_rule" with "1" argument(s): "Exception caught in LocalLB::urn:iControl:LocalLB/VirtualServer::get_rule()
Exception: Common::OperationFailed
    primary_error_code   : 16908336 (0x01020030)
    secondary_error_code : 0
    error_string         : 01020036:3: The requested query_reply () was not found."
At D:\inetpub\bigipreport\Bigipreport-4.3.4.ps1:1042 char:2
+     [array]$virtualserverirulelist = $f5.LocalLBVirtualServer.get_rule($virtualserv ...
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SoapHeaderException
0
Comment made 3 months ago by Luc @ NTTD 10

And also this which would not post due to spam settings:

Exception calling "get_persistence_profile" with "1" argument(s): "Exception caught in LocalLB::urn:iControl:LocalLB/VirtualServer::get_persistence_profile()
Exception: Common::OperationFailed
    primary_error_code   : 16908336 (0x01020030)
    secondary_error_code : 0
    error_string         : 01020036:3: The requested query_reply () was not found."
At D:\inetpub\bigipreport\Bigipreport-4.3.4.ps1:1043 char:2
+     [array]$virtualserverpersistencelist = $f5.LocalLBVirtualServer.get_persistence ...
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SoapHeaderException
0
Comment made 3 months ago by Patrik Jonsson 3060

Hi Luc

Thanks for reporting it. Does this happen every time?

/Patrik

0
Comment made 3 months ago by Luc @ NTTD 10

I've run it twice and it's happened both times, same place. Anything you want me to try?

0
Comment made 3 months ago by Patrik Jonsson 3060

If I manage to get a few seconds to spare tomorrow I might enable ASM and give it a go myself. Do you also get errors if you disable the ASM checks in the configuration file?

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

Sorry for the delay guys. It's one of those weeks. Luc, do you get the errors if you disable ASM checks in the configuration file?

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

4.3.7 Small, but important updates

  • Verifying that each load balancer has added virtual servers, pools, monitors, irules, data group lists and nodes to the report. Otherwise an error is thrown and the report is not written.
  • Using streamwriter instead of out-file

Hoping to get some time to look into ASM next week.

/Patrik

0
Comment made 3 months ago by Patrik Jonsson 3060

4.3.8 Released

When extracting and generating configuration only the data local to the current load balancer worked on is used. This is also true to the HTML generation. This means that instead of searching for pools in all load balancers the script would only search a sub set of the data. Makes generation of large report much faster.

Compared to version 4.3.1 our report generation of 1183 Virtual servers went down from 40 minutes to 12 minutes. :)

/Patrik

0
Comment made 2 months ago by silverem 10

Hi I got some error when starting the script:

PS C:\inetpub\wwwroot&gt; .\Bigipreport-4.3.8.ps1
Successfully loaded the config file
2017-04-06      13:02:26        Configuring the console window
2017-04-06      13:02:26        Pre-execution checks
2017-04-06      13:02:26        Mounting
The syntax of this command is:

NET USE
[devicename | *] [\computername\sharename[\volume] [password | *]]
        [/USER:[domainname]username]
        [/USER:[dotted domain name]username]
        [/USER:[username@dotted domain name]
        [/SMARTCARD]
        [/SAVECRED]
        [[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {devicename | *} [password | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]

2017-04-06      13:02:26        Share  could not be mounted
2017-04-06      13:02:26        There were errors during the config file sanity check
2017-04-06      13:02:26        Exiting
PS C:\inetpub\wwwroot&gt;

What is wrong with the script?

Rgds

Silvere

0
Comment made 2 months ago by Patrik Jonsson 3060

Hi Silvere

It looks like the configuration file is not properly populated as the share name does not seem to exist rather than an error in the script itself. Are you writing the file to a separate server from the one that generates the script? Otherwise you can just leave that section as it is in the default configuration file.

Example of a functioning share (replace the details with those in your environment):

        <Shares>
            <Share>
                <Path>\\server.domain.local\sharename$</Path> 
                <Username>domain\username</Username>
                <Password>yourpassword</Password>
            </Share>
        </Shares>

/Patrik

0
Comment made 2 months ago by silverem 10

Hi The config xml has the following parameters. S I don't know why I get an error

        <Shares>
        </Shares>

Silvere      
0
Comment made 2 months ago by Patrik Jonsson 3060

Ok, that should work indeed. Let me see if I can replicate the issue.

/Patrik

0
Comment made 2 months ago by Patrik Jonsson 3060

I've tested the latest version now with minimum configuration and it ran just fine. Could you please tell me your Powershell version?

Example:

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14393.953
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14393.953
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

/Patrik

0
Comment made 2 months ago by silverem 10

Ok I see where the problem is, now I use the same powershell version like you but now: 2017-04-07 10:32:56 Writing temporary pools json object to E:\personal\scripts\Bigipreport-4.3.8\json\pools.json.tmp New-Object : Exception calling ".ctor" with "4" argument(s): "Could not find a part of the path 'E:\personal\scripts\Bigipreport-4.3.8\json\pools.json.tmp'."At E:\personal\scripts\Bigipreport-4.3.8\Bigipreport-4.3.8.ps1:1541 char:18 + ... eamWriter = New-Object System.IO.StreamWriter($($Global:poolsjsonpath ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

Exception calling "Write" with "1" argument(s): "Cannot write to a closed TextWriter."At E:\personal\scripts\Bigipreport-4.3.8\Bigipreport-4.3.8.ps1:1542 char:24
+ ... eamWriter.Write($($Global:pools | ConvertTo-Json -Compress -Depth 5))
+                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ObjectDisposedException

2017-04-07      10:32:56        Failed to update the temporary pool json file
2017-04-07      10:32:56        Writing temporary monitor json object to E:\personal\scripts\Bigipreport-4.3.8\json\monitors.json.tmp
New-Object : Exception calling ".ctor" with "4" argument(s): "Could not find a part of the path 'E:\personal\scripts\Bigipreport-4.3.8\json\monitors.json.tmp'."At E:\personal\scripts\Bigipreport-4.3.8\Bigipreport-4.3.8.ps1:1552 char:18
+ ... eamWriter = New-Object System.IO.StreamWriter($($Global:monitorsjsonp ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

Exception calling "Write" with "1" argument(s): "Cannot write to a closed TextWriter."At E:\personal\scripts\Bigipreport-4.3.8\Bigipreport-4.3.8.ps1:1553 char:24
+ ... Writer.Write($($Global:monitors | ConvertTo-Json -Compress -Depth 5))
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0
Comment made 2 months ago by Patrik Jonsson 3060

Hi!

This error is due to the defined ReportRoot not containing the HTML content. Check out step number 3 here:

https://loadbalancing.se/bigip-report/#Download_the_BigipReport_package

/Patrik

0
Comment made 2 months ago by silverem 10
Strange, got the same result
    2017-04-07      11:26:05        No iRule links to add to the dropdown
    2017-04-07      11:26:05        No iRule definitions to add to the body
    2017-04-07      11:26:05        Writing report temporary file to C:\inetpub\wwwroot\default.html.tmp
    2017-04-07      11:26:05        Writing temporary pools json object to C:\inetpub\wwwroot\json\pools.json.tmp
    New-Object : Exception calling ".ctor" with "4" argument(s): "Could not find a part of the path 'C:\inetpub\wwwroot\json\pools.json.tmp'."At C:\inetpub\wwwroot\Bigipreport-4.3.8.ps1:1541 char:18
    + ... eamWriter = New-Object System.IO.StreamWriter($($Global:poolsjsonpath ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
        + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

    Exception calling "Write" with "1" argument(s): "Cannot write to a closed TextWriter."At C:\inetpub\wwwroot\Bigipreport-4.3.8.ps1:1542 char:24
    + ... eamWriter.Write($($Global:pools | ConvertTo-Json -Compress -Depth 5))
    +                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ObjectDisposedException

    2017-04-07      11:26:05        Failed to update the temporary pool json file
    2017-04-07      11:26:05        Writing temporary monitor json object to C:\inetpub\wwwroot\json\monitors.json.tmp
    New-Object : Exception calling ".ctor" with "4" argument(s): "Could not find a part of the path 'C:\inetpub\wwwroot\json\monitors.json.tmp'."At C:\inetpub\wwwroot\Bigipreport-4.3.8.ps1:1552 char:18
    + ... eamWriter = New-Object System.IO.StreamWriter($($Global:monitorsjsonp ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
        + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

    Exception calling "Write" with "1" argument(s): "Cannot write to a closed TextWriter."At C:\inetpub\wwwroot\Bigipreport-4.3.8.ps1:1553 char:24
    + ... Writer.Write($($Global:monitors | ConvertTo-Json -Compress -Depth 5))
    +                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ObjectDisposedException
0
Comment made 2 months ago by Patrik Jonsson 3060

Confirm that C:\inetpub\wwwroot\json\ exists? Does not look that way from your error message.

/Patrik

0
Comment made 2 months ago by Patrik Jonsson 3060

And also, that the user running the script has write permissions to that folder.

/Patrik

0
Comment made 2 months ago by silverem 10

Thx, correct, json was missing.

0
Comment made 1 month ago by danielpenna 260

Hey Patrick, Upgraded to 4.3.0 last week and the iRule to Virtual Server feature is awesome!

My team is looking at using your script as a baseline to find owners in the organization and we will be using the description field of a virtual server to establish an internal owner to an application. In the short term we will be modifying your PS script to include the description field of a Virtual Server but wondering if this can be a feature request for any future versions ?

0
Comment made 1 month ago by Tom_K 11

Patrik - your demo is awesome, I am not a powershell user so still trying to understand logistically and architecturally where the pieces go. I have powershell on a Windows 10 laptop and am planning to run the web server on a Redhat apache web server and the instructions say to copy the content of the BigipReport package to /var/www/html/ which are files Bigipreport-4.3.8.ps1 and bigipreportconfig.xml - so Bigipreport-4.3.8.ps1 gets put wherever I also put bigipreportconfig.xml? Thanks, Tom

0
Comment made 1 month ago by Patrik Jonsson 3060

Hi Tom

Did you follow the instructions on loadbalancing.se?

Both of these needs to be executed with Powershell:

  • bigipreport-4.3.8.ps1 - This is the actual script

  • bigipreportconfig.xml - Configuration for the script

Then, there's a folder which is named "Move the content of this folder to the configured report root". This folder contains styles and javascripts needed by the report and needs to reside on your web server.

So in your case, if you want to automate things you'd have to install Samba on your Redhat server and share your report root on the linux server.

Alternately, if you don't want to automate things you can just configure the script and copy the html file manually.

/Patrik

0
Comment made 1 week ago by Patrik Jonsson 3060

New version (4.4.0):

  • Adding support for orphaned pools in the json objects.
  • Fixing a bug with empty irules preventing virtual server details to the shown.

/Patrik

0
Comment made 5 days ago by nrgpill 15

Tried version 4.4, running into this:

Exception calling "get_list" with "0" argument(s): "There is an error in XML document (14, 29)." At C:\Users\lhong\Downloads\Bigipreport-4.4.0\Bigipreport-4.4.0.ps1:688 char:2 + [array]$AvailableModules = $f5.ManagementProvision.get_list() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : InvalidOperationException

Exception calling "get_level" with "1" argument(s): "Could not find element by name: modules" At C:\Users\lhong\Downloads\Bigipreport-4.4.0\Bigipreport-4.4.0.ps1:689 char:2 + [array]$ModuleLevel = $f5.ManagementProvision.get_level($AvailableModules) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SoapHeaderException

0
Comment made 5 days ago by Patrik Jonsson 3060

Hi!

Thank you for reporting, I will check it out!

/Patrik

0
Comment made 5 days ago by Patrik Jonsson 3060

Ok, I checked those lines in the script. A few questions:

  • What version are you running?
  • Do you have ASM installed?
  • Do you have the latest version of the iControl powershell snapin?
  • Which version of Powershell are you running?

/Patrik

0
Comment made 5 days ago by nrgpill 15

Thanks for looking into this Patrik, really appreciate the quick help!

What version are you running?

BIG-IP 11.4.1 Build 637.0 Hotfix HF3

Do you have ASM installed? Do you have the latest version of the iControl powershell snapin?

version 11.00.0002

Which version of Powershell are you running?

PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.42000 BuildVersion 6.3.9600.17400 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2

0
Comment made 5 days ago by Patrik Jonsson 3060

Doh, 11.4.1 is quite old. I don't have a device that runs it. Since the ASM functions in the script seem to be a hit or miss for some users I am considering removing them until I start writing a REST based version of the report.

Did you try older versions of the script by any chance? 4.3.0 might do the trick for you.

/Patrik

0
Comment made 5 days ago by nrgpill 15

Thanks Patrik

Just tried 4.3.0 -

2017-06-23 09:04:29 Configuring the console window 2017-06-23 09:04:29 Pre-execution checks 2017-06-23 09:04:29 Pre execution checks was successful Add-Type : Cannot add type. The type name 'VirtualServer' already exists. At C:\Users\lhong\Downloads\Bigipreport-4.3.0\Bigipreport-4.3.0.ps1:500 char:1 + Add-Type @' + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (VirtualServer:String) [Add-Type], Exception + FullyQualifiedErrorId : TYPE_ALREADY_EXISTS,Microsoft.PowerShell.Commands.AddTypeCommand

0
Comment made 5 days ago by Patrik Jonsson 3060

Looks like you tried to execute it within the same Powershell session. Restart the shell/ISE and try again?

/Patrik

0
Comment made 5 days ago by nrgpill 15

Thanks. I started a new powershell session and got past the error. Now I am seeing "method invocation failed"

Method invocation failed because [iControl.LocalLBVirtualServer] does not contain a method named 'get_source_address_translation_type'. At C:\Users\lhong\downloads\Bigipreport-4.3.0\Bigipreport-4.3.0.ps1:970 char:4 + $virtualserversourceaddresstranlationtypelist = $f5.LocalLBVirtualServer.get_ ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound

0
Comment made 5 days ago by Patrik Jonsson 3060

Too bad. That one should really work on 11.4.1 according to F5 support docs.

Try commenting out line 970 and 971 and re-execute? Comment out by adding a hashtag before the code.

/Patrik

0