Recently the new update rollup version (UR2) for SCOM 2012 R2 was released to the general public. One of the things that came up in the community was the fact that the agent number was not increasing in the SCOM console when it was pushed through the console.
Stanislav Zhelyazkov worked closely with other community members to pinpoint the problem and found a workaround which is both genious and simple: Run repair from the console.
Please read his full blog post here:
A lot of exciting things are happening in the System Center community these days. Different new releases; new features are already delivered or are on the brink of being delivered shortly. TechED NA is right around the corner and other events are being planned as well. I always enjoy being part of these events and meet old and new friends all with the same interest: System Center products.
This blog post will be my (and your) one place to keep track of all sessions which I’m presenting and events I’ll be attending both national and International.
Hope you will attend one of my sessions and if you do, make sure to take the time to meet up!
If you have any suggestions or question about this list please sure to drop me a line on twitter or send me a mail
Event | Date | Location | Session | URL |
SCU Network | 22/05/2014 1PM CET |
Online Webinar | Exploring monitoring beyond the borders of Microsoft: Part 1 Linux monitoring | http://www.systemcenteruniverse.com/scunetwork.htm |
SCU Network | 27/05/2014 1PM CET |
Online Webinar |
Exploring monitoring beyond the borders of Microsoft: Part 2 PowerShell | http://www.systemcenteruniverse.com/scunetwork.htm |
SCU Network | 05/06/2014 1PM CET |
Online Webinar | Exploring monitoring beyond the borders of Microsoft: Part 3 Monitoring API based devices | http://www.systemcenteruniverse.com/scunetwork.htm |
ITPROceed | 12/06/2014 | Antwerp (Belgium) | Can SCOM monitor other stuff than Windows Thingies? Euhm yes itt can! | http://www.itproceed.be |
This post is part of a series on how I demonstrate how to use SCOM to basically monitor everything. The other parts can be found here:
After I have successfully been able to get data into SCOM from my Nest Thermostat and my Flukso energy meter it’s time to do some cool stuff with it. More devices are in the pipeline to get data into SCOM to create the ultimate Domotics controller or should I say “SCOMotics”…
One problem I have in real life is the fact that it’s very hard to explain to my wife and kids the process off radiant floors. It takes some time to heat up but it stays warm a long time so there’s no point in setting the thermostat to a higher point to get instant heat because it takes approx 1 hour to heat up 2 degrees celcius (something I also learned from getting my Nest thermostat data into SCOM).
But you can explain all you want if they find it chilly they’ll turn up the thermostat assuming it will get warm instantly but in fact they are just using more energy than necessary to heat the house in 2 hours when they already left the house.
So the mission was very simple. To stop them from doing this. Yes… I could put a lock code on the Nest thermostat and make it only available to me but if I’m not home and they really need to put the heating higher they are not able to do so.
So I came up with another solution: Setting a hard limit on the degrees and enforcing it.
So in short what do I need to achieve with SCOM:
So let’s start with the detection of the current target temperature. I can reuse the work I already did to read in this value and compare it to the limit. To keep track of things and as this is a more general approach I’ve documented the process of creating a PowerShell script monitor using Silect MPAuthor here: http://scug.be/dieter/2014/04/24/scom-creating-a-powershell-script-monitor-with-silect-mpauthor/
So now that we have the monitor in place let’s check out whether it’s working!
First of all I’m setting my nest thermostat to 20 Celsius while my limit is set to 19 Celsius:
After the first run the monitor is picking up that indeed the temperature is higher than the requested limit. This is detected by running the PowerShell script monitor we’ve configured earlier:
Here you can see that the Recovery target which I configured kicked in as well. This recovery target consists out of a PHP file which is located on my Webserver and loaded by using the PowerShell Invoke-Webrequest module..
Note: I’m running this recovery against my Watchernode class which consists of 1 server and thus I’ve copied the “settempnest.ps1” to the local folder of that particular server.
First open the monitor and click add on the “configure recovery tasks” section
Fill in the name of the recovery and select the status where to react upon.
Enter the command:
The powershell is running a invoke-webrequest on my webserver. The PHP script it is running is copied below:
[xml]
<?php
require ‘inc/config.php’;
require ‘nest-api-master/nest.class.php’;
define(‘USERNAME’, $config[‘nest_user’]);
define(‘PASSWORD’, $config[‘nest_pass’]);
date_default_timezone_set($config[‘local_tz’]);
$nest = new Nest();
$nest->setTargetTemperatureMode(TARGET_TEMP_MODE_HEAT, 18.0);
[/xml]
So after running the recovery we see the monitor changing back from error to healthy:
There we go… All good again saving some energy
And final check on the thermostat itself… Back humming at 18 degrees.
Sometimes it’s necessary to create a monitor to monitor something which is not included in the standard management packs. Unfortunately it’s not possible in SCOM to use PowerShell to crerate a script monitor in the scom console. Although it’s not a good idea to start authoring in the operations console it sometimes can be a quick and easy way to create a monitor.
Recently Silect Sofftware released a free version of MPAuthor to create your management packs. I’m using this to create my script monitors to collect and monitor the data which I use in my monitoring my home series: http://scug.be/dieter/2014/02/19/monitor-your-home-with-scom/
Download the tool here: http://www.silect.com/mp-author
Below is an example of how I monitor the target temperature set on my Nest Thermostat.
So open the tool and create a new management pack => Create New Script Monitor…
Name the script (if you have the script somewhere as a PS1 file it will load the script body automatically.
This is the script I’m using:
[xml]
param([int]$maxtarget)
[void][system.reflection.Assembly]::LoadFrom(“C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v2.0\MySQL.Data.dll”)
#Create a variable to hold the connection:
$myconnection = New-Object MySql.Data.MySqlClient.MySqlConnection
#Set the connection string:
$myconnection.ConnectionString = "Fill in the connection string here"
#Call the Connection object’s Open() method:
$myconnection.Open()
$API = New-Object -ComObject "MOM.ScriptAPI"
$PropertyBag = $API.CreatePropertyBag()
#uncomment this to print connection properties to the console
#echo $myconnection
#The dataset must be created before it can be used in the script:
$dataSet = New-Object System.Data.DataSet
$command = $myconnection.CreateCommand()
$command.CommandText = "SELECT target FROM data ORDER BY timestamp DESC LIMIT 1";
$reader = $command.ExecuteReader()
#echo $reader
#The data reader will now contain the results from the database query.
#Processing the Contents of a Data Reader
#The contents of a data reader is processes row by row:
while ($reader.Read()) {
#And then field by field:
for ($i= 0; $i -lt $reader.FieldCount; $i++) {
$value = $reader.GetValue($i) -as [int]
}
}
#echo $value
$myconnection.Close()
#$value = $value -replace ",", "."
if($value -gt $maxtarget)
{
$PropertyBag.addValue("State","ERROR")
$PropertyBag.addvalue("Desription","Target temperature currently set to " + $value + ": is higher than the maximum target temp " + $maxtarget)
}
else
{
$PropertyBag.addValue("State","OK")
$PropertyBag.addvalue("Desription","Target temperature currently set to " + $value + ": is lower than the maximum target temp " + $maxtarget)
}
$PropertyBag
[/xml]
Note that you need to pass the parameters through to SCOM via the propertybags. I also am a fan of doing the logic in the script itself as shown above to avoid any logic in SCOM afterwards. It’s far more easy to do the comparison in the PowerShell script. In this case I’m setting State to either ERROR or OK. This also avoids the format conflict of the output whether it’s a string or an integer.
I’m setting the maxtarget parameter to 19
Next you need to create the conditions for the monitor states:
As I’m only using a 2 state monitor I’m deleting the OverWarning state and only using UnderWarning (= Healthy state) and OverError (= Error state).
For the Healthy state I’m detecting the “State” property value as OK (note that I’m defining the Type as a String as the state is just plain text)
For the Error state I’m detecting the “State” property value as ERROR
Now we need to target the monitor. In my case it’s the watcher node target I’ve created earlier on.
Naming and enabling the rule
Set the schedule how many time to check the status of the max temp
Speciffy the alert that needs to be raised if any:
And create.
Now save the management pack and test it in your environment.
Just a quick note that System Center 2012 R2 Update Rollup 2 was released last night. For a full view of the different updates included head over to the official KB which is located here: http://support.microsoft.com/kb/2932881
Below you can find the links to the different fixes.
Operations Manager (KB2929891) (9 fixes in total)
Operations Manager – UNIX and Linux Monitoring (Management Pack Update KB2929891) (1 fix in total)
2929891 System Center 2012 Operations Manager R2 Update Rollup 2
Orchestrator (KB2904689) (3 fixes in total)
Service Manager (KB2904710) (15 (!) fixes in total)
Service Provider Foundation (KB2932939) (6fixes in total)
As always these packages are cumulative and hold all the fixes off Update Rollup 1 as well. I’ll be taking the different packages for a test spin in my lab environment and will keep you informed about the things I came across.
Last but not least the Windows Azure Pack also got a very extended update.
More info can be found here: http://support.microsoft.com/kb/2932946
On april 1st 2014 (a day I will remember for a long time due to various reasons) I held a webcast for Microsoft Technet Belux regarding automation of admin tasks in SCOM.
I went over the basics to get started, the pitfalls and gave some tips and tricks to get you going. This session was recorded and together with the slide deck it’s made available here:
http://www.slideshare.net/technetbelux/make-scom-work-for-you-and-not-the-other-way-around
In this demo I created a small PowerShell script that could save you some time when agents are installed in your environment through an image. In this particular scenario the agents are automatically in the “pending approval” list in SCOM.
Running this PowerShell will add them to the environment, make them remotely manageable, point them all to a management server of your choice and put agent proxying on true.
Feel free to adapt the script for your needs.
The script in question:
[xml]
#=====================================================================================================
# AUTHOR: Dieter Wijckmans
# DATE: 01/04/2014
# Name: agentpostinstall.PS1
# Version: 1.0
# COMMENT: Approve agents after install, make remotely manageable, assign to 1 management server
# and enable agent proxying.
#
# Usage: .\postinstallagenttasks.ps1 mgserverfrom mgserverto sqlserverinstance dbase
# Parameters: mgserverfrom: the primary server at this point
# mgserverto: The new primary server
# sqlserverinstance: the sql server where the opsdb resides + instance
# dbase: name of the opsdb
#
#=====================================================================================================
param ([string]$mgserverfrom,[string]$mgserverto,[string]$sqlserverinstance,[string]$dbase)
###Prepare environment for run###
####
# Start Ops Mgr snapin
###
##Read out the Management server name
$objCompSys = Get-WmiObject win32_computersystem
$inputScomMS = $objCompSys.name
#Initializing the Ops Mgr 2012 Powershell provider#
Import-Module -Name "OperationsManager"
New-SCManagementGroupConnection -ComputerName $inputScomMS
#Get all agents which are in pending mode and approve
$pending = Get-SCOMPendingManagement | Group AgentPendingActionType
$Count = $pending.count
echo $count
If ($count -eq $null)
{
echo "No agents to approve"
Exit
}
Else
{
Get-SCOMPendingManagement | where {$_.AgentPendingActionType -eq "ManualApproval"} | Sort AgentName | Approve-SCOMPendingManagement
}
#Let all servers report to 1 primary management server
$serverfrom = Get-SCOMManagementServer | ? {$_.name -eq "$mgserverfrom"}
$agents = Get-SCOMAgent -ManagementServer $serverfrom
$serverto = Get-SCOMManagementServer | ? {$_.name -eq "$mgserverto"}
Set-SCOMParentManagementServer -Agent:$agents -FailoverServer:$null
Set-SCOMParentManagementServer -Agent:$agents -PrimaryServer:$serverto
Set-SCOMParentManagementServer -Agent:$agents -FailoverServer:$serverfrom
#Set all servers to remotely manageable in SQL
$ServerName = "$sqlserverinstance"
$DatabaseName = "$dbase"
$Query = "UPDATE MT_HealthService SET IsManuallyInstalled=0 WHERE IsManuallyInstalled=1"
#Timeout parameters
$QueryTimeout = 120
$ConnectionTimeout = 30
#Action of connecting to the Database and executing the query and returning results if there were any.
$conn=New-Object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server={0};Database={1};Integrated Security=True;Connect Timeout={2}" -f $ServerName,$DatabaseName,$ConnectionTimeout
$conn.ConnectionString=$ConnectionString
$conn.Open()
$cmd=New-Object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables
#Set all servers to agent proxy enabled
Get-SCOMAgent | where {$_.ProxyingEnabled.Value -eq $False} | Enable-SCOMAgentProxy
[/xml]
It can be downloaded here
Note
Yesterday I have received the news that I am awarded with the Microsoft Most Valuable Professional award 2014 in Cloud and Datacenter Management.
I can’t describe how thrilled I am to be a part of this community to share even more knowledge with true experts in the field to gain even more insight in the System Center products.
This couldn’t have been possible without the help and support of a lot of people who guided me into the world of System Center. However there’s a small problem with name dropping: You are always forgetting some people. But hey I’m happy to take the risk.
First of all I would like to go back to 2010. While I was working at a client I came across Kurt Van Hoecke (who’s an MVP now as well) who introduced me to the System Center Suite. I did have an ITIL background but never heard of System Center as such. I agreed to join him to MMS2010 and barely got there due to the ash cloud. During that MMS I already met the people of System Center User Group and other System Center engineers who became good friends afterwards.
Time went by and I started to experiment with SCOM and other Sysctr products. I changed employer specifically to start working with Sysctr products and from then on it started rolling.
I officially joined SCUG Belgium in 2011 and have blogged ever since. Started speaking at events as well with already recently a couple of highlights (Expertslive, SystemCenteruniverse US,…) and hopefully many more to come.
During the past years I enjoyed sharing my knowledge, findings regarding the Sysctr products, helping out people with issues and just meeting new people with the same passion. I can’t count the hours I’ve spend on these activities but I enjoy doing it otherwise you would not continue right?
So what now? Well euhm basically nothing. I will continue blogging, speaking, helping out and hopefully meet even more people with the same passion. As a board member of SCUG I can say that we will continue to provide a platform for System Center content in Belgium and throughout the world. If you would like to start blogging / speaking / contributing here just drop me a line.
So finally I would like to start name dropping… The dangerous stuff right?
First of all thanks to Arlindo Alves and Sigrid VandenWeghe: As Microsoft Belux community leads they provide us (and me) with a solid platform to build and grow our community platform.
Second I would like to thank the members of the SCUG who helped me in the beginning of my wanders through the System Center world.
Third I would like to shout out to some specific people who had a significant impact on my journey II ‘ve travelled so far. Thanks Maarten Goet, Kenny Buntinx, Tim de Keukelaere, Cameron Fuller, Kurt van Hoecke, Kevin Greene, Marnix Wolf, Mike Resseler and so many more I’m forgetting to mention right now.
It’s because of these individuals and much more due to the buzz in the Sysctr community that I really like sharing my knowledge and meeting new people while I’m speaking
Last I would like to express a special thanks to the Sysctr Community members who provided good content in the past, now and in the future. It’s their blogs, effort and guidance who helped me in the beginning to gain a good insight in the Sysctr world.
Some blogs that really helped me in the beginning (and still are helping me today)
Last but not least I want to encourage you to share your knowledge as well in the community. Every bit of effort even the smallest ones really contribute in keeping this community alive and helping others to fully understand the potential of the system center suite. Hopefully see you at one of the events in the near future!
Connect with me on
Face it… Sometimes keeping SCOM alive can be a real challenge especially when there are a lot of people who have access to the console… Sometimes it feels like monitoring SCOM itself can be a full time job!
I came across a lot of environments and one of the things I’ve learned is in fact if you automate a lot of tasks you already gain a lot of time. Well there’s PowerShell for that!
It gives you the opportunity to go from a SCOM zero to a SCOM hero by freeing up more time to do the cool stuff… Because let’s face it nobody likes scrolling through alerts, approving agents, checking the status of agents,…
In this session I’ll walk you trough some of the scripts I always implement when running a SCOM project to give me control, flexibility and save me some time in the end.
Apart from these scripts I’ll showcase also the awesome power the vast System Center community can bring you to even more facilitate the troubleshooting, configuration and manageability of your environment. The community is out there… No need to build something which is already out in the open. I’ll give you some pointers to get the community layer in your environment and will encourage you to start sharing in the process…
So if you want to save some time, see some cool pointers + tips and tricks to automate some of those tedious tasks?
Make sure to sign up below for my online webcast!
Hurry up because seats are unlimited!
Register here:
https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032579216&Culture=en-BE&community=0
This blog post is part of a series check out the other posts in this series:
So after all this hard work. To get the data into my MySQL dbase and into SCOM. What can I actually do with it?
This is the second part of a far greater monitoring project I’m building to basically monitor my house but now I have control over the temperature and heating in my house using the Nest Thermostat monitoring pack AND can check on my power consumption and basically control my electrical bill.
I’ve created the views in the flukso monitoring view for electricity:
Nothing much we can do with this view as this is actually giving me a good reading. It’s in fact what we can do with the data which get into SCOM. Because this data is now into SCOM we can use this data to generate alerts when sudden peaks occur.
A cool one I have setup is the peak right around supper. We have an electrical furnace so when someone starts cooking at around 18h (6PM) I now get an alert becaus the total power consumption is above 4000 watt at that time…
So I know now perfectly well when I need to rush home to get in on time for dinner…
Now that I have this data in I can move forward and build a cool demo to show the added value of having this data in.
This is the second part of the puzzle of monitoring my house. In fact this process can also be used when having a solar power installation to see the generated energy on the graph.
In short notice I will be adding Water readings to the graph as well and have another few things I would like to add to the management pack to be able to patrol my house but more on that later.
This blog post is part of a series check out the other posts in this series:
So after we have successfully set up the connection between the flukso and our mysql dbase with basically following the same route as the nest thermostat data is pouring into our own dbase on the same device..
The only thing left to do is get this data in SCOM as well. I’ve created a separate management pack and PowerShell script for this to give people the ability to install it separate from each other but the goal is to create one big management pack in the end.
This blog post will explain how to retrieve the data with PowerShell (of course) and dump it into a property bag which is readable by SCOM. This is the second phase in our schematic example:
We basically need the same requirements as for the NEST thermostat monitoring as we ar using the same route:
What do we need to retrieve the data out of the MySQL dbase.
There’s no additional install required on the mysql server although you will need the following to connect:
I’m using this on a virtual Win2012 machine without any issues.
Retrieve the data from MySQL using a PowerShell script
This is the script I created to get the data out of MySQL.
Note that this script only is retrieving one value. It’s possible to retrieve multiple values all at once but I preferred to use different scripts to get the different parameters out of the dbase.
The script has some prep work for water consumption in there as well but this is not yet fully operational as I need to convert the pulses to l/min so more on that later.
The dbase is filled with data every minute so I run the PowerShell script below every 120 sec to get data in. The data is measured in watt.
The script used:
It can be downloaded here: http://scug.be/dieter/files/2014/02/perfdatafrommysqlelectricity.rar
[xml]
Param($energysort)
[void][system.reflection.Assembly]::LoadFrom(“C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v2.0\MySQL.Data.dll”)
#Create a variable to hold the connection:
$myconnection = New-Object MySql.Data.MySqlClient.MySqlConnection
#Set the connection string:
$myconnection.ConnectionString = "database=flukso;server=<fill in ip of server>;user id=<user>;pwd=<password>"
#Call the Connection object’s Open() method:
$myconnection.Open()
#uncomment this to print connection properties to the console
#echo $myconnection
$API = New-Object -ComObject "MOM.ScriptAPI"
$PropertyBag = $API.CreatePropertyBag()
#The dataset must be created before it can be used in the script:
$dataSet = New-Object System.Data.DataSet
$command = $myconnection.CreateCommand()
#$command.CommandText = "select date, time, sensor_1 from fluksodata";
$command.CommandText = "SELECT Sensor_1 FROM fluksodata ORDER BY IDTimestamp DESC LIMIT 1";
$reader = $command.ExecuteReader()
#echo $reader
#The data reader will now contain the results from the database query.
#Processing the Contents of a Data Reader
#The contents of a data reader is processes row by row:
while ($reader.Read()) {
#And then field by field:
for ($i= 0; $i -lt $reader.FieldCount; $i++) {
$value = $reader.GetValue($i).ToString()
}
}
echo $value
$myconnection.Close()
$PropertyBag.AddValue("energysort", $energysort)
$PropertyBag.AddValue("electricity", $value)
[/xml]
This script will basically do the following.
Note: I’m also using a variable $energysort to identify the flukso sensor.
Now to get all the different parameters as mentioned above the only things you need to change are:
If everything goes well you have your data in your MySQL dbase now and can retrieve it remotely via PowerShell to pass it on to SCOM.
Now that we have the PowerShell in place. Check out this blog post to make a management pack for it: http://scug.be/dieter/2014/02/19/nest-thermostat-monitoring-pack-part-3-create-the-mp/
Download the MP here: http://scug.be/dieter/files/2014/02/flukso.energymeter.rar