Skip to main content
Version: On prem: 15.0.3

Application Insights

Application Insights (AI) is an extensible Application Performance Management (APM) service that allows for the monitoring of applications running both on-prem and in Azure.

In Omada Identity, AI has been integrated with the following components:

  • Enterprise Server (ES)
  • Role and Policy Engine (RoPE)
  • Omada Provisioning Service (OPS)

ES portal is an ASP.NET application, and ES sends data about requests, from dependencies and from a predetermined number of performance counters.

info

To activate performance counters and enable Application Insights, you can access the Start performance counters and Enable Application Insights master settings. For more information, refer to the Monitoring section in the Master settings document.

If you want to add more performance counters to be collected, see the following Microsoft article.

info

For more information about dependencies, see the following Microsoft article.

To learn more about AI, see the following Microsoft article.

Configuration

Each service within the Omada Identity has its own ApplicationInsights.config file.

The template for the ApplicationInsights.config file is provided for each service within their respective installation directories. Below are the paths where you can find the template for each service:

  • Enterprise Server (ES):
    \Program Files\Omada Identity Suite\Enterprise Server\website\ApplicationInsights.config

  • Role and Policy Engine (RoPE):
    \Program Files\Omada Identity Suite\Role and Policy Engine\Service\ApplicationInsights.config

  • Omada Provisioning Service (OPS):
    \Program Files\Omada Identity Suite\Provisioning Service\ApplicationInsights.config

Timer Service

The Timer Service within the Omada Identity also supports the collection of performance counters via Application Insights. To enable this feature:

  • Copy the ApplicationInsights.config template file to the bin folder where the TimerService is located.
  • Configure the ApplicationInsights.config file with the correct ConnectionString to start collecting and sending telemetry data.

Using Connection Strings

Microsoft now recommends using Connection Strings instead of the deprecated InstrumentationKey for connecting to Application Insights. The Microsoft documentation, Connection strings in Application Insights - Azure Monitor | Microsoft Learn, provides detailed guidance on how to configure a ConnectionString.

Here is an example of how to structure the ApplicationInsights.config file with a ConnectionString:

<ApplicationInsights>
<ConnectionString>InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://{region}.in.applicationinsights.azure.com/;LiveEndpoint=https://{region}.livediagnostics.monitor.azure.com/</ConnectionString>
</ApplicationInsights>

Telemetry tracked by AI in Enterprise Server

The Enterprise Server website (ES Website) utilizes performance counters to increment the following metrics, which are then tracked through AI telemetry:

  • Web Pages - incremented for each WebPage request
  • WebService Calls – incremented for each WebService call
  • Response Time – average response time
  • DataObject Created – incremented for each data object created
  • DataObject Updated – incremented for each data object updated
  • DataObject Deleted – incremented for each data object deleted
  • DataObject Purged – incremented for each data object purged
  • Session Count – sample of number of interactive sessions

The ES Timer Service is incrementing the following metrics via performance counters which in turn is tracked by AI telemetry:

  • Timer Heartbeat – incremented for each timer cycle
  • Obsolete Property Value Count – sample of number of obsolete property value rows in the database
  • Obsolete DataObject Version Count – sample of number of data object version rows in the database
  • Deleted DataObject Count – sample of number of data object marked as deleted in the database

The AI tracking is configured in the ApplicationInsights.config config file under TelemetryModules:

<Add  

Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">

<Counters>

<Add PerformanceCounter="\Omada Enterprise\Web Pages" />

...

For the ES Website, the file must be present in the website's root folder (similar to the Web.config file). Conversely, for the ES Timer Service, the file must be located in the website's bin folder (like the Omada.OE.Service.exe.config file).

Telemetry tracked by AI in Role and Policy Engine

The Role and Policy Engine (RoPE) service can provide custom metrics (for example, BatchPreparing, CalculationCompleted) if the ApplicationInsightsTelemetry extension is enabled in the EngineConfiguration.config file. This extension is included in the configuration file by default but is commented out. To enable it, follow these steps:

  • Ensure that the AppSettingsEnabled master setting is set to true in the tblMasterSettings table within the OIS database.

  • Add the appropriate ConnectionString to the ApplicationInsights.config file.

  • Uncomment the following line in EngineConfiguration.config to enable the extension:

    <!-- Enable this extension if we wish to send a telemetry to Application Insights.
    The AppSettingsEnabled master setting has to be set to true in the OIS DB tblMasterSettings table
    and the ConnectionString has to be added to the ApplicationInsights.config file.
    <add type="Omada.RoPE.Controller.OISX.Extensions.ApplicationInsightsTelemetry, Omada.RoPE.Controller.OISX" />
    -->

The following telemetry is tracked by AI in Role and Policy Engine:

  • Calculation of a batch of identities is started. This event is called BatchPreparing, and also contains a metric called IdentitiesCount which measures the number of identities that are to be processed.
  • Calculation of an identity (in a batch) is completed successfully. This event is called CalculationCompleted.
  • When a service is started or stopped.

Telemetry tracked by AI in Omada Provisioning Service

  • When a service is started. This event is called Provisioning Service started.
  • When a service is stopped. This event is called Provisioning Service stopped.
  • A metric with a duration of a task’s execution. This event is called TaskExecuted, and contains a metric named TaskExecutionTime.
  • Number of pending jobs. This event is called JobScheduled and contains a metric named QueuedJobs which measures the number of jobs that are in the queue.
  • Number of pending notifications. This telemetry contains a metric named NotificationQueue.

You can also enable or disable the feature using the AppInsightsEnabled Master Setting (supported in RoPE and ES), and for OPS by the app setting AppInsightsEnabled.

info

To enable the AI for a selected component you must perform the configuration steps that follow. If AI is not enabled then no data is sent to the AI. The amount of data sent to AI differs for every component.