Okay, so “road warrior” may be a stretch. However, as a sales engineer here in SolarWinds EMEA, I still do rack up a decent amount of international travel every year. Leon has already written a post, “A CONVENTION GO-ER’S GUIDE, PART 1,” where he covered stuff to bring to a conference, but I thought a post covering more international type travel might be of interest.


  1. Spend money on proper luggage. Traveling can be hard enough, without having to deal with annoyances like bags with squeaky wheels and broken handles. If you travel a lot, it is worth investing in proper equipment. I have numerous bags that I use for different occasions, all of which work and work well. This means that not only can I get to my destination with minimum fuss, but my contents are also more likely to get there intact.
  2. Bring carry-on whenever possible. This is advice that’s commonly known by business travelers, but it’s worth reiterating. Carry-on not only means that you are less likely to lose luggage; it is also faster when you arrive. (According to George Clooney’s character in the 2009 film “Up in the Air,” it is 35 minutes on average to claim your luggage, but I am not sure what the scientific study was that was behind that particular claim.) One of the biggest wins for me, however, is that I have less to carry on the other side. A big bonus, if I need to catch the London Underground, for example. With this in mind, my go-to bag for short business trips is a Samsonite® hard-sided carry-on roller. It is not the cheapest, but it allows me to bring both my laptop, and several days of clothes, in a form factor that keeps the weight of my back, while being small enough to work as carry-on.
  3. Use a sticker as a name tag. Over the years, I have found that traditional luggage tags are prone to wear and tear, and hence can get lost. However, a name sticker at least allows it to be identified easily.   Suitcase.jpg
  4. Be fault tolerant. If I need a hard copy of something when I travel (like my driver’s license or passport), I’ll always keep a scanned copy in Dropbox®, just in case something goes amiss. Similarly, if I have soft copies of things that I might need (such as my itinerary), I will print those just in case my phone dies. This goes all the way to ensuring I have a things like a small first-aid kit (more in the next point), wash bag, and polo shirt with me on carry-on (even if I have luggage checked).
  5. Have a mini first-aid kit. A lot of travel tends to not lead to the healthiest lifestyle, and as a result, I’ve succumbed to various ailments over the years. However, I have found that by having some standard, over-the-counter medicines to treat things like stomach aches, allergies, toothaches, etc., can prove invaluable when you’re on the road and away from a chemist (or pharmacist, depending on your locale).
  6. Your phone can do a lot. Of course, you can use your phone for the usual texting/calling/social media duties when abroad (especially if you have a good roaming package). I also have mine loaded with useful travel apps like Tripit®, Uber®, Google® Maps, and Dropbox (see point 4). For entertainment, I ensure my phone is synced with offline content from Netflix®, Spotify®, and Audible®. In addition, for some less conventional use of the camera, I always take pictures of where my car is parked in the airport, as well as taking photos of receipts.
  7. Pack an extension lead. A bit of an unusual one, but I discovered Powercubes online, and haven’t looked back. One of the annoying things with many hotels is the disconnect between where you want to have your devices, and where the actual power sockets are located. As an added bonus, it also means I only need to bring a single international adapter
  8. Modules! I would not say I have OCD, but when traveling, I want to know where exactly everything is. This helps not only reduce time to get through airport security, but it allows me to reuse things for different workloads. As an example, when I’m at home, my Maxpedition® Organiser goes everywhere with me. (It holds items such as a battery pack, USB cable, earphones, pens, a notebook, a Leatherman® Skeletool® CX, a 4-in-1 screwdriver, a Spork,and a Led Lenser® flashlight). Combine that (minus anything that may cause issues with airport security, such as the Leatherman, screwdriver, and light) with my smartphone, and it contains everything I need to pass hours on airplane. It even has a keyclip, so you don't lose your car keys! (cc sqlrockstar) Even my notebook is “modular.” Simply by adding a penholder, I can now carry two pens all the time, whenever I need the notebook. Other modules include a document holder (passport, tickets, etc.), packing pods for clothes, and a Grid-It® for other electronic accessories.
  9. Keep the bag packed. Usually, as soon as I get back from one trip, I start repacking for the next one. This means I am much more likely to replenish any consumables (such as toiletries or medicines) that I may have gone through. However, it also means that if I’m ever called on at short notice, then I’m good to go!
  10. Never turn your nose at a power socket. This is a fairly common-sense tip, but even if I know my laptop battery should have more than enough juice to last for a particular trip, if I get a chance to plug in and keep the battery charged, I’ll take it. Why? Well, let’s just say I have been on the wrong end of cancelled flights, in countries where charging wasn’t possible!




