Blog

Microsoft System Center Advisor Limited Preview is live!

There are days that products become hot on the spot. It’s all about cloud lately and sometimes it’s amazing how fast things are evolving for us ITPRO’s.

One of these cool products which leverages the possibilities of the cloud, uses the full potential of the virtually endless storage space to store data and use the computing power of the cloud is System Center Advisor.

printscreen-0207

When System Center advisor first emerged it was a small service in the cloud where you had to seperately make a small proxy agent to send data into the cloud and configure it to get usefull data. You had to set up or designate a server as a gateway to send data to the online service. The data was only updated once per day and was only available through a webconsole. It was a nice product but it was way ahead of it’s time for the time being. One of the problems it had was the fact that not a lot of people understood the need for advisor as it was branded as just a system center advisor software…

The potential of the product was already there but it had to be easier to use…

Since SCOM 2012 SP1 Advisor got a revamp and is fully integrated in the SCOM console. It received more rules and better performance and people started embracing the fact that they gained access to the vast dbase of microsoft filled with best practices to automatically evaluate their systems. No need for those complex mbsa scans (ouch remember those…)

More and more people started using the service but still for a lot of customers I visited System Center Advisor was not that well known. It was rather a big unknown. As soon as I explained the possibilities they started using and appreciating the service and installed it in their environment.

[jwplayer mediaid=”1421″]

source: https://channel9.msdn.com/Blogs/C9Team/System-Center-Advisor-Limited-Preview

Now with the new Limited Preview Microsoft is showing the future of this cool product. All the different and familiar functions are still there but there’s more…

Intelligence Packs

If you are familiar with SCOM you’ll definately will know Management packs but Intelligence Packs? Intelligence packs are the new way of adding functionality to your Advisor environment taylored for your business. It is the key to customizing your Advisor to your environment to show the data you specifically want to show in Advisor.

These management packs are stored in the Advisor Gallery and will be installed online. In a later stadium it will be possible to configure and create your own intelligence packs to gather specific data for your environment to further customize your environment. Similar to what you are doing with your management packs in your SCOM environment.

Currently there are Intelligence Packs for:

advisor1

All are available from the Intelligence Pack Gallery and install with just a couple of clicks. Not much configuration is needed afterwards.

The store can be reached through the Intelligence Pack button on the portal:

printscreen-0203

Let’s for example take the Log Management Intelligence pack (this will take some time to get used to). It enables a cool new feature to gather eventlogs of your servers in one central place and search and query them to get a one place to get insight in your environment.

After we have installed the Intelligence Pack through the console it will appear in our main portal view:

printscreen-0216

(notice that I already played with the other intelligence packs as well)

So if we click on the tile “Log Management” we’ll jump to the configuration and tell Advisor which logs we would like to gather in our Advisor to get the insights with queries. Again this is a great way of gathering all your data in one place. When you have all the data in one place you can use it to get insight in your environment because let’s face it: It’s you who knows your environment best.

printscreen-0217

After we have told Advisor to gather the System log on all the machines which are connected to the advisor (both Errors and Warnings) the Intelligence pack will kick in and will gather the info for the first time to give you a view of the collected data.

Search Data explorer

Now that we have data in our Advisor we would love to find out things on our own to get perhaps the root cause why systems are running slow for example. The search can be performed by using the Search Data Explorer. Open the Search Data Explorer on the right to access the search tool:

printscreen-0208

This will open the Search where you can start your journey through the gathered data:

printscreen-0209

On the right you’ll have common search queries to get you started. Expect more and more lists for search queries to come online but if you really need to create your own search query you can always check out the Syntax Preference link under documentation to get you going.

In fact there are 3 easy steps to get your data:

1. Enter the searcg term:

In this example I’m using * to get all my data because Advisor hasn’t run that long it doesn’t have a lot of data yet so I would like to see what’s already in there:

printscreen-0210

Next step is to filter the resulte with the tools in the right column to really only get the data we are after:

