Megosztás a következőn keresztül:


Szoftveres hozzáférés

Az értesítési központok telemetriai adatai programozott módon, Microsoft Azure Service Bus metrikákhoz hasonlóan érhetők el (az előző táblákban megadott REST-azonosítók használatával a megfelelő metrikák eléréséhez).

1. lépés: Tanúsítvány létrehozása

Először hozzon létre egy tanúsítványt az Azure-előfizetés erőforrásainak eléréséhez. Az Windows tegye a következőket:

  1. Nyissa meg Visual Studio rendszergazdai parancssort, és írja be a következő parancsot:

    makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"
    
  2. Futtassa a Certmgr.msc parancsot, kattintson a bal oldalon a Személyes elemre, majd kattintson a jobb gombbal a létrehozott tanúsítványra, és kattintson a Minden feladat, majd az Exportálásparancsra.

    Portal

  3. Kövesse a varázslót, és válassza azt a lehetőséget, hogy ne exportálja a titkos kulcsot. Válassza ki a CER-tanúsítvány exportálásának lehetőségét, majd adjon meg egy fájlnevet a következőre .cervégződve: .

    Portal

  4. Ismételje meg az exportálási folyamatot, ezúttal a titkos kulcs PFX-fájlba való exportálását választva. Ezután válasszon ki egy , a következővel .PFXvégződő nevet: .

2. lépés: A tanúsítvány feltöltése az Azure-ba

Most töltse fel a . CER-fájl, amely lehetővé teszi, hogy a tanúsítvány műveleteket hajthasson végre az Azure-erőforrásokon.

  1. Az Azure felügyeleti portálon kattintson a bal oldali Gépház, majd a Felügyeleti tanúsítványok elemre.

  2. Kattintson a Képernyő alján található Feltöltés gombra, majd válassza ki a kívánt fájlt. CER-fájl.

  3. Jegyezze fel a kezelni kívánt előfizetés-azonosítót.

    Megjegyzés

    Az előfizetés azonosítójának az értesítési központot tartalmazó előfizetésnek kell lennie.

    Portal

3. lépés: Metrikák elérése REST-felületen keresztül

A telemetriai adatok olvasásához REST-hívásokat kell kibocsátania egy OLYAN URL-címre, amely Microsoft Azure Service Bus metrikákban megadott szabályok szerint van létrehozva (az előző szakaszban jelentett metrikanevek használatával).

Az alábbi kód egy minta, amely a 2013-08-06T21:30:00Z óta 5 perces időközönként összesített sikeres leküldések számát kéri le (ne felejtse el lecserélni az subscriptionId-eket, a névtérnevet, az értesítési központ nevét és a pfx tanúsítvány elérési útját az értékekre).

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);
            }
        }


    }
}