Obs/bin/GMA/Monitoring/Agent/initconfig/2.0/Standard/ServiceDependencyTlsMetrics.xml

<MonitoringManagement version="1.0" timestamp="2019-10-21T22:14:29.905Z">
  <Events>
    <DerivedEvents>
      <!--
        Emits the following metrics:
          - ServiceDependency/Tls/ConnectionActivity
 
        Emitted every minute to represent whether tls traffic of a specific version has been observed.
        The default version of this metric emits the bare minimum of dimensions:
          - Tenant, Role, RoleInstance
          - Direction
          - TLSVersion
 
        More dimensions can be added (see below), but doing that will increase the cost of ingesting the data and may
        require increasing your MDM quotas.
 
        Please see:
        - https://genevamondocs.azurewebsites.net/collect/advanced/derivedintro.html for information on writing derived events
        - https://genevamondocs.azurewebsites.net/alerts/AdvancedTopics/DependencyMonitoring/DependencyData.html for information on
           available Dependency Monitoring fields
 
        The Connections event is used to monitor activity for outbound connections, while the Ports event is used to monitor activity
         for inbound connections.
 
        To add additional dimensions to the metrics you emit, do the following (though it is strongly recommended you do not exceed
          10 dimensions total)
        - identify the set of fields of the Connections and/or Ports table that you want to add dimensions for
        - add them to the select and groupby clauses of the sourceData temporary table (the section under "var sourceData")
        - add them to the groupby claue of the output table (the section under "from sourceData")
        - add them to each of the SetMdmMeasureMetric() function calls which is accomplished by adding two new parameters to the end
           of the call in the form of ["<dimensionName>", <dimensionValueVariable>]
      -->
      <DerivedEvent
        source="SvcDepConnectionsRaw"
        eventName="SvcDepTlsOutMetric"
        storeType="Local"
        duration="PT1M">
        <Query>
          <![CDATA[
            var sourceData =
              select TlsVersions, Direction
              where Direction == "outbound"
              groupby TlsVersions
 
              let GroupByConst = 1
 
              let HasTLS10Raw = Contains(TlsVersions, "TLS1.0") ? 1 : 0
              let HasTLS11Raw = Contains(TlsVersions, "TLS1.1") ? 1 : 0
              let HasTLS12Raw = Contains(TlsVersions, "TLS1.2") ? 1 : 0
              let HasTLS13Raw = Contains(TlsVersions, "TLS1.3") ? 1 : 0;
 
            from sourceData
              groupby GroupByConst
 
              let Account = GetEnvironmentVariable("MA_AGENT_METRICS_ACCOUNT")
              let Tenant = GetStaticEnvironmentVariable("MA_TENANT_IDENTITY")
              let Role = GetStaticEnvironmentVariable("MA_ROLE_IDENTITY")
              let RoleInstance = GetStaticEnvironmentVariable("MA_ROLEINSTANCE_IDENTITY")
 
              let HasTLS10Max = Max(HasTLS10Raw)
              let HasTLS11Max = Max(HasTLS11Raw)
              let HasTLS12Max = Max(HasTLS12Raw)
              let HasTLS13Max = Max(HasTLS13Raw)
 
              let HasTLS10Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS10Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "outbound",
                "TLSVersion", "1.0")
 
              let HasTLS11Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS11Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "outbound",
                "TLSVersion", "1.1")
 
              let HasTLS12Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS12Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "outbound",
                "TLSVersion", "1.2")
 
              let HasTLS13Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS13Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "outbound",
                "TLSVersion", "1.3")
          ]]>
        </Query>
      </DerivedEvent>
 
      <DerivedEvent
        source="SvcDepPortsRaw"
        eventName="SvcDepTlsInMetric"
        storeType="Local"
        duration="PT1M">
        <Query>
          <![CDATA[
            var sourceData =
              select TlsVersions
              groupby TlsVersions
 
              let GroupByConst = 1
 
              let HasTLS10Raw = Contains(TlsVersions, "TLS1.0") ? 1 : 0
              let HasTLS11Raw = Contains(TlsVersions, "TLS1.1") ? 1 : 0
              let HasTLS12Raw = Contains(TlsVersions, "TLS1.2") ? 1 : 0
              let HasTLS13Raw = Contains(TlsVersions, "TLS1.3") ? 1 : 0;
 
            from sourceData
              groupby GroupByConst
               
              let Account = GetEnvironmentVariable("MA_AGENT_METRICS_ACCOUNT")
              let Tenant = GetStaticEnvironmentVariable("MA_TENANT_IDENTITY")
              let Role = GetStaticEnvironmentVariable("MA_ROLE_IDENTITY")
              let RoleInstance = GetStaticEnvironmentVariable("MA_ROLEINSTANCE_IDENTITY")
 
              let HasTLS10Max = Max(HasTLS10Raw)
              let HasTLS11Max = Max(HasTLS11Raw)
              let HasTLS12Max = Max(HasTLS12Raw)
              let HasTLS13Max = Max(HasTLS13Raw)
 
              let HasTLS10Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS10Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "inbound",
                "TLSVersion", "1.0")
 
              let HasTLS11Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS11Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "inbound",
                "TLSVersion", "1.1")
 
              let HasTLS12Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS12Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "inbound",
                "TLSVersion", "1.2")
 
              let HasTLS13Metric = SetMdmMeasureMetric(
                Account,
                "ServiceDependency",
                "Tls/ConnectionActivity",
                HasTLS13Max,
                "Tenant", Tenant,
                "Role", Role,
                "RoleInstance", RoleInstance,
                "Direction", "inbound",
                "TLSVersion", "1.3")
          ]]>
        </Query>
      </DerivedEvent>
 
    </DerivedEvents>
  </Events>
</MonitoringManagement>