And that concludes my top 10 tips for business travel. I would love to hear yours in the comments below!

Here’s a nice tip that can help you eek out a bit more performance from your Orion® server. The following approach is used in some larger environments to resolve out-of-memory issues experienced by the Orion Module Engine. However, it’s also safe in environments where there is spare RAM that the service might use.


How to apply the change

Previously, the change involved editing a configuration file directly. However, the latest versions of Orion Core   have made this process much simpler. Navigate to one of the two URLS below (the global option will be the one to run, unless there is a specific reason not to). This will set the change on not only the main Orion server, but also on all the additional polling engines.


The advanced configuration settings editor pages are hidden and can be accessed via link:

    • {OrionWebsite}/Orion/Admin/AdvancedConfiguration/Global.aspx - leads to “Global” tab
    • {OrionWebsite}/Orion/Admin/AdvancedConfiguration/ServerSpecific.aspx - leads to “Server-Specific” tab
  • Find ForcePluginsInSeparateProcess under SolarWinds.BusinessLayerHost.BusinessLayerHostSettings
  • Set ForcePluginsInSeparateProcess to have a “tick”


Business Layer Host Settings.jpg


You will then be prompted to restart the Orion Module Engine. This is safe to do, and should not affect any customer experience in the console.


What exactly does the change do?

The Orion Module Engine loads numerous different plugins when it runs (Examples: Orion, NPM, Interfaces, UnDP, VIM, Wireless, SAM, UDT, NCM, etc.). Since 32-bit executables start to run out of memory close to 1GB of RAM, a single plug-in running in the service can act as bottle for the others. The changes mentioned above simply allow each individual plug-in to run in its own process. So, not only does this simplify troubleshooting in some support issues, but it also has the bonus of improving performance in perfectly healthy machines.


And how do you know it works?

• Open Task Manager -> View-> Add Columns -> Add "Command Line"

You can then see how much CPU and memory each one instance of the business layer uses!


Disclaimer: While this change can be considered safe and extremely low-risk to deploy, as always, every change to a production system should be first thoroughly tested, and steps should be taken to allow roll-back if things go awry.

As a follow-up to my last post, this week I'll be looking at different options for how to make the PowerShell® code for my Busylight more manageable and easier to reuse. To start with, I'm going to focus on simply setting the Busylight to either be green, red, or blue. We'll initially look at just using a basic script, and then we'll move on to making code more portable via functions.


The simplest way to do this is to just copy all my code (the massive five lines) into a .ps1 file, and change the colour values as needed. So, I could end up with three virtually identical files, (SetBusyLightToGreen.ps1, SetBusyLightToBlue.ps1, and SetBusyLightToRed.ps1), where the only thing changed is something similar to:

$Color.GreenRgbValue= 255

Running is easy; it's not any more complicated than calling .\SetBusyLightToGreen.ps1. However, that's not ideal, because any future change would then require me to replicate it across x number of files. For example, if I wanted to add in some error handling, it's now three updates. And if I want to create a file for the colour purple—well, that’s another file to look at.


A better approach is to move all my code into a single file, and break the units of work into smaller code. When the script runs anything not in the script body will run, and code within the functions will only run when the function is called. Creating a function is simple. Just use the FUNCTION keyword, followed by the function name, and the script code itself enclosed within a pair of braces. So, in this example, the first three lines are called as soon as the script is run, and the functions only when explicitly called. Not only can we now call this function within the script, but once we open the console running the script, those functions will exist in-memory, so they can be called whenever we want. We can also make use of tab completion. Each function should ideally do just one thing, and do that one thing well. Also, it should be able to work with objects both as inputs and outputs on the pipeline. These are more advanced topics, and we’ll go into further detail in future posts, but they’re worth bearing in mind even at this early stage.

Naming Conventions

Before we go further, it’s worth spending a few minutes discussing naming conventions. When it comes to naming PowerShell functions, consider cmdlets, even though technically a cmdlet needs to be something that is compiled. Essentially, each function should follow a verb-noun format, with the verbs in particular needing to conform to approved verbs. This is why things like “set-busylighttogreen” makes it easier for you to understand what your code does, while also acting as a helpful document for the next person who has to read it. You should also get in the habit of always using the full command name in scripts. But if you’re working from the CLI, you can also set aliases for your most common commands. So, instead of doing a “get-childitem,” you can use a ls, dir, or whatever is more intuitive. I tend to use notepad++ quite often, so I have an alias set in my profile. Instead of calling “C:\Program Files\Notepad++\Notepad++.exe,” I can now just call np from the console.

