<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>volkancoskun</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/volkancoskun/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/volkancoskun/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:47:32 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Use Azure Automation for OMS Log Search using REST API</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/use-azure-automation-for-oms-log-search-using-rest-api</link>
      <pubDate>Sat, 26 Mar 2016 17:15:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2016/03/26/use-azure-automation-for-oms-log-search-using-rest-api/</guid>
      <description><![CDATA[&nbsp; OMS is the new player in management space and its gaining momentum every day. In this blog...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>OMS is the new player in management space and its gaining momentum every day. In this blog post I want to demonstrate the capabilities around Log Search API using&nbsp; Azure Automation and how it can help us in daily challenges.</p> <p>&nbsp;</p> <h1></h1> <p>Scenario : While managing our datacenters we face many challenges. When we face&nbsp; a high utilization on a particular server or&nbsp; slowness&nbsp; in an application , we need to log into the server and collects/analyze many information to find the root cause.&nbsp; Operations Manager is already tracking these and reporting&nbsp; to us but without further&nbsp; analysis&nbsp; operator does not have any insight what&#39;s is causing the behavior on the target system. In our scenario we will use Azure Automation to&nbsp; do the investigation using log search API&nbsp; and send us the results. </p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_4F2E4CE4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_4F2E4CE4.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_15ADCD9E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_15ADCD9E.png" width="479" height="52" /></a></p> <p>&nbsp;</p> <h3>General Requirements</h3> <p>First of all you will need an OMS subscription ( you can create one with free tier) and an Azure Automation account&nbsp; . Free tiers will work perfect for testing.&nbsp; </p> <h3>Runbook Requirements</h3> <h2></h2> <h4>&nbsp;</h4> <h4><font style="font-weight:bold;">Authentication</font></h4> <p>There are different ways to authenticate with Azure Resource Manager (ARM) . In this sample&nbsp; I’ll be mainly using the ARM REST Api for&nbsp; almost everything&nbsp; so I will authenticate using&nbsp; a Service Principal.&nbsp; You can also&nbsp; use native PowerShell cdmlets&nbsp;&nbsp; to perform the same&nbsp; . For details you can&nbsp; check Tiander’s blog;</p> <p><a title="https://blogs.technet.microsoft.com/privatecloud/2016/04/05/using-the-oms-search-api-with-native-powershell-cmdlets/" href="https://blogs.technet.microsoft.com/privatecloud/2016/04/05/using-the-oms-search-api-with-native-powershell-cmdlets/">https://blogs.technet.microsoft.com/privatecloud/2016/04/05/using-the-oms-search-api-with-native-powershell-cmdlets/</a></p> <p>To create a&nbsp; Service principal&nbsp; for unattended authentication to ARM ;</p> <p>Go to&nbsp; <u><strong>Active Directory</strong></u> tab&nbsp; in Azure Portal </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_6E09E224.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_6E09E224.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_6207F1F0.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_6207F1F0.png" width="193" height="55" /></a>&nbsp;</p> <p>Select <strong><u>Applications</u></strong></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_20041360.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_20041360.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_01B95C6A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_01B95C6A.png" width="552" height="36" /></a></p> <p>Add a new application suing the following option ;</p> <p align="center">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_43BFCBAB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_43BFCBAB.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_6C5E37B2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_6C5E37B2.png" width="244" height="20" /></a></p> <p>Select <strong><u>Web Application</u></strong>&nbsp; and give the application an URL.&nbsp; this URL will be used only for identifying the application so any url will work. For this demo I will use <a title="https://myomsclient" href="https://myomsclient">https://myomsclient</a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image29_59CF5648.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image29_5F00_59CF5648.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image29_thumb_62554643.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image29_5F00_thumb_5F00_62554643.png" width="317" height="230" /></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image32_6F51B705.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image32_5F00_6F51B705.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image32_thumb_1549F80D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image32_5F00_thumb_5F00_1549F80D.png" width="319" height="156" /></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_500B1289.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_500B1289.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_749F30BE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_749F30BE.png" width="244" height="66" /></a></p> <p>On <u><strong>Active Directory Applications</strong></u> page&nbsp; select&nbsp; the application you created in last step.</p> <p>Copy <strong><u>ClientID </u></strong>– This is the username&nbsp; for our application </p> <p>Generate a&nbsp; new <strong><u>key</u></strong>&nbsp; and select validity 1 or 2 years , this is the password for the service principal.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image35_6B6983D7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image35_5F00_6B6983D7.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image35_thumb_7B9CFDE3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image35_5F00_thumb_5F00_7B9CFDE3.png" width="333" height="137" /></a></p> <p>Copy both information as we will be&nbsp; storing this as variables in Azure automation.</p> <p>&nbsp;</p> <h4><font style="font-weight:bold;">Role Assignment in Azure Resource Manager</font></h4> <p>After service principal is created&nbsp; it needs to be given permissions to read the information about the&nbsp; resources&nbsp; in Azure Resource Manager.&nbsp; To give Read right on all resources in your subscription&nbsp; run the following command&nbsp; in Azure Powershell.</p> <p>login-AzureRMAccount </p> <p>New-AzureRmRoleAssignment -RoleDefinitionName Reader –ServicePrincipalName &lt;yourclientid&gt;</p> <p>To give permission to only OMS Workspace&nbsp; ;</p> <p>New-AzureRmRoleAssignment -RoleDefinitionName Reader -ServicePrincipalName &lt;yourclientid&gt;&nbsp; -ResourceGroupName oi-default-east-us</p> <p><strong><u>oi-default-east-us</u></strong>&nbsp; is the default name for OMS accounts created in East US. You can&nbsp; run </p> <p>Get-AzureRmResourceGroup to get the resource group name for your OMS resource group.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image56_5947F91B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image56_5F00_5947F91B.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image56_thumb_1B4E685D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image56_5F00_thumb_5F00_1B4E685D.png" width="516" height="53" /></a></p> <p>P.S. Replace ServicePrincipalID and SubscriptionID with your own values</p> <p>&nbsp;</p> <h4><font style="font-weight:bold;">Collecting Data</font></h4> <p>Now we&nbsp; can authenticate to Azure Resource Manager and start querying OMS Log Search API. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_78D0BA96.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_78D0BA96.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_4A79C59A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_4A79C59A.png" width="437" height="65" /></a></p> <p>For unattended authentication you will need to provide the service principal ID and access key as well as you AD tenant . Easiest way to provide this to the runbook is using Runbook assets . Runbook requires the following assets;</p> <p>&nbsp;</p> <p>$SPAppID = Get-AutomationVariable -Name &#39;SPCertAppID&#39;&nbsp;&nbsp;&nbsp; # Variable Asset&nbsp;&nbsp; - ClientID of the AD Application<br />$subscriptionid= Get-AutomationVariable -Name &#39;MsIntSubsID&#39; # Variable Asset&nbsp;&nbsp; -&nbsp; Azure subscriptionID<br />$CLIENTKEY=Get-AutomationVariable -Name &#39;ArmclientKey&#39;&nbsp; # Variable Asset&nbsp;&nbsp; -&nbsp; Key to authenticate with the AS application<br />$resgrp=Get-AutomationVariable -Name &#39;OIEUSRG&#39;&nbsp;&nbsp;&nbsp;&nbsp; #Variable Asset&nbsp;&nbsp; -  OMS resource group&nbsp;&nbsp; oi-default-east-us&nbsp; in my case<br />$oiwssclab=Get-AutomationVariable -Name &#39;OIWS_SCLAB&#39;&nbsp;&nbsp;&nbsp;&nbsp; #Variable Asset&nbsp;&nbsp; - OMS workspace Name<br />$hotmailcreds=Get-AutomationPSCredential -Name &quot;myhotmail&quot; # Credential Asset&nbsp; : my Hotmail&nbsp; credential<br />$mailto=Get-AutomationVariable -Name &quot;Notificationrecp&quot; #Variable Asset&nbsp;&nbsp; -&nbsp; Receipent email address<br />$tenant = Get-AutomationVariable -Name &quot;ADTenant&quot; #Variable Asset&nbsp;&nbsp; - My Ad tenant name <br />$ARMUrl = &quot;<a href="https://management.azure.com&quot;">https://management.azure.com&quot;</a><br />$ARMGraphUrl = &quot;<a href="https://graph.windows.net&quot;">https://graph.windows.net&quot;</a><br />$apiver=Get-AutomationVariable -Name &#39;ArmApiVersion&#39;&nbsp;&nbsp; # Variable asset&nbsp;&nbsp;&nbsp; . I’m using 2015-03-20&nbsp;&nbsp;&nbsp; as API Version</p> <p>Complete runbook can be downloaded from ;</p> <p> <div id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:2fc7936c-ac3f-4b75-9812-5ee39b612a12" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;"><div><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/OMSSearchbyComputerWebHook_3F76539D.txt" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/OMSSearchbyComputerWebHook_5F00_3F76539D.txt" target="_blank">OMSSearchbyComputerWebHook.txt</a></div></div></p> <p><br />&nbsp;</p> <h4><font style="font-weight:bold;">Performing Queries </font></h4> <p>Runbook utilizes <em><strong>search-oi</strong></em> function to perform the OMS search.&nbsp; To make your own search&nbsp; first define the query </p> <p>$query=&quot;Type=SecurityEvent AccountType=user (EventID=4624)&nbsp;&nbsp; AND TimeGenerated&gt;NOW-8HOUR (Computer=&quot;&quot;$server&quot;&quot;) LogonTypeName=&quot;&quot;2 - Interactive&quot;&quot; | top 5|select Account, Process,timegenerated&quot;</p> <p>and supply it as a parameter to <strong><em>search-oi</em></strong> function </p> <p><br />&nbsp;&nbsp;&nbsp;&nbsp; $interactivelogons=search-oi -query $query</p> <p>Query result :</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_14C82E04.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_14C82E04.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_33A13293.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_33A13293.png" width="508" height="128" /></a></p> <p>By using these technique you can modify/extend the searches performed in this runbook.</p> <p><br />&nbsp;</p> <h4><font style="font-weight:bold;">Email Findings</font></h4> <p>Runbook&nbsp; will get all returned search queries and construct a html email body&nbsp; .&nbsp; We will send this mail to the recipient&nbsp; using the Hotmail credentials . Here after using the code Hotmail will mpst probably will block it as suspicious activity. You need to go the&nbsp; settings and allow this activity. If you use other email provider you might need to&nbsp; enable some security so Azure Automation can authenticate and send email on your behalf. </p> <p>&nbsp;</p> <p>After collecting the data I’ll send&nbsp; the findings using the following code </p> <p>$SMTPServer = &quot;smtp.live.com&quot;<br />$SMTPPort = &quot;25&quot;<br />$Username = &quot;yourliveid@hotmail.com&quot;<br />$Password = &quot;&quot;</p> <p>$to = &quot;&lt;yourrecipientaddress&gt;&quot;</p> <p>$subject = &quot;OMS Search Demo&quot;<br /></p> <p>$message = New-Object System.Net.Mail.MailMessage<br />$message.subject = $subject<br />$message.body = $body<br />$message.to.add($to)<br /><br />$message.from = $username<br /><br />$message.IsBodyHTML=$true</p> <p>$message.AlternateViews<br />$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);<br />$smtp.EnableSSL = $true<br />$smtp.Credentials = $hotmailcreds</p> <p>$smtp.send($message)<br />write-output&nbsp; &quot;Mail Sent&quot;</p> <h4><font style="font-weight:bold;">Webhook</font></h4> <p>Since we will be&nbsp; triggering this runbook&nbsp; from OMS/OpsMgr&nbsp;&nbsp;&nbsp; easiest way to implement it&nbsp; is to use Webhooks. </p> <p>Webhooks are URLs which we can utilize to&nbsp; trigger the runbook. All security is based on&nbsp; the URL so when you create the webhook keep the URL safe. </p> <p>Navigate to your automation Account / runbooks select&nbsp; the runbook you have created and then select Webhooks</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_212B9CA7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_212B9CA7.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_79F3E422.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_79F3E422.png" width="219" height="244" /></a></p> <p>Create a new webhook </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_092A4CF0.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_092A4CF0.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_7CBEBA77.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_7CBEBA77.png" width="492" height="248" /></a></p> <p>Give webhook a name,&nbsp; enable it and set an end date. Here you need to copy&nbsp; and save the URL&nbsp; , after saving the webhook you wont be able to fetch it again!!!</p> <p>From webhook run settings select Run on Azure&nbsp; and save .</p> <p>Now you will be able to trigger this runbook by Http POST.</p> <p>&nbsp;</p> <h4><font style="font-weight:bold;">Operations Manager Notification Channel</font></h4> <p>Now we will utilize this webhook&nbsp; to sstart log search automation by using the following script </p> <p>Param ($server,$alert,$data )</p> <p>$uri = “<a href="https://s1events.azure-automation.net/webhooks?token=replacewithyourownWebhookURI">https://s1events.azure-automation.net/webhooks?token=replacewithyourownWebhookURI</a>”<br />$headers = @{&quot;From&quot;=<a href="mailto:Scom@contoso.local">Scom@contoso.local</a>;&quot;Date&quot;=&quot;$((Get-date).ToString())&quot;}</p> <p>$vms&nbsp; = @(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @{ Server=&quot;$server&quot;;Alertname=&quot;$alert&quot;;Alertdata=&quot;$data&quot;;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />$body = ConvertTo-Json -InputObject $vms </p> <p>$response = Invoke-RestMethod -Method Post -Uri $uri -Headers $headers -Body $body </p> <p>&nbsp;</p> <p>IN Operations Manager&nbsp; you can trigger this&nbsp; webhook using the&nbsp; powershell script above in a command notification channel ; </p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_42D2083C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_42D2083C.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_4E22CE8C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_4E22CE8C.png" width="442" height="230" /></a></p> <p>&quot;G:\MPauthoring\OMSNotification.ps1&quot; -server &#39;$Data[Default=&#39;Not Present&#39;]/Context/DataItem/ManagedEntityPath$\$Data[Default=&#39;Not Present&#39;]/Context/DataItem/ManagedEntityDisplayName$&#39; -alert&nbsp; &#39;$Data[Default=&#39;Not Present&#39;]/Context/DataItem/AlertName$&#39; -data &#39;$Data[Default=&#39;Not Present&#39;]/Context/DataItem/AlertDescription$&#39;</p> <p>So all you need is to create a notification subscription&nbsp; using this new channel&nbsp; for the selected alerts and&nbsp; Operations Manager will trigger&nbsp; the runbook&nbsp; Please keep in mind,&nbsp; for&nbsp; this scenario to work your Management server needs to be able to&nbsp; access the webhook url. </p> <p>&nbsp;</p> <h3>Result</h3> <p>&nbsp;</p> <p>Here is the&nbsp; email&nbsp; generated after the automated search. I have queried almost all&nbsp; the data I have for that specific server in this demo. In real life you can decide which details to fetch from OMS based on your own needs.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_3574190B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_3574190B.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_088146E1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_088146E1.png" width="425" height="325" /></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_46387161.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_46387161.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_59E7EBA6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_59E7EBA6.png" width="388" height="314" /></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_5CB2C1FB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_5CB2C1FB.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_64CC7F01.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_64CC7F01.png" width="585" height="89" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Happy automating and utilizing OMS !</p>]]></content:encoded>
    </item>
    <item>
      <title>Part I - OMS and Operations Manager Better Together–Sample Azure IaaS Dashboard</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/part-i-oms-and-operations-manager-better-togethersample-azure-iaas-dashboard</link>
      <pubDate>Wed, 02 Dec 2015 11:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2015/12/02/part-i-oms-and-operations-manager-better-togethersample-azure-iaas-dashboard/</guid>
      <description><![CDATA[&nbsp; You have probably heard about&nbsp; Microsoft Operations Management Suite (OMS) . OMS&nbsp;...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>You have probably heard about&nbsp; Microsoft Operations Management Suite (OMS) . OMS&nbsp; is the all-in-one hybrid cloud management solution for any enterprise to manage their workloads and applications on Azure or AWS, Windows Server or Linux, VMware or OpenStack . </p> <p>For details pls check&nbsp; <a href="https://www.microsoft.com/en-us/server-cloud/operations-management-suite/overview.aspx">Microsoft OMS</a></p> <p>OMS is an all in one solution&nbsp; which gives you the insights of your IT environment. It collects and analyses the data using&nbsp; available solutions in the gallery.&nbsp; You can also you very powerfully log search feature to&nbsp; analyze the collected data and create dashboards.</p> <p> Here is a sample landing page with all solutions enabled;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_406B0B39.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_406B0B39.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_30EFAB7D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_30EFAB7D.png" width="591" height="266" /></a></p> <p>&nbsp;</p> <p>I’ll not go into the&nbsp; details of OMS components in this blog post but rather focus on feeding additional data into OMS and visualizing it . </p> <p>OMS utilizes either&nbsp;&nbsp; the Microsoft Monitoring Agent directly or your Operations Manager environment to collect performance and event data from the servers.&nbsp; Different solutions in OMS analysis collected&nbsp; data and&nbsp; gives you recommendations.&nbsp; </p> <p>Default data collection settings lets you to specify which events , performance data&nbsp; and logs will be collected .</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_63E45D46.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_63E45D46.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_435FAE45.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_435FAE45.png" width="500" height="215" /></a></p> <p>As you can see these not much to configure. These settings are generally enough&nbsp; to capture the insights of most of the workloads we have&nbsp; in an enterprise. When you have&nbsp; the integration with Operations Manager it gets even better. With a little bit of MP authoring&nbsp; you&nbsp; can&nbsp; start sending any information to OMS either as an event or a performance counter .</p> <p>&nbsp;</p> <h3>My Azure Iaas Dashboard</h3> <p>While playing around I decided to create a dedicated dashboard for my Azure consumption. MP is still under development but here is a preview dashboard ;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_0BACF415.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_0BACF415.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_344DF0CD.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_344DF0CD.png" width="670" height="301" /></a></p> <p>Captured performance data can also be visualized as a line graph;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_0EE68E10.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_0EE68E10.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_104AB0E2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_104AB0E2.png" width="550" height="106" /></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_548DA8DF.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_548DA8DF.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_4F4152DF.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_4F4152DF.png" width="554" height="206" /></a></p> <p>I’ll share the MP tp capture these data on Part II of this blog. MP requires Azure subscriptions already discovered in Operations Manager&nbsp; and&nbsp; certificate to manage the subscription .&nbsp; Details to follow…</p> <h3>Data Visualization Options </h3> <p>OMS has a nice&nbsp; landing page and dashboard to visualize and analyze the data&nbsp;&nbsp; but you are not limited to the web&nbsp; page. Another advantage of OMS is the mobile apps . OMS has apps on every mobile platform so these dashboards and searched defined can be viewed in any platform anytime anywhere.&nbsp; To get the app&nbsp; visit <a title="https://www.microsoft.com/en-us/server-cloud/operations-management-suite/mobile-apps.aspx" href="https://www.microsoft.com/en-us/server-cloud/operations-management-suite/mobile-apps.aspx">https://www.microsoft.com/en-us/server-cloud/operations-management-suite/mobile-apps.aspx</a></p> <p>&nbsp;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/wp_ss_20151202_0003_41056AA0.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/wp_5F00_ss_5F00_20151202_5F00_0003_5F00_41056AA0.jpg"><img title="wp_ss_20151202_0003" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="wp_ss_20151202_0003" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/wp_ss_20151202_0003_thumb_0718B865.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/wp_5F00_ss_5F00_20151202_5F00_0003_5F00_thumb_5F00_0718B865.jpg" width="139" height="244" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/wp_ss_20151202_0004_443C73EA.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/wp_5F00_ss_5F00_20151202_5F00_0004_5F00_443C73EA.jpg"><img title="wp_ss_20151202_0004" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="wp_ss_20151202_0004" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/wp_ss_20151202_0004_thumb_75CA7230.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/wp_5F00_ss_5F00_20151202_5F00_0004_5F00_thumb_5F00_75CA7230.jpg" width="139" height="244" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>OSD PXE Step by Step</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/osd-pxe-step-by-step</link>
      <pubDate>Thu, 06 Aug 2015 05:45:27 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2015/08/06/osd-pxe-step-by-step/</guid>
      <description><![CDATA[&nbsp; In this&nbsp; blog post I&nbsp; will go thought the operating system deployment process with...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>In this&nbsp; blog post I&nbsp; will go thought the operating system deployment process with PXE boot step by step.&nbsp; Since this scenario includes many technologies,&nbsp; troubleshooting the&nbsp; problems&nbsp;&nbsp; takes some extra effort. I’ll try to show and examine all the technologies involved. </p> <p>&nbsp;</p> <h2>PXE Boot Step by Step</h2> <p>Process steps for the PXE boot is&nbsp; as follows</p> <ul> <li>Client is booted from network&nbsp; </li><li>Client contacts DHCP for IP address  </li><li>Client receives IP from DHCP&nbsp; and Boot Server, Boot File Name for the PXE boot&nbsp; </li><li>Client contact PXE&nbsp; server and downloads the boot file  </li><li>Client&nbsp; boots into Win PE  </li><li>Client looks for available task sequence  </li><li>and deployment starts…..</li></ul><!--EndFragment--> <p>Based the&nbsp; steps we&nbsp; are facing the problem we need different tools/logs for troubleshooting </p> <h3>Before starting PXE </h3> <p>To test the PXE boot I have created a test task sequence and deployed it to All Unknown Computers collection with the following settings;</p> <p>&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image002_0E1D5E4F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image002_5F00_0E1D5E4F.png"><img title="clip_image002" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;border-left:0px;display:block;padding-right:0px;margin-right:auto;" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image002_thumb_26AF8C50.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image002_5F00_thumb_5F00_26AF8C50.png" width="476" height="276" /></a>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image003_316F7456.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image003_5F00_316F7456.png"><img title="clip_image003" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;border-left:0px;display:block;padding-right:0px;margin-right:auto;" border="0" alt="clip_image003" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image003_thumb_1C808294.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image003_5F00_thumb_5F00_1C808294.png" width="479" height="305" /></a>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image004_403C3ADF.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image004_5F00_403C3ADF.png"><img title="clip_image004" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;border-left:0px;display:block;padding-right:0px;margin-right:auto;" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image004_thumb_7D5FF664.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image004_5F00_thumb_5F00_7D5FF664.png" width="482" height="305" /></a>  <p>&nbsp; <p>We first need to check references to see if anything is missing from the Distribution points.&nbsp; Missing packages will cause task sequence to fail . <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image005_6AAD8D5E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image005_5F00_6AAD8D5E.png"><img title="clip_image005" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image005" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image005_thumb_50DBE7E0.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image005_5F00_thumb_5F00_50DBE7E0.png" width="562" height="162" /></a>  <h3>&nbsp;</h3> <h3>Step 1 - Enabling PXE Boot</h3> <p>In order to use PXE boot you need to enable this option from the BIOS of the computer. After enabling each vendor uses their own way of initiating the network boot. Most of the time its started either by pressing F12&nbsp;&nbsp; or choosing network boot from the boot options.</p> <h3>Step 2 – Client Receives IP from DHCP Server</h3> <p>As first step of PXE&nbsp; client needs an IP address from the DHCP server.&nbsp;&nbsp;&nbsp; If the client does not getting the IP address best&nbsp; option is to check network connectivity between client and the DHCP server. You can use a network trace to find out if your client is actually reaching the DHCP server itself. </p> <p>Tools to use : Microsoft Network Monitor (MNM) or any other network package capture tool </p> <p>To use&nbsp; MNM&nbsp;&nbsp; download the latest version and install it on the DHCP server. After the setup you need to&nbsp; go to <strong>New Capture</strong>&nbsp; and click <strong>Capture Settings</strong></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_2284F2E4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_2284F2E4.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_5F3C7B74.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_5F3C7B74.png" width="480" height="286" /></a></p> <p>Here we are only interested in DHCP traffic so we will specify <strong>DHCP&nbsp; </strong>as protocol in filter page and click apply. As </p> <p>next step we will start the network capture and try to boot the client using PXE.</p> <p>Client initiates the network boot. Here note the Mac address of the client as it will help us to track the request from the client.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image007_456AD5F6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image007_5F00_456AD5F6.png"><img title="clip_image007" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image007" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image007_thumb_34F264FB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image007_5F00_thumb_5F00_34F264FB.png" width="505" height="177" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Expected communication ;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_20037339.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_20037339.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_0AA84E82.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_0AA84E82.png" width="569" height="136" /></a></p> <p>First broadcast package shows up the mac address of the PXE client ;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_05C82B77.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_05C82B77.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_04F2563E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_04F2563E.png" width="608" height="331" /></a></p> <p>If you don’t see this package this means broadcast messages are not&nbsp; reaching the PXE server&nbsp; so&nbsp; you need to inspect the network devices in between your client and DHCP server.&nbsp; Most probable cause&nbsp; would be the switch cl’ent connected to don’t have the IPhelper setup . </p> <p>After the broadcast received&nbsp; CMPRi12 ( my DHCP server) replies and finally client gets the 192.168.1.5&nbsp; ip address. If you inspect the reply message from DHCP&nbsp; it also includes the Boot server and Boot file name ;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_065909C1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_065909C1.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_3E9A118A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_3E9A118A.png" width="594" height="321" /></a></p> <p>In order DHCP to work you need some configuration on the server side.&nbsp; First DHCP server should be authorized and should have a scope, firewall should not block DHCP traffic.&nbsp; Also we need to configure the following options for PXE boot</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_58FC9552.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_58FC9552.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_2F1C211D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_2F1C211D.png" width="600" height="168" /></a></p> <p><strong>Option 66 Boot server :</strong> This is the PXE server&nbsp;&nbsp; your ConfigMgr DP with PXE role </p> <p><strong>Option 67 Boot File Name :</strong> \smsboot\x64\wdsnbp.com </p> <p><strong>Option 60&nbsp; PXEClient : </strong>PXEClient . You only need this if your PXE server and DHCP server is collocated. Since this is quite unlikely for a production environment&nbsp; most of the time you wont need to configure this setting. </p> <p>At this point we will switch to ConfigMgr DP&nbsp; and look at the SMSPXE.log </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image010_47AE4F1E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image010_5F00_47AE4F1E.png"><img title="clip_image010" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image010_thumb_2E48DC95.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image010_5F00_thumb_5F00_2E48DC95.png" width="613" height="271" /></a></p> <p>Here I see my MAC address contacting&nbsp; to the PXE server&nbsp; but its not serviced. We got a warning message saying Architecture boot image&nbsp; not found. </p> <p>This message means PXE server does not have the required boot image available. You need to go to ConfigMgr console and Boot image properties. Under datasource enable&nbsp; <strong>Deploy this boot image from the PXE enabled distribution point</strong> </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image011_7F85B4A3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image011_5F00_7F85B4A3.png"><img title="clip_image011" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image011" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image011_thumb_3CA97029.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image011_5F00_thumb_5F00_3CA97029.png" width="408" height="421" /></a></p> <p>After enabling this when PXE provide loads you will see your boot images (CAS00003.wim and CAS00004.wim in my environment) available in PXE </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image012_70E02A20.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image012_5F00_70E02A20.png"><img title="clip_image012" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image012" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image012_thumb_5B850569.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image012_5F00_thumb_5F00_5B850569.png" width="616" height="272" /></a></p> <h3>Step 3 – Downloading the boot image </h3> <p>Option 1 - machine is not in the ConfigMgr database and&nbsp; boot&nbsp; images are deployed to PXE . </p> <p>Now we will retry the PXE boot&nbsp; .&nbsp; Here client contact PXE server and start downloading the boot image;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image016_5AAF3030.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image016_5F00_5AAF3030.png"><img title="clip_image016" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image016" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image016_thumb_17D2EBB6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image016_5F00_thumb_5F00_17D2EBB6.png" width="575" height="359" /></a>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image017_650575F2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image017_5F00_650575F2.png"><img title="clip_image017" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image017" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image017_thumb_77DF1AFE.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image017_5F00_thumb_5F00_77DF1AFE.png" width="577" height="178" /></a>  <p>During this in&nbsp; SMSPXE.log </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image013_49882602.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image013_5F00_49882602.png"><img title="clip_image013" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image013" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image013_thumb_54480E08.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image013_5F00_thumb_5F00_54480E08.png" width="687" height="246" /></a></p> <p>Here we can again see&nbsp; 00:15:5D:00:6C:4F&nbsp;&nbsp; our client&nbsp; has contacted to PXE&nbsp; server and&nbsp; after checking we can see device is not in the database . We can also see that&nbsp;&nbsp; advertisement CAS20001 will be used to deploy the client.</p> <p>If you check the network trace of your PXE server you can see the TFTP traffic while downloading the boot image . You can capture this traffic by using&nbsp; TFTP&nbsp; as a capture filter. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image020_459FF2D4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image020_5F00_459FF2D4.png"><img title="clip_image020" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image020" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image020_thumb_4BE95A13.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image020_5F00_thumb_5F00_4BE95A13.png" width="712" height="245" /></a></p> <p>Option 2 - If you try PXe boot&nbsp; with a machine already registered in&nbsp; ConfigMgr database&nbsp; you will see that machine&nbsp; will not be serviced by PXE. </p> <p>&nbsp;</p> <p>Option 3 - If&nbsp; the machine is serviced&nbsp;&nbsp; before but&nbsp; deployment&nbsp; breaks before complementing&nbsp; you will&nbsp; see that machine will not be serviced by PXE. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image014_51C68E5D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image014_5F00_51C68E5D.png"><img title="clip_image014" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;border-left:0px;display:block;padding-right:0px;margin-right:auto;" border="0" alt="clip_image014" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image014_thumb_3CD79C9B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image014_5F00_thumb_5F00_3CD79C9B.png" width="477" height="302" /></a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image015_0E80A79F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image015_5F00_0E80A79F.png"><img title="clip_image015" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image015" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image015_thumb_205FCC1D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image015_5F00_thumb_5F00_205FCC1D.png" width="707" height="153" /></a></p> <p>&nbsp;</p> <p>As you can see machine is unknown but still will not be serviced. PXE has an internal protection mechanism to protect computers from being re-imaged&nbsp;&nbsp; so when a computer is&nbsp; serviced a record is being created in ConfigMgr database indicating the date and time it was serviced by PXE. </p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image013_11B7B0E9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image013_5F00_11B7B0E9.png"><img title="clip_image013" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image013" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image013_thumb_1630C261.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image013_5F00_thumb_5F00_1630C261.png" width="969" height="41" /></a></p> <p>Here at this point if the deployment fails before the actual OS deployment&nbsp; you will end up with&nbsp; either </p> <ul> <li>a computer object named <strong>Unknown&nbsp; </strong>and PXE&nbsp; deployment will be cached on this resource</li> <li>If process breaks very early&nbsp; you will not have any object created in ConfigMgr but PXE deployment will still be registered in database. </li></ul> <p>In both conditions that device will not be serviced by PXE component&nbsp; until we clear this flag.&nbsp; You can see the list of computers already serviced by&nbsp; running the following query&nbsp; in ConfigMgr database.</p> <p>SELECT * from v_LastPXEDeployment</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image023_05B85166.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image023_5F00_05B85166.png"><img title="clip_image023" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image023" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image023_thumb_52EADBA2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image023_5F00_thumb_5F00_52EADBA2.png" width="865" height="232" /></a></p> <p>To clear this flag ;</p> <ul> <li>if you have can see the computer object named <strong>Unknown</strong>&nbsp;&nbsp; with the details above&nbsp; you can right click and run <strong>Clear the PXE Deployment</strong> </li> <li>If there is no such computer object&nbsp; you need to import the computer again by using the details from that SQL table&nbsp; and then you will be able to right click and run <strong>Clear the PXE Deployment</strong> </li></ul> <p>&nbsp;</p> <h3>Step 4 – Boot into Win PE</h3> <p>After downloading the&nbsp; boot image , client will boot into&nbsp; Win PE and&nbsp; will start the required advertisement.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image018_16556DB6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image018_5F00_16556DB6.png"><img title="clip_image018" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;border-left:0px;display:block;padding-right:0px;margin-right:auto;" border="0" alt="clip_image018" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image018_thumb_631BC4FD.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image018_5F00_thumb_5F00_631BC4FD.png" width="564" height="329" /></a>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image019_109F7572.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image019_5F00_109F7572.png"><img title="clip_image019" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:none;padding-top:0px;padding-left:0px;margin-left:auto;border-left:0px;display:block;padding-right:0px;margin-right:auto;" border="0" alt="clip_image019" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/clip_image019_thumb_00270477.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/clip_5F00_image019_5F00_thumb_5F00_00270477.png" width="358" height="143" /></a> <p>If you receive any problems at this point <strong>SMSTS.log</strong> is your friend. You should enable command line support on the boot image and&nbsp; open a cmd by pressing F8 then&nbsp; check the <strong>SMSTS.log</strong>&nbsp;&nbsp; for further troubleshooting.&nbsp;&nbsp; <p>&nbsp; <p>Good Luck ….. </p></p></p></p></p></p></p></p></p></p></p></p></p>]]></content:encoded>
    </item>
    <item>
      <title>SQL Deadlock Monitor with Meaningful Alert Details</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/sql-deadlock-monitor-with-meaningful-alert-details</link>
      <pubDate>Sun, 02 Aug 2015 10:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2015/08/02/sql-deadlock-monitor-with-meaningful-alert-details/</guid>
      <description><![CDATA[&nbsp; SQL Management Pack&nbsp; offers extensive monitoring capabilities for monitoring SQL...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p> <p>SQL Management Pack&nbsp; offers extensive monitoring capabilities for monitoring SQL workloads.&nbsp; You need to use the Operations Manager console to utilize the&nbsp; full range of capabilities. </p> <p>When I visit&nbsp;&nbsp; some customers I realize that&nbsp; DBA’s not always have access to the OpsMgr console and they receive alert notifications&nbsp; mostly by email. If you check some&nbsp; alerts you will find alert description lacking&nbsp; sme important information. In order to get that&nbsp; details you need to open alert context&nbsp; from the OpsMgr console.</p> <p>&nbsp;</p> <p><strong><span style="font-size:medium;">Example SQL Blocked Sessions Monitor</span></strong></p> <p>This&nbsp; monitor is disabled by default and customers running&nbsp; in house build applications with SQL backend tend to&nbsp; monitor&nbsp; blocked sessions closely. So&nbsp; OpsMgr Admin enables this monitor for the SQL instances. an when a blocking session&nbsp; occurs&nbsp; we have an&nbsp; alert in OpsMgr.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_52A58EC1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_52A58EC1.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_2B6DD63D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_2B6DD63D.png" width="585" height="106" /></a></p> <p>As&nbsp; seen in screenshot we&nbsp; can only see&nbsp; that session 57 is blocked on&nbsp; the default instance on a server. When SQL DBA receives that email&nbsp; they need to go back&nbsp; access the server to see&nbsp;&nbsp; what was that session running&nbsp;&nbsp;&nbsp; and which session is&nbsp; blocking it etc .&nbsp; In fact&nbsp; query running on SQL&nbsp; has all the details and its published under&nbsp;&nbsp; Alert Context tab</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_4F298E88.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_4F298E88.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_4EBFEC44.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_4EBFEC44.png" width="479" height="388" /></a></p> <p>&nbsp;</p> <p>Again this information is available only trough OpsMgr console&nbsp; , Alert view.</p> <p>Here SQL MP&nbsp; runs a SQL query&nbsp; compiles&nbsp; and publishes all information about blocking sessions in property bags and hands then to the monitor. By altering the script slightly we can&nbsp; publish more data and&nbsp;&nbsp; change the alert description to show this information.</p> <p>&nbsp;</p> <p>Here is the same alert with the modified monitor ;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_348213D1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_348213D1.png"><img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_58A9FF11.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_58A9FF11.png" width="549" height="186" /></a></p> <p>As&nbsp; seen in the alert details above now&nbsp; blocked session details like program, login id, TSQL&nbsp; and blocking session id&nbsp;&nbsp; are all in the alert description.&nbsp; So now just from the alert description DBA’s can see who is running&nbsp; the blocked query&nbsp; as well as the query and blocking session id.</p> <p>Attached MP&nbsp; has a new monitor called Blocked SPIDs targeted to SQL DB Engine.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/10070/00/00/03/65/29/80/SQL.BlockedSessions.xml.zip" original-url="https://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-10070-00-00-03-65-29-80/SQL.BlockedSessions.xml.zip">SQL.BlockedSessions.xml.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Monitoring Lync Active User Count with Operations Manager</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/monitoring-lync-active-user-count-with-operations-manager</link>
      <pubDate>Mon, 25 May 2015 03:51:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2015/05/25/monitoring-lync-active-user-count-with-operations-manager/</guid>
      <description><![CDATA[&nbsp;
For monitoring Lync we&nbsp; have&nbsp; a solid MP with strong capabilities.&nbsp; We have...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>For monitoring Lync we&nbsp; have&nbsp; a solid MP with strong capabilities.&nbsp; We have capability to monitor core components&nbsp; and by using Lync watcher nodes we can&nbsp; simulate user&nbsp; experience.&nbsp;&nbsp; One key piece of information I found&nbsp;&nbsp;&nbsp; missing in the MP is&nbsp; the&nbsp; number of users connected to front ends server at given&nbsp; point in time. Most customers uses such counters to measure&nbsp; how the service being consumed, which different endpoints being used etc.</p>
<p>&nbsp;</p>
<p>Lync stores the user information in&nbsp;&nbsp;&nbsp; RTCDYN&nbsp; database&nbsp; of Lync&nbsp; in frontend servers.There are various scripts/queries to collect this information. Here I&rsquo;ve used&nbsp; the script sample from&nbsp; Pat Richard ( <a title="https://www.ehloworld.com/269" href="https://www.ehloworld.com/269">https://www.ehloworld.com/269</a>)&nbsp; and&nbsp; converted it to&nbsp; feed data&nbsp; to Operations Manager using&nbsp; property bags .</p>
<p>&nbsp;</p>
<p>After you start collecting this from Front End servers&nbsp; then you can visualize&nbsp; it using&nbsp; Performance Widget, Object Detail Widget or in a performance report.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_7449DD7B.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_7449DD7B.png"><img width="466" height="212" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_5E8285CF.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_5E8285CF.png" border="0" /></a></p>
<p></p>
<p>Update&nbsp; ( 26/07/2015):</p>
<p>I have fixed the&nbsp;&nbsp;&nbsp; wrong folder references and uploaded the MP again. </p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/10070/00/00/03/64/98/31/Microsoft.Lync.2013.Extensions.zip" original-url="https://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-10070-00-00-03-64-98-31/Microsoft.Lync.2013.Extensions.zip">Microsoft.Lync.2013.Extensions.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Back to Basics Diagnostic Tasks Which Process is Consuming the Memory and CPU</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/back-to-basics-diagnostic-tasks-which-process-is-consuming-the-memory-and-cpu</link>
      <pubDate>Tue, 19 May 2015 00:57:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2015/05/19/back-to-basics-diagnostic-tasks-which-process-is-consuming-the-memory-and-cpu/</guid>
      <description><![CDATA[&nbsp;
One of the most common scenarios while monitoring the servers are monitoring&nbsp; CPU and...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>One of the most common scenarios while monitoring the servers are monitoring&nbsp; CPU and Memory.&nbsp; We have default monitors in OS MP&nbsp;&nbsp; which checks&nbsp; the total processor utilization and Available MBs of memory.&nbsp; These 2 are key&nbsp; performance counters when we start troubleshooting any performance&nbsp; related issue on servers.</p>
<p>&nbsp;</p>
<p>On of the challenges about our monitors&nbsp; is we get alerted when CPU or Memory under pressure&nbsp; but in order to troubleshoot you need to know&nbsp; which process is actually causing it . This key information is missing in our alerts.&nbsp; Consider the situation where you&nbsp; get those alerts when you are not at the office&nbsp;&nbsp; , in this case you have no pointers from operations manager to diagnose the situation.</p>
<p>&nbsp;</p>
<h2>Diagnostic Tasks</h2>
<p>In Operations Manager we&nbsp; can attach a task to a monitor&nbsp; to</p>
<ul>
<li>gather more information&nbsp; - Diagnostic Tasks</li>
<li>Take action to resolve the problem &ndash; Recovery Tasks</li>
</ul>
<p>So all we need to attach a task to retrieve&nbsp; top processes&nbsp; when these monitors goes unhealthy.</p>
<h3>&nbsp;</h3>
<h3>Tracking High CPU Utilization</h3>
<p>Here I have one server under load and both memory and processor monitors are in unhealthy state.</p>
<p>&nbsp;</p>
<h2></h2>
<h2><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_7C1B9E60.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_7C1B9E60.png"><img width="585" height="251" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_422EEC25.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_422EEC25.png" border="0" /></a></h2>
<p>&nbsp;</p>
<p>To find what is consuming&nbsp; the CPU cycles we can run&nbsp; <strong>List Top CPU Consuming processes</strong>&nbsp; task from Windows Server Operating System state&nbsp; view under Microsoft Windows Server</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_55DE666A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_55DE666A.png"><img width="246" height="117" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_331D2EAD.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_331D2EAD.png" border="0" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_076EF562.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_076EF562.png"><img width="244" height="237" title="image" style="background-image:none;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_7213D0AA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_7213D0AA.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>So all we need to do is attach this&nbsp; task from Windows.Server&gt;library.MP&nbsp; to&nbsp; Total CPU Utilization monitor as recovery task .</p>
<p>Here is the XML snippet does the action</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_4A03B23C.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_4A03B23C.png"><img width="726" height="76" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_747504BB.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_747504BB.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>Here is the Health Explorer after recovery is attached</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_6250E94E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_6250E94E.png"><img width="551" height="223" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_7189E2CC.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_7189E2CC.png" border="0" /></a></p>
<p>Now you can go back and track which processes were&nbsp; causing high processor utilization on your servers from State Changes in Health Explorer.</p>
<h3>Tracking Memory Pressure</h3>
<p>Same technique can be applied to track&nbsp;&nbsp; memory pressure, only problem is we don&rsquo;t have a built in task to achieve this.&nbsp; So I have&nbsp; modified the script which collects CPU cycles so it returns memory consumption for the&nbsp; processes.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_70B40D93.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_70B40D93.png"><img width="586" height="266" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_620E8310.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_620E8310.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>Now&nbsp; whenever you have&nbsp; a problem with CPU or Memory utilization you will be able to access the process causing the situation from health explorer.</p>
<p>Attached 3 MPs for Windows 2003 , 2008 &amp; R2 , 2012&amp;R2</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/10070/00/00/03/64/98/23/DiagnosticTasksMP.zip" original-url="https://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-10070-00-00-03-64-98-23/DiagnosticTasksMP.zip">DiagnosticTasksMP.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Exchange 2013 Monitoring Mailbox Databases and Queues</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/exchange-2013-monitoring-mailbox-databases-and-queues</link>
      <pubDate>Tue, 24 Feb 2015 04:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2015/02/24/exchange-2013-monitoring-mailbox-databases-and-queues/</guid>
      <description><![CDATA[With Exchange 2013 Exchange&nbsp; Product Group&nbsp; has chosen a different route and implemented...]]></description>
      <content:encoded><![CDATA[<p>With Exchange 2013 Exchange&nbsp; Product Group&nbsp; has chosen a different route and implemented all the monitoring inside Exchange server which is called Exchange Managed Availability. When it comes to monitoring&nbsp; from Operations Manager&nbsp; all we have is a&nbsp; discovery&nbsp; scripts, some perf collection rules and&nbsp; one ( yes only one ) event monitor which tracks the events created by Exchange Managed Availability Service.&nbsp; I will not be getting into the Managed Availability&nbsp; and its components. As a summary&nbsp;&nbsp; it has different components called health&nbsp; sets and Exchange server performs ~650+&nbsp;&nbsp; individual checks on these various components.</p>
<p>You can find more details about Managed availability on following posts;</p>
<p><a href="/b/exchange/archive/2012/09/21/lessons-from-the-datacenter-managed-availability.aspx" target="_blank">Lessons from the Datacenter: Managed Availability</a></p>
<p><a href="/b/exchange/archive/2013/08/13/customizing-managed-availability.aspx" target="_blank">Customizing Managed Availability</a></p>
<p>&nbsp;</p>
<p>One of the&nbsp; problems of this&nbsp; component/service based approach is now we don&rsquo;t have the visibility to individual objects like Mailbox Databases or Transport Queues. These are hidden under&nbsp; specific health sets.</p>
<p>&nbsp;</p>
<p>One of my colleagues <a href="https://blogs.msdn.com/b/rslaten/" target="_blank">Russ Slaten</a>&nbsp; has written an extension management pack to solve the very same issue for Exchange 2010 his posts can be accessed here;</p>
<p><a href="https://blogs.msdn.com/b/rslaten/archive/2014/03/20/monitoring-exchange-2010-database-backup-and-mount-status.aspx" target="_blank">Monitoring Exchange 2010 Database Backup and Mount Status</a></p>
<p>After using his management pack in many customers I wanted to do the same for Exchange 2013. I have used&nbsp; his techniques but I had to modify them to work with&nbsp; my own requirements. I have also added&nbsp; some extra monitors&nbsp; rules and added Queue monitoring. So this is what this MP is all about . Lets get into the details ;</p>
<p>&nbsp;</p>
<h2>Discoveries</h2>
<p>&nbsp;</p>
<p>This MP will discovery individual Mailbox databases (stand alone&nbsp; or DAG)&nbsp; and Transport Queues on Exchange servers.&nbsp; Discovery is a PowerShell script runs against Exchange server object every 12 hours.</p>
<p>After importing the MP&nbsp; discovered mailbox databases can be accessed under <strong><em>Mailbox Database Health</em></strong>&nbsp; view under default Exchange MP folder.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_6C4C23DD.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_6C4C23DD.png"><img width="582" height="120" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_5857B2A9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_5857B2A9.png" border="0" /></a>&nbsp;</p>
<p>And discovered Queues can be accessed under <strong><em>Transport Queue Health</em></strong>&nbsp; view .</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_30DB0336.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_30DB0336.png"><img width="587" height="186" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_590FCCF9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_590FCCF9.png" border="0" /></a></p>
<h2>Monitors</h2>
<p>&nbsp;</p>
<p>There are 3 monitors targeting to Mailbox database</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_3BBF9691.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_3BBF9691.png"><img width="587" height="174" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_69D4254F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_69D4254F.png" border="0" /></a></p>
<ul>
<li>Check Database Mount Status &ndash; From Russ&rsquo;s MP sample , checks if DB is mounted or not</li>
<li>Mailbox Database LastAnyBackup Check : This is&nbsp; a modified version of 2010 MP. In my script&nbsp; I check both incremental and full backup and if any backup exist in configured period monitor is healthy.</li>
<li>Active Preference Check : This monitor will check if database is mounted on Active Preference 1&nbsp; if database failovers to any other node&nbsp; monitor will become warning.</li>
</ul>
<p>&nbsp;</p>
<p>For Queues&nbsp; I have the following monitors configured ;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_463D1859.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_463D1859.png"><img width="605" height="302" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_6BF06271.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_6BF06271.png" border="0" /></a></p>
<p>Let me remind you that all these are also&nbsp; monitored under Hubtransport Helath Set for the Exchange Server. So based on your requirement you might use this one or the one provided on Exchange MP.</p>
<p>&nbsp;</p>
<h2>Additional Views</h2>
<h2>&nbsp;</h2>
<p>I have also created a&nbsp; group to include new custom objects as well as the existing one. This group is referenced in&nbsp; <em><strong>Active Alerts Extended</strong></em>&nbsp; view. You can use this view to see all alerts generated by Exchange components.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_1E7B71F7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_1E7B71F7.png"><img width="588" height="213" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_1CCFC785.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_1CCFC785.png" border="0" /></a></p>
<h2>Performance Collection Rules</h2>
<p>There are 7 performance collection rules targeting to Mailbox Databases which collects ;</p>
<p>&nbsp;</p>
<ul>
<li>Database size</li>
<li>Database Whitespace</li>
<li>Number of Mailboxes in Database</li>
<li>Local Mail Flow latency&nbsp; ( Test-Mailflow )</li>
<li>Login Latency&nbsp; (Uses Test-MAPIConnectivity)</li>
<li>Last full&nbsp; backup age</li>
<li>Last incremental backup age</li>
</ul>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_14DD4685.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_14DD4685.png"><img width="643" height="124" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_2F3FCA4D.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_2F3FCA4D.png" border="0" /></a></p>
<p>From rules targeting to Mailbox Database&nbsp;&nbsp; you can disable the ones&nbsp; not needed in your organization.</p>
<p>There are 10 performance collection rules targeting to Queues .</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_4D42F9A3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_4D42F9A3.png"><img width="631" height="163" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_57993F65.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_57993F65.png" border="0" /></a></p>
<p>These rules can be&nbsp; modified by selecting&nbsp; Exchange 2013 Transport Queues as target(class).</p>
<p>&nbsp;</p>
<h2>Cookdown</h2>
<p>&nbsp;</p>
<p>Cookdown in Operations Manager is the process of utilizing single data source to monitor multiple objects&nbsp; on server.&nbsp; On very basics&nbsp; if you want to monitor 10 individual database on a server&nbsp;&nbsp; you need to run your script 10 times which is very inefficient and resource consuming. So with cookdown we modify the script in a way that it outputs multiple property bags for each database we want to monitor and&nbsp; condition detection modules in monitors/rules take care of the rest.</p>
<p>So I tried to utilize this as much as possible. I share the data source&nbsp; in multiple&nbsp; rules&nbsp; so I have cookdown for all instances and for all rules. For database performance collections&nbsp;&nbsp; all of these&nbsp;&nbsp; rules actually retrieves data from 2&nbsp; scripts.&nbsp; So&nbsp; if you have 10 mailbox database&nbsp; in an Exchange server&nbsp;&nbsp; instead of 10x5 = 50 scripts , I run just one&nbsp;&nbsp; which then picked up by individual rules and written to database.</p>
<p>The reason I have 2 script is Test mail flow&nbsp; script has a timeout parameter and takes longer&nbsp; then the rest of perf collection so this is the only reason I&rsquo;ve separated it.</p>
<p>To get the benefit from cookdown all these rules are configured run&nbsp; same time by Synctime setting&nbsp; in MP they will run every 15 min with Synctime&nbsp; setting 00:00.</p>
<p>&nbsp;</p>
<h2>Additional Configuration(Optional)</h2>
<p>When I was developing the management pack my customer wanted&nbsp; the flexibility to&nbsp; classify health sets. In default configuration we have a two state monitor <span style="color:#7ca94b;">Healthy</span> and <span style="color:#ff0000;">Error</span> . But for most&nbsp; customers&nbsp; all these health sets are not equally important.&nbsp;&nbsp; So My customer wanted to reflect Customer touch point as critical but all others as warning.&nbsp; We also had a second requirement where we need to use health sets in dashboards&nbsp; which doesn&#39;t work by default. For details please check my other post&nbsp;&nbsp; <a href="/b/volkancoskun/archive/2014/10/19/creating-exchange-2013-distributed-applications-and-how-to-fix-the-health-rollup-problem.aspx" target="_blank">How to fix the Health Rollup Problem in Distributed Applications with Exchange 2013 Health Sets</a>.</p>
<p>&nbsp;</p>
<p>To overcome all these I&rsquo;ve duplicated the existing event monitor&nbsp; and created 2 replicas. One has unhealthy state defined as warning , other as critical.&nbsp; These 2 monitors are targeted to Availability&nbsp; for the health sets and disabled by default. There are also 2 groups defined in MP ;</p>
<ul>
<li>Critical Health set Objects ,</li>
<li>Warning Health set Objects</li>
</ul>
<p>These 2 monitors have overrides defined to enable then using these groups. . All you need to do is disable the existing monitor ,&nbsp; add the more important health sets to Critical Health sets group and less important ones to warning health sets group .</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_7F6466E4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_7F6466E4.png"><img width="587" height="206" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_41FBB470.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_41FBB470.png" border="0" /></a></p>
<h2>&nbsp;</h2>
<h2>Update &ndash; Script Based Dashboards</h2>
<p>I&rsquo;ve added two script based dashboards under Exchange 2013 Default folder.</p>
<p>Queues</p>
<p>This dashboard will show all transport servers and their queue status</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_1CEBF9E1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_1CEBF9E1.png"><img width="597" height="160" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_05E52AB8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_05E52AB8.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>Database Performance Counters</p>
<p>This dashboard will show all mailbox databases and associated performance counters</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_79E5CB34.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_79E5CB34.png"><img width="604" height="136" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_5DD79CFA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_5DD79CFA.png" border="0" /></a></p>
<p>&nbsp;</p>
<p><span style="font-size:large;"><strong>Update- &nbsp;16/3/2015&nbsp;</strong></span></p>
<p></p>
<p>Mailbox count for the databases was showing max 1000 &nbsp;mailbox because I forget to add&nbsp;<span>-</span><span>ResultSet Unlimited &nbsp;switch. I&#39;ve updated both MP files to show correct mailbox count.</span></p>
<h2>Important !!!</h2>
<p>Always test the supplied MP&rsquo;s in a test environment first , modify them&nbsp; based on your&nbsp; needs than move it to production.</p>
<p>Download link</p>
<p>Zip files contains&nbsp; the base MP Microsoft.Exchange.15.Custom.Extension.xml&nbsp;&nbsp; and same MP with 2 additional Script based dashboards shown above)&nbsp; under MPScriptDashboards folder.</p>
<p>Script Dashboard version requires&nbsp; new visualization MP comes with UR3.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/10070/00/00/03/64/55/92/exc2013ExtesionMP.zip" original-url="https://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-10070-00-00-03-64-55-92/exc2013ExtesionMP.zip">exc2013ExtesionMP.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>How to fix the Health Rollup Problem in  Distributed Applications with Exchange 2013 Health Sets</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/how-to-fix-the-health-rollup-problem-in-distributed-applications-with-exchange-2013-health-sets</link>
      <pubDate>Sun, 19 Oct 2014 11:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2014/10/19/how-to-fix-the-health-rollup-problem-in-distributed-applications-with-exchange-2013-health-sets/</guid>
      <description><![CDATA[&nbsp;
While working with a customer&nbsp; we tried to create a distributed application for their...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>While working with a customer&nbsp; we tried to create a distributed application for their Exchange 2013 environment. Plan was to create distributed apps for Customer Touch Points and for Key dependencies then configure Service Level Tracking. But no matter what we do distributed application did not rollup the health of the exchange health set.</p>
<p>To demonstrate lets create a basic DA&nbsp; for Exchange 2013 . I will add some health set instances in two components.</p>
<p>You can get he health set from Logical entity/Application Component/Windows Application Component/Health Set</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_4C8228C4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_4C8228C4.png"><img width="387" height="380" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_490397DA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_490397DA.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>This is how my distributed app&nbsp; looks&nbsp; like in designer&hellip;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_583C9158.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_583C9158.png"><img width="459" height="260" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_69AF82E1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_69AF82E1.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>After creating the distributed app&nbsp; when you check the diagram&nbsp;&nbsp; you will see that health will not rollup&nbsp; from health set to DA components.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_047E399F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_047E399F.png"><img width="454" height="328" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_7F31E39E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_7F31E39E.png" border="0" /></a></p>
<p>If you open the Health Explorer on KeyDependencies&nbsp; you will see everything is in unmonitored state</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_773CD1ED.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_773CD1ED.png"><img width="453" height="298" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_08AFC377.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_08AFC377.png" border="0" /></a></p>
<p>And <strong>&rdquo;Component Group Health Roll-up&rdquo;</strong>&nbsp; properties&hellip;.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_0533C33E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_0533C33E.png"><img width="459" height="492" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_2B98373A.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_2B98373A.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>This is the Dependency Rollup Monitor for the Availability. . Everything looks&nbsp; normal except that unnamed monitor icon sitting outside the aggregate rollup monitors.</p>
<p>So lets switch to&nbsp; Authoring pane and open monitors for the Health Set Class</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_4F568036.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_4F568036.png"><img width="457" height="136" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_04F15D00.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_04F15D00.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>We can see that&nbsp; event monitor for Exchange 2013&nbsp; is&nbsp; targeting the&nbsp; entity health directly not the Availability rollup selected for dependency monitor. This is why&nbsp; we are not seeing any health rollup in DA.</p>
<p>&nbsp;</p>
<p>To fix it I have copied the&nbsp; event monitor&nbsp; from the exchange MP to an unsealed MP&nbsp; and targeted it to Availability&nbsp; Rollup.</p>
<p>After importing this MP&nbsp; I can see new monitor under availability</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_7CFC4B4E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_7CFC4B4E.png"><img width="445" height="123" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_3B86BA57.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_3B86BA57.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>DA starts to rollup the health properly &hellip;..</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_76707DD1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_76707DD1.png"><img width="438" height="364" title="image" style="background-image:none;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-width:0px;" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_0300BB9F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_0300BB9F.png" border="0" /></a></p>
<p>&nbsp;</p>
<p>Now we have duplicate monitors doing the same job. Since its an event monitor&nbsp; from resource wise it wont have&nbsp; much impact on agent performance.</p>
<p>From this point on ;</p>
<ul>
<li>You can leave both monitors enabled. This will cause duplicate alerts to be generated. You can disable alerting for our monitor&nbsp; and keep it only for DA health Rollup.</li>
<li>You can disable the monitor in the original MP and use only the copied one.&nbsp; This might have undesirable results if Microsoft releases a new version of the MP and changes the configuration for the monitor.&nbsp;</li>
</ul>
<p>In my opinion&nbsp; its better to keep the original one for alerting and copy one for DA rollup only.</p>
<p><span style="color:#ff0000;">If you intend to use only copied one you also need to copy the dependency rollup monitor definitions. These are not included in the attached MP!</span></p>
<div class="wlWriterEditableSmartContent" id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:751f2075-a79a-4cf4-a789-a134527dd930" style="float:none;margin:0px;display:inline;padding:0px;">
<div><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/ExcHealthSetMonitorFix_20026F63.zip" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/ExcHealthSetMonitorFix_5F00_20026F63.zip" target="_self">ExcHealthSetMonitorFix.zip</a></div>
</div>
<p>P.S. This posts in this blog are provided AS IS&nbsp; with no warranties&hellip;.</p>]]></content:encoded>
    </item>
    <item>
      <title>Part I - Monitoring IIS Logs with Operations Manager</title>
      <link>https://docs.microsoft.com/archive/blogs/volkancoskun/part-i-monitoring-iis-logs-with-operations-manager</link>
      <pubDate>Sun, 12 Oct 2014 17:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Volkan Coskun]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/volkancoskun/2014/10/12/part-i-monitoring-iis-logs-with-operations-manager/</guid>
      <description><![CDATA[In this post I&#39;ll talk about&nbsp; IIS log file monitoring.  Log file monitoring&nbsp; and event...]]></description>
      <content:encoded><![CDATA[<p>In this post I&#39;ll talk about&nbsp; IIS log file monitoring.  <p>Log file monitoring&nbsp; and event collections rules are not&nbsp; used as much as other features but in some cases&nbsp; they provide&nbsp;&nbsp; perfect solution for our monitoring needs.&nbsp; In Part I we will create the required event collection rule and in Part 2 I’ll guide you on creating a custom report to present the events we collected. <h2>&nbsp;</h2> <h2><font color="#3687c2">Scenario</font></h2> <p>Customer is using&nbsp; a web service to fetch some sensitive data&nbsp; and wants to track who&nbsp; is&nbsp; querying the web service within the organization. Unfortunately this 3rd party web service&nbsp; does not have any auditing capabilities so we will try to close this gap using OpsMgr. <p>I will use Orchestrator web service for this demo. same technique can be used to monitor any kind of&nbsp; website&nbsp; hosted in IIS. <p>&nbsp; <h2><font color="#3687c2">IIS Logs</font></h2> <p>Before we dive into details we need to understand&nbsp; the IIs log&nbsp; format. IIs logs can be configured from&nbsp; Internet Information Services Manager.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_6E13A008.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_6E13A008.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_71B44B96.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_71B44B96.png" width="546" height="325" /></a></p> <p>Here you can select the fields to be included in the log</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_6A2B6CDA.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_6A2B6CDA.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_553C7B18.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_553C7B18.png" width="498" height="333" /></a></p> <p>&nbsp;</p> <h1></h1> <h3><font color="#3687c2">Sample log file</font> </h3> <p>This is a section from my orchestrator web service log.This is the log entry is created when you&nbsp; browse a specific&nbsp; runbook in orchestrator web console. </p> <p>#Fields: date time s-sitename s-computername s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken</p> <p><br />2014-10-12 20:53:19 W3SVC2 AZDEMOSRV1 fe80::b8b0:55b0:4ef:e23a%32 GET /Orchestrator2012/Orchestrator.svc/Jobs() $expand=Runbook,Statistics&amp;$filter=startswith(Runbook%2FPath%2C&#39;%5CSharepoint%5C&#39;)%20and%20(RunbookId%20eq%20guid&#39;0b759245-c56e-4f41-83e7-6eded739ed99&#39;)&amp;$select=Id,RunbookId……&nbsp; 81 DEMO\volkan fe80::b8b0:55b0:4ef:e23a%32 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1…….) 200 0 0 9669<br /></p> <h3><font color="#649add">OpsMgr Event Collection Rules</font> </h3>  <p>Lets&nbsp; start with creating an event collection rule. Navigate to Authoring pane in OpsMgr console&nbsp; and create a new <font color="#ff0000">Event Collection</font> rule. We will use <font style="background-color:#ffffff;"><font color="#ff0000">Generic CV Text Log</font> </font><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/1_06CA795F.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/1_5F00_06CA795F.jpg"><font style="background-color:#ffffff;">.</font></a></p> <p><img title="1" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="1" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/1_thumb_0D13E09E.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/1_5F00_thumb_5F00_0D13E09E.jpg" width="437" height="284" /></p> <p>Give it a name&nbsp; and select target . I’ll use&nbsp; Windows Operations system as target and&nbsp; create a disabled rule. We will&nbsp; create an override to enable it on specific servers.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/2_50EAA5A6.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/2_5F00_50EAA5A6.jpg"><img title="2" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/2_thumb_3785331D.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/2_5F00_thumb_5F00_3785331D.jpg" width="441" height="290" /></a></p> <p>Specify the directory for the logs, log pattern and separator. In separator area just press space once , we will use space as our separator. </p> <p><font color="#ff0000">P.S If you have multiple websites in your IIS server make sure you specify the right directory.</font></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/3_74A8EEA2.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/3_5F00_74A8EEA2.jpg"><img title="3" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="3" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/3_thumb_5F4DC9EB.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/3_5F00_thumb_5F00_5F4DC9EB.jpg" width="442" height="269" /></a></p> <p>Build event Expression Tab lets you to filter the&nbsp; events using parameters. Before we can do this we need to now which parameter&nbsp; represents the data we seek.&nbsp; So lets have a look at he captured event </p> <p>Event below is generated when we&nbsp; start a runbook from Orchestrator web console </p> <p>2014-10-12 19:12:56 W3SVC2 AZDEMOSRV1 fe80::b8b0:55b0:4ef:e23a%32 POST /Orchestrator2012/Orchestrator.svc/Jobs – 81 DEMO\volkan fe80::b8b0:55b0:4ef:e23a%32 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1…) 201 0 0 1209<br /></p> <p>When this log is captured by OpsMgr System.ApplicationLog.GenericCSVLog.FilteredEventProvider will place each field under separate parameter as shown below.</p> <p>&lt;EventData&gt;<br />&nbsp; &lt;DataItem type=&quot;System.ApplicationLog.GenericLogEntryData&quot; time=&quot;2014-10-12T19:13:11.9659052+00:00&quot; sourceHealthServiceId=&quot;FA577900-3B84-786B-8E5A-8B235CE22A2B&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &lt;LogFileDirectory&gt;C:\inetpub\logs\LogFiles\W3SVC2&lt;/LogFileDirectory&gt;<br />&nbsp;&nbsp;&nbsp; &lt;LogFileType&gt;Generic CSV Log File Format&lt;/LogFileType&gt;<br />&nbsp;&nbsp;&nbsp; &lt;LogFileName&gt;C:\inetpub\logs\LogFiles\W3SVC2\u_ex141012.log&lt;/LogFileName&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Params&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;2014-10-12&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;19:12:56&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;W3SVC2&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;AZDEMOSRV1&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;fe80::b8b0:55b0:4ef:e23a%32&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;POST&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;/Orchestrator2012/Orchestrator.svc/Jobs&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;-&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;81&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;DEMO\volkan&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;fe80::b8b0:55b0:4ef:e23a%32&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1…)&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;201&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;0&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;0&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Param&gt;1209&lt;/Param&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/Params&gt;<br />&nbsp; &lt;/DataItem&gt;<br />&lt;/EventData&gt;</p> <p>Here I’m interested in in </p> <p> Parameter 6&nbsp;&nbsp; =&nbsp;&nbsp; POST&nbsp;&nbsp; this&nbsp; filter will only collect&nbsp; runbook start and stop log entries. When you specify parameters in Event expression you need to refer them as Params/Param[&lt;number&gt;]</p> <p>&nbsp;</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/4_1C718571.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/4_5F00_1C718571.jpg"><img title="4" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="4" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/4_thumb_3C22EFEA.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/4_5F00_thumb_5F00_3C22EFEA.jpg" width="447" height="172" /></a></p> <p>After creating the rule I’ve created an override to enable this rule for specific servers</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/5_4B5958B7.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/5_5F00_4B5958B7.jpg"><img title="5" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="5" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/5_thumb_38A6EFB1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/5_5F00_thumb_5F00_38A6EFB1.jpg" width="455" height="109" /></a></p> <p>You can also use UNC share for this type rules , for more details check <a href="https://blogs.technet.com/b/kevinholman/archive/2009/06/20/using-a-generic-text-log-rule-to-monitor-an-ascii-text-file-even-when-the-file-is-a-unc-path.aspx" target="_blank">Kevin Holman&#39;s blog post</a></p> <h3><font color="#ff0000">OperationsManagerDW Event Views</font></h3> <p>I like spending time on SQL management studio so I’ll&nbsp; review the events from DW. You can use the query below to find the events captured by&nbsp; Event Collection rules.&nbsp; All CSV Text Log rules are published&nbsp; as GenericCSVLog in data warehouse so&nbsp; we will use this to filter&nbsp; the captured events. </p> <p>SELECT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOP (1000) Event.vEvent.DateTime, vRule.RuleSystemName, Event.vEventDetail.EventData, vEventPublisher.EventPublisherName</p> <p>FROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event.vEvent INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event.vEventDetail ON Event.vEvent.EventOriginId = Event.vEventDetail.EventOriginId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vEventLoggingComputer ON Event.vEvent.LoggingComputerRowId = vEventLoggingComputer.EventLoggingComputerRowId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event.vEventRule ON Event.vEvent.EventOriginId = Event.vEventRule.EventOriginId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vRule ON Event.vEventRule.RuleRowId = vRule.RuleRowId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vEventPublisher ON Event.vEvent.EventPublisherRowId = vEventPublisher.EventPublisherRowId<br />WHERE&nbsp;&nbsp;&nbsp; vEventPublisher.EventPublisherName=&#39;GenericCSVLog&#39;<br />--and&nbsp;&nbsp;&nbsp; (vRule.RuleSystemName = &#39;MomUIGeneratedRulea7e8d1fadd4b48afb9bc433dd2a5decf&#39;)<br />ORDER BY Event.vEvent.DateTime DESC</p> <p>Result;</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_60D928C3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_60D928C3.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_39A1703F.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_39A1703F.png" width="515" height="89" /></a></p> <p>You can review the events to find the rulesystemname for the rule you created and filter the query further by using the rulesystemname. Since we have created this in OpsMgr console&nbsp; it has a automatically generated name. Clicking the eventdata will bring you all captured event details.</p> <p>Now we have to use some XML querying in SQL to get what we need from these events.</p> <p>SELECT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOP (100) Event.vEvent.DateTime<br />,vEventDetail.EventData.value(&#39;(/EventData/DataItem/Params/Param)[10]&#39;, &#39;varchar(100)&#39;) as Username<br />,vEventDetail.EventData.value(&#39;(/EventData/DataItem/Params/Param)[6]&#39;, &#39;varchar(10)&#39;)+&#39; - &#39;+vEventDetail.EventData.value(&#39;(/EventData/DataItem/Params/Param)[7]&#39;, &#39;varchar(100)&#39;) as Operation<br />,vEventDetail.EventData.value(&#39;(/EventData/DataItem/Params/Param)[4]&#39;, &#39;varchar(100)&#39;) as Computername<br />,vEventDetail.EventData.value(&#39;(/EventData/DataItem/Params/Param)[8]&#39;, &#39;varchar(256)&#39;) as Details<br />,SUBSTRING(vEventDetail.EventData.value(&#39;(/EventData/DataItem/Params/Param)[8]&#39;, &#39;varchar(256)&#39;),37,36) as JOBID</p> <p>FROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event.vEvent INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event.vEventDetail ON Event.vEvent.EventOriginId = Event.vEventDetail.EventOriginId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vEventLoggingComputer ON Event.vEvent.LoggingComputerRowId = vEventLoggingComputer.EventLoggingComputerRowId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Event.vEventRule ON Event.vEvent.EventOriginId = Event.vEventRule.EventOriginId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vRule ON Event.vEventRule.RuleRowId = vRule.RuleRowId INNER JOIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vEventPublisher ON Event.vEvent.EventPublisherRowId = vEventPublisher.EventPublisherRowId<br />WHERE&nbsp;&nbsp;&nbsp; vEventPublisher.EventPublisherName=&#39;GenericCSVLog&#39;<br />and&nbsp;&nbsp;&nbsp; (vRule.RuleSystemName = &#39;MomUIGeneratedRulea7e8d1fadd4b48afb9bc433dd2a5decf&#39;)<br />ORDER BY Event.vEvent.DateTime DESC</p> <p>Result</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_7901B480.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_7901B480.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_5F300F02.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_5F300F02.png" width="573" height="59" /></a></p> <p>As you can see I’ve modified my rule to capture special get events as well to show you how to query and filter out XML fields.</p> <h2>SQL Reporting Services Report Access </h2> <p>Same technique can be used to&nbsp; track&nbsp; who is accessing the reports in SSRS .&nbsp; You have to create another rule and use the following expression. first part tracks the report access from Reports&nbsp;&nbsp; and second part tracks the usage when reports are run from reporting services ( in general SC products use second option to render report within their console)</p> <p>P.S Check out <a href="https://msdn.microsoft.com/en-us/library/bb630443.aspx" target="_blank">Enable HTTP logging for SSRS</a></p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_10BE0D49.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_10BE0D49.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_1FF47616.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_1FF47616.png" width="572" height="248" /></a></p> <p>Eventdata shows the&nbsp; who has run which report.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_14614988.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_14614988.png"><img title="image" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/70/metablogapi/image_thumb_7133DED5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-70-metablogapi/image_5F00_thumb_5F00_7133DED5.png" width="568" height="312" /></a></p> <p>In PART 2&nbsp; we will create&nbsp; a custom report to display this information in&nbsp; a user friendly way. </p></p></p></p></p></p>]]></content:encoded>
    </item>
  </channel>
</rss>