The facets are the different objects gathered by type an facets per type. In addition to this it’s also possible to scope what a time frame for the events gathered. This can come in handy when you want to troubleshoot a problem on your environment for example:

printscreen-0211

For now this data is not exportable through PowerShell and only available online. Futher down the road in the developement of Advisor it will be possible to query this data through PowerShell to use the data in your own applications.

Feedback

Another feature that has been introduced in the console is the feedback option.

The button is located on the bottom right and will open the feedback page in a separate window:

printscreen-0212

This will take you straight to the feedback window.

printscreen-0213

People who already worked with connect and forums will find that it’s a mix between those 2. In here you can give tips or requests to further enhance the product with new possibilities but also file bugs you’ve came accross. Members of the community can answer questions to get you going or vote for another request.

This will give you a nice one stop place to get you up to speed fast with the product but most important will give you the opportunity to give feedback first hand. This list will be used by the product team involved to prioritize the new enhancements.

Conclusion

This Limited preview of the next generation of Advisor will give the possibility to gather even more data about your environment and use this data to gain further insight in your environment. Because the system has been setup with Intelligence Packs it’s very easy to taylor the console to your needs. Add the performance of the cloud storage and computing to the game and we have a new additional powerful tool to gather and analyse data.

Will this completely replace all other monitoring needs? Not yet… Will it be a great enhancement to the tools we already have in place? Certainly!

This tool is free of charge during the preview period. So for now the only thing that is stopping you from using this tool is… yourself.

Keep an eye on the blog as I’ll dig deeper into the different intelligence packs when data comes in

A first glance at Squared-Up Operations 1.8

Face it: In my believe Operations Manager is a cool product with lot’s of capabilities out of the box. But there is room for improvement as well. One of these areas of improvement is showing the data which you eagerly collect in SCOM to the operators or even to people who are not that tech minded. All they want to see is whether everything is running fine and they can happily (I do hope so) continue their work. SCOM is very good in showing the data to the Operators but is lacking these capabilities of showing data in a more simple way.

Don’t get me wrong on this… It DOESN’T need to have this capability on board by default… Luckily there are a number of players on the market regarding easy setup dashboards and visualizations of this data in your SCOM environment like Squared-up.

During MMS 2013 I came across Squared-up. A small UK based company who took a rather different approach towards dashboarding. The difference is in fact that they are not focusing on creating dashboards in the console as such but generating these dashboards on top of a lightweight HTML5 server which can be installed on a management server or another server if you like. All you need to do is install the Squared up app and connecting it to your environment. From there on all the data is collected by tapping into the SCOM SDK without interfering with the console as such.

No fuzz, no hassle, just straightforward dashboards out of the box…

So the first part of this blog series (yep I will dig deeper into this program) is to see how we are going to install the product and see what is available out of the box. (Note that the print screens are based on version 1.7. I recently install 1.8 on top of this version without issues)

Website: http://www.squaredup.com/

Install

So let’s start the install:

SNAG-0266

Read through the entire License agreement like I always do (right)

SNAG-0267

Install the HTML5 web-server

SNAG-0268

Yep installing…

SNAG-0269

After install we need to connect it to our management group to be able to tap into the SDK.

SNAG-0270

When all is done we can open the console for the first time by clicking on the link provided on screen:

SNAG-0271

We are using the Operations manager user “administrator”. No extra users need to be created just the users already present in SCOM will do:

SNAG-0272

After first log in you need to put in your activation key and you are good to go.

SNAG-0273

To my surprise data was already coming in and being shown in the website. Without any additional configuration or settings I already have standard view of my environment.

SNAG-0274

First browse through the standard views:

Active Directory view out of the box

SNAG-0313

On the left we get a quick overview of the status of the different services and on the right we get straight out of the box the graphs about the key perfomance indicators straight out of the Datawarehouse in real time. Pretty impressive if you ask me.

Web servers view out of the box:

SNAG-0314