Why All the Fuss About Functions?

You’re probably asking, “Why bother with all of these extra steps?” Well, the end goal here is to allow us to easily reuse code. While a simple script may do the exact job today, if we have a similar but different requirement farther down the line, a rewrite would be needed. Having our code in functions also gives us the flexibility to determine how we call the code. Not only can we reuse code in other scripts simply by copying and pasting, but we can also place it in our profile script so that it's always available from the console. Ultimately, however, we will see that by placing our functions in modules, we will have the most flexible deployment approach. Wrap-Up In this post we looked at the basics of building a function. In the next, we’ll look at the steps involved in converting these functions into a module. We will continue to build on this in future posts, discuss error-handling and implicit help information, as well as ways to use Pester to build tests around our code.

Exit-PSSession "Blog Session"



Neues Thema…nein, wir machen einfach weiter wo wir hier aufgehört hatten!


Unser System steht also und wir wollen die ersten Daten hineinbekommen.
Nach dem Einloggen wird man von diesem freundlichen Ding begrüßt:





Und im nächsten Bild geht es dann auch schon los!




Bevor man hier anfängt kurz einen Schritt zurücktreten und sich den Adressraum vorstellen.

Meistens findet sich eine Situation ähnlich wie die folgende:

Subnet X mit Servern und Infrastruktur, statisch, nicht viele Änderungen
Subnet Y mit Workstations und Laptops der Mitarbeiter
Subnet Z mit BYOD, vielleicht ein Wifi im Empfangsbereich


In der Realität würden wir natürlich nur X überwachen und den Rest ignorieren, aber wir sind ja hier in meinem Posting und nicht der Realität! Dichterische Freiheit!

Also drei Subnetze mit ansteigender Dynamik/Aktivität.


Solarwinds erlaubt es, mehrere Erkennungsvorgänge getrennt voneinander zu Nutzen. Daher ist es eine gute Idee die Vorgänge auch getrennt anzulegen wie die Logik es empfiehlt.

Nehmen wir also einmal ein (fast) ganz normales 24bit Netz:





Agents! Beim allerersten Vorgang sind natürlich keine Agents zu erwarten, daher lasse ich die Box wie sie ist:




VMware ist der nächste Punkt.



Grundsätzlich nutzen wir SNMP und VMware API zur Kommunikation.
Für die API wird ein Konto auf dem Host (oder dem Vcenter) mit mindestens read-only Zugriff benötigt.

SNMP ist serienmäßig deaktiviert und muss vorab eingerichtet werden. Es gibt ein paar Anleitungen direkt bei Vmware, ich finde jedoch die hier kompakter:

Wenn möglich ist das Polling über das Vcenter zu bevorzugen. Vcenter spricht ohnehin mit den Hosts, also würde das Hinzufügen der Hosts an dieser Stelle unnötigen Stress verursachen.

Ich habe in dem Subnet keine Hosts also nehme ich den Haken raus und gehe weiter.





Und da ist unser aller Favorit!

Manchmal leider ich an temporären Schüben von Paranoia und ich bin damit nicht allein. Daher würde ich den „private“ String definitiv entfernen, auch wenn die wenigsten Solarwinds Produkte tatsächlich den rw String nutzen.

Ich kann hier eine beliebige Anzahl an Strings hinterlegen, es macht Sinn diese nach Häufigkeit zu sortieren – wie bei ACLs.

Natürlich ist das System kompatibel zu 1,2 und 3:



Warum fällt mir jetzt nur eine alte TV Show mit drei Toren und Gewinnen dahinter ein. Egal, machen wir weiter.


Windows Konten zum Server Monitoring:




Hier wird ein lokaler Admin bevorzugt.
Ja, es ist möglich ein non-Admin Konto zu erstellen aber nach dem Sichten der Schritte werden sicherlich die meisten von der Idee Abstand nehmen:


Wir sind fast fertig!




Ganz oben zuerst eine Sache, die im letzten Jahr dazu gekommen ist.
Hier wird schlicht und einfach gesagt, wenn wir das Endgerät nicht identifizieren können, ignorieren wird es. Die alten Hasen die das hier lesen erinnern sich sicher noch an die „unknown devices“ – die gibt es dank dieser Einstellung nicht mehr!
Vielleicht möchte ich aber auch nur wissen, ob ein paar Printer überhaupt noch da sind und antworten, sonst aber nichts? Okay in dem Fall muss der Regler natürlich verschoben werden.


