Compartir a través de


Acceso mediante programación

Puede acceder a los datos de telemetría de Notification Hubs mediante programación, análogos a las métricas de Microsoft Azure Service Bus (mediante los identificadores REST proporcionados en las tablas anteriores para acceder a las métricas respectivas).

Paso 1: Crear un certificado

En primer lugar, cree un certificado para tener acceso a los recursos de suscripción de Azure. En Windows, haga lo siguiente:

  1. Abra el símbolo del sistema de administrador de Visual Studio y escriba el siguiente comando:

    makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"
    
  2. Ejecute Certmgr.msc, haga clic en Personal a la izquierda; a continuación, haga clic en el certificado que creó y haga clic en Todas las tareas y, por último, en, Exportar.

    Portal

  3. Siga los pasos del asistente y elija la opción para no exportar la clave privada. Elija la opción para exportar un certificado CER y proporcione un nombre de archivo que termine con .cer.

    Portal

  4. Repita el proceso de exportación, esta vez eligiendo la opción de exportar la clave privada en un archivo PFX. A continuación, seleccione un nombre que termine con .PFX.

Paso 2: Upload el certificado a Azure

Ahora cargue el archivo .CER para habilitar el certificado para realizar operaciones en los recursos de Azure.

  1. En el portal de administración de Azure, haga clic en Configuración a la izquierda y, a continuación, haga clic en Certificados de administración.

  2. Haga clic en Cargar en la parte inferior de la pantalla y, a continuación, seleccione el archivo .CER.

  3. Tome nota de su identificador de suscripción que desea administrar.

    Nota

    El identificador de suscripción debe ser el identificador para la suscripción que contiene el centro de notificaciones.

    Portal

Paso 3: Acceso a las métricas a través de una interfaz REST

Para leer la telemetría, debe emitir llamadas REST a una dirección URL construida según las reglas especificadas en Microsoft Azure Service Bus métricas (mediante los nombres de métrica notificados en la sección anterior).

El código siguiente es un ejemplo que recupera el número de inserciones correctas agregadas en intervalos de 5 minutos desde 2013-08-06T21:30:00Z (no olvide reemplazar los identificadores de suscripción, el espacio de nombres, el nombre del centro de notificaciones y la ruta de acceso del certificado pfx por sus valores).

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel.Syndication;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace telemetry1
{
    class Program
    {
        [DataContract(Name = "properties", Namespace = "https://schemas.microsoft.com/ado/2007/08/dataservices")]
        public class MetricValue
        {
            [DataMember(Name = "Timestamp")]
            public DateTime Timestamp { get; set; }

            [DataMember(Name = "Min")]
            public long Min { get; set; }

            [DataMember(Name = "Max")]
            public long Max { get; set; }

            [DataMember(Name = "Total")]
            public long Total { get; set; }

            [DataMember(Name = "Average")]
            public float Average { get; set; }
        }

        static void Main(string[] args)
        {
            string uri = @"https://management.core.windows.net/{subscriptionId}/services/ServiceBus/namespaces/{namespaceName}/NotificationHubs/{hubName}/metrics/outgoing.allpns.success/rollups/PT5M/Values?$filter=Timestamp%20gt%20datetime'2014-08-06T21:30:00Z'";
            HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(uri);
            sendNotificationRequest.Method = "GET";
            sendNotificationRequest.ContentType = "application/xml";
            sendNotificationRequest.Headers.Add("x-ms-version", "2015-01");
            X509Certificate2 certificate = new X509Certificate2(@"{pathToPfxCert}", "{certPassword}");
            sendNotificationRequest.ClientCertificates.Add(certificate);


            try
            {
                HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.GetResponse();

                using (XmlReader reader = XmlReader.Create(response.GetResponseStream(), new XmlReaderSettings { CloseInput = true }))
                {
                    SyndicationFeed feed = SyndicationFeed.Load<SyndicationFeed>(reader);

                    foreach (SyndicationItem item in feed.Items)
                    {
                        XmlSyndicationContent syndicationContent = item.Content as XmlSyndicationContent;
                        MetricValue value = syndicationContent.ReadContent<MetricValue>();
                        Console.WriteLine(value.Total);
                    }
                }
            }
            catch (WebException exception)
            {
                string error = new StreamReader(exception.Response.GetResponseStream()).ReadToEnd();
                Console.WriteLine(error);
            }
        }


    }
}