So if I click an alert it will instantly open a new web view with the alert and all the different parameters of the alert in a very sleak design giving you all parameters and data in a glance.

SNAG-0308

This dashboard is also fully functional. It’s possible to close alerts, assign alerts or even reset monitors in a glance as shown below.

SNAG-0309

First conclusion

I’ll definitely have to play more with the product to get to know it’s full potential but so far I’m pleased with what I’m seeing: Easy setup, dashboards straight out of the box filled with data, speed (although my environment is running locally on my demo laptop),…

In a further stadium when I find the 25th hour in a day I’ll dig into the creation of custom dashboards which hopefully will be the same easy setup as the install.

Small tip

If you want to test drive this web console without moving back and forth on your screen you can always open it in a Page view in the console itself like shown below:

printscreen-0215

SCOM 2012 R2 UR2: version number agent not increased

 

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.

problemsolved

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:

http://cloudadministrator.wordpress.com/2014/05/10/system-center-2012-r2-operations-manager-ur2-does-not-updated-agents-trough-the-console/

Home automation: Putting a child lock on my Nest thermostat using SCOM

 

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”…

The world: Keeping an eye on Teen Trouble

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:

  • Detection of the current temperature set: Target temperature
  • Alerting when the Target temperature breaches the set limit
  • Take corrective action to make sure the target temperature is set below the max temperature.

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:

SNAG-0257

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:

SNAG-0263

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.

How did I configure the recovery task

First open the monitor and click add on the “configure recovery tasks” section

SNAG-0260

Fill in the name of the recovery and select the status where to react upon.

SNAG-0261

Enter the command:

  • Full path: C:\Windows\System32\WindowsPowerShell\V1.0\powershell.exe
  • Parameter: -noexit “& “C:\scripts\settempnest.ps1”

SNAG-0262

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:

SNAG-0259

There we go… All good again saving some energy

SNAG-0265

And final check on the thermostat itself… Back humming at 18 degrees.

SNAG-0264

SCOM: Creating a PowerShell script monitor with Silect MPAuthor

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…

SNAG-0243

Name the script (if you have the script somewhere as a PS1 file it will load the script body automatically.

SNAG-0246

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

SNAG-0245

Next you need to create the conditions for the monitor states:

SNAG-0247

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).

SNAG-0248

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)

SNAG-0249

For the Error state I’m detecting the “State” property value as ERROR

SNAG-0250

Now we need to target the monitor. In my case it’s the watcher node target I’ve created earlier on.

 

SNAG-0251

Naming and enabling the rule

SNAG-0252

Set the schedule how many time to check the status of the max temp

SNAG-0253

Speciffy the alert that needs to be raised if any:

SNAG-0255

And create.

SNAG-0256

Now save the management pack and test it in your environment.

SCOM: Agentpostinstall.ps1 PowerShell demo script Webcast 01042014

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

download-button-fertig11

Note

  • that you need to give the proper parameters for it to work as stated in the description.
  • that perhaps you will have to check the SQL connection string on-line 68 with your SQL dba and adapt accordingly.

Webcast 01/04: Make SCOM work for you and not the other way around!

 

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!

scom-manager

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

Flukso Energy Meter Monitoring Pack: Part 4: Seeing it all in action

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:

printscreen-0162

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.

Flukso Energy meter monitoring pack: Part 3: Get data into SCOM

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:

clip_image001

Requirements

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.

  • A watchernode which has PowerShell V2.0 installed (can be a server or a desktop laying somewhere)
  • a reg key to identify this watcher node. I’m using “HKLM\SOFTWARE\Flukso\Watchernode” for this
  • The mysql connector installed: http://dev.mysql.com/downloads/connector/net/ (note in this example I’m using version 6.8.3)
  • Scom agent installed on the machine to be able to discover it as a class

There’s no additional install required on the mysql server although you will need the following to connect:

  • Location
  • User which has access to the mysql dbase (I use Root but this is not the safest way)
  • password

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:

clip_image002

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.

  • Prepare the environment
  • Open the connection to MySQL
  • Get the data in the data reader
  • Read out the last line because we are only interested in the most recent value
  • Fill it in the property bag

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:

  • The name of the script itself
  • Command.CommandText = “SELECT Sensor_1 FROM fluksodata ORDER BY IDTimestamp DESC LIMIT 1”;
  • The property bag value: $PropertyBag.AddValue(“electricity”, $value)
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

clip_image002.jpg

 

Flukso Energy meter monitoring pack: Part 2: Get data into MySQL

This blog post is part of a series check out the other posts in this series:

So after we have successfully installed the device and data is flowing to the flukso website we get a nice graph on our dashboard which is available by logging into the website:

clip_image001

Cool… So now we get a clear overview of our energy consumption. But there’s nothing we can do with it basically. We can look at it. Make some adjustments but no alerts, no long term reports nothing…

So as I discussed in the first post there’s an open API which makes the data available locally. This is great. No need to retrieve the data from an external website. It stays inside my own network.

The setup was very similar to my Nest Thermostat approach because I had that framework already in place I planned to use it the same way and get the data in SCOM via the same process.

Again the heart of my setup is my trusty Synology DS412+ hosting my linux distro and my MySQL dbase instance:

clip_image002

How did I get data in?

The setup is very similar to my Nest Thermostat approach. To get the data queried out of the Flukso device I have used the script written by a fellow fluksonian PeterJ (yep that’s the official name of users of flukso): https://docs.google.com/file/d/13wB85cPx_5nykBq3ZShnClHa1rpkRE5edNEluMqxrFaCRlvJrD8Bn_6UDCs9/edit?pli=1

He uses a set of PHP scripts to get the data in.

A high level overview of the install:

  • Connect to your Synology box with Winscp
  • Copy the content of the files to /volume1/web/flukso (Make sure to follow the exact same paths as described on the google drive).
  • Open settings.php and fill in the parameters requested:

[xml]

<?php
// Rename to settings.inc.php

// DB Settings
define(‘DB_HOST’, ‘localhost’);
define(‘DB_NAME’, ‘flukso’);
define(‘DB_USER’, ‘<fill in a user with rights to create dbase on your Mysql>’);
define(‘DB_PASS’, ‘<fill in the password of that user>);

// Flukso settings
define(‘FL_ADDRESS’, ‘ipaddressofflukso:8080/sensor’);
define(‘FL_PASSWORD’, ”); //for future use
define(‘FL_SENSOR1’, ‘sensor ID’);
define(‘FL_SENSOR2’, ”);
define(‘FL_SENSOR3’, ”);

// Meter settings
define(‘START_DAY’, ‘070000’);
define(‘END_DAY’, ‘230000’);
?>

[/xml]

  • Note the sensor ID can be retrieved from the website in the sensor section (make sure to use the ID and not the token)

clip_image003

  • Run the install.php script by accessing your synology via putty to gain a terminal access (more explanation check the Nest thermostat topic here)
  • At this point the dbase should be created an ready to go:

clip_image004

  • All left to do is create another line in the cron and restart it to get data flowing into our dbase and ready to get extracted by SCOM.
  • The crontab which needs to be changed is located in /etc and is named crontab. The line is in red.

Note: make sure to use TABS between the different columns otherwise the line will be deleted with the next reboot. On a Synology box it is… I don”t know on other linux distro’s but better safe than sorry right:

clip_image005

  • The line that needs to be added: */1    *    *    *    *    root    /usr/bin/php /volume1/web/flukso/cronjob.php

After this install the data should normally be coming in.

I’ve tried to create a brief overview on how to setup the Synology to get the data from the flukso into my own MySQL dbase using a community driven script. However this is a System Center blog so I’m not going to go further in detail here.

If you still have questions either check the flukso forum which has some really active members out there eager to help spread the word on this nifty device: https://www.flukso.net/forum

Or connect with me on twitter @dieterwijckmans so I can assist where needed.

Enough talk, let’s build
Something together.