Dann stellen wir ein, ob wir SNMP oder WMI bevorzugen bei Geräten die beides unterstützen.
Was wäre das? Ein Windows Server mit aktiviertem Community String. Wer macht sowas


Ganz unten dann etwas Automatik. Wenn wir den unteren Punkt auswählen, wird ein Assistent geöffnet dem ich von vornherein mitteilen kann, was ich eigentlich überwachen möchte




Aufgepasst – unter dem Punkt „advanced“ befinden sich ein paar nette Spielzeuge:




Dadurch können wir von Anfang an ziemlich granular gehen und müssen nicht hinterer sortieren was uns interessiert und was nicht.

Während der Evaluierungsphase nehmen die meisten aber „manual“ und überwachen einfach alles, kostet ja nichts!


Bei den weiteren Einstellungen kann man normalerweise alles in den Vorreinstellungen lassen





Bei Problemen, wenn z.B. Geräte nicht erkannt werden obwohl die Konten stimmen, kann ich hier die Timeouts bzw Anzahl der Versuche hochschrauben.


Schließlich das Ansetzen als Aufgabe




In obigem Beispiel nur einmal, aber hier kann man wieder automatisieren:





Spätestens hier ist dann der Punkt wo es Sinn ergibt, verschiedene Erkennungen nach logischer Struktur zu sortieren um den Stress gering zu halten.
Die Maske ist übrigens die gleiche die man später bei Berichten sieht.


Auf geht’s!





Was hier passiert ist simpel – wir führen einen Pingsweep durch und dann werden bei jeder Pingantwort die Zugänge ausprobiert die ihr bereitgestellt habt (SNMP, WMI).

Wenn ein Konto passt kommunizieren wir mit dem entsprechenden Protokoll um festzustellen mit wem wir es zu tun haben.

Mein Vorgang ist beendet und hat nur ein Gerät gefunden:



Ich wähle es aus und importiere:



Schaut aber noch einmal kurz hierhin:



Ignorelist…nein, das ist kein Skype!
Wir nutzen den Button z.B. bei automatisierten Vorgängen wenn im Scanbereich eine Node ist die uns nicht interessiert. Wenn wir diese einmal ignorieren wird sie nie wieder vorgeschlagen.

Möchte ich dann doch einmal sehen was damit los ist, finde ich die Node in der Ignorelist ganz oben rechts





Reden wir noch kurz über zwei weitere Fälle.


Erst einmal – wie füge ich eine einzelne Node hinzu ohne ein ganzes Netz zu scannen.

Klickt einfach auf Einstellungen --> Knoten verwalten



(Settings --> Node Management auf English)


Das kleine Plus



Dann die IP Adresse oder den Hostnamen. Aufgepasst; wenn der Server auf dem Solarwinds läuft die IP nicht auflösen kann nutzt der Hostname nichts. Die IP ist immer die bessere Wahl.

Nun wird die entsprechende Pollingmethode ausgewählt:



Dann einfach den Schritten folgen.


Fall zwei – vielleicht haben wir es mit einer Firewall zu tun, die sich weigert ein Echo zu geben. Böse!
Wir nutzen ICMP als „heartbeat“ um festzustellen ob die Gegenstelle überhaupt noch da ist, sowie dem Ermitteln der Antwortzeit welche uns einen Einblick in die Performance gibt. Wenn nun kein Ping zurück kommt wird die Node als nicht verfügbar angezeigt.

Hier ist ein Workaround:



List Resources erlaubt uns SNMP auch zum Überprüfen der Verfügbarkeit zu nutzen:


Dies stellt jedoch mehr Stress an das Zielsystem und sollte daher nur die Ausnahme sein.
Eine bessere Idee wäre, ICMP von der Solarwinds IP intern zuzulassen als Regel – das tut nicht weh, auch nicht bei einer Attacke von Paranoia


Das war es dann. Das System läuft und ihr habt die ersten Nodes hinzugefügt.

Aus der Praxis würde ich jetzt empfehlen das ganze Ding erst einmal sitzen und Daten sammeln zu lassen, bevor irgendetwas anderes konfiguriert wird.
Nach ein paar Stunden sind schon viele Abruf-Zyklen durchgelaufen und die ganzen Charts zeigen sinnvolle Informationen an. Nach sieben Tagen steht dann die automatische Baseline-Konfiguration zur Verfügung – aber das ist dann wieder ein anderes Thema.


Viel Spaß mit der Lösung.
Anregungen, Fragen und Schnitzel bitte unten anhängen!



SolarWinds uses cookies on its websites to make your online experience easier and better. By using our website, you consent to our use of cookies. For more information on cookies, see our cookie policy.