Juin 2018

VOLUME 33, NUMÉRO 6

Cet article a fait l'objet d'une traduction automatique.

Azure Databricks - analyse des tâches Databricks avec Application Insights

Par Joseph Fultz | Juin 2018

Nous travaillons sur une équipe se concentre sur les données et analytique pour les grandes entreprises qui veulent implémenter ou migrer leurs solutions dans le cloud. Ces efforts sont fournis avec le travail évident d’optimisation et la reconfiguration des applications à différents degrés, afin de que tirer parti des fonctions proposées par le cloud. Aussi grand que ces efforts peuvent être de l’application elle-même, il existe autres défis pour les organisations à peine le voyage cloud, ils doivent également faire tout le travail qui correspond à étendre leurs fonctionnalités opérationnelles dans le cloud. Et, en tant que nouvelles technologies émergent et faire évoluer, ceux-ci doivent être pliées dans l’infrastructure opérationnelle existante, ainsi. Il s’agit d’un des défis qui existe avec les solutions basée sur Apache Hadoop et Spark. Oui, Apache Ambari permet de fournir un tableau de bord agréable et dispose d’une API pour exposer des mesures, mais de nombreuses organisations possèdent déjà un investissement en et une bonne compréhension des autres solutions d’analyse et de tableaux de bord, tels que Azure Application Insights.

Imaginez une tâche Web qui extrait les messages à partir d’Azure Event Hubs, effectue une validation initiale et puis les déplace vers le stockage Azure, alors que les données sont traitées via plusieurs travaux Spark, comme indiqué dans Figure 1. L’objectif est d’avoir un tableau de bord unique runtime qui peut fournir des informations qui affiche non seulement ce qui se passe, mais également des informations spécifiques de processus et d’entreprise lorsqu’il est en vol. En outre, il serait utile être en mesure de suivre le flux de ces informations comme un processus global et voir les détails sur son processus qui le composent.

Figure 1 Solution unique, des processus distincts, des étapes distinctes

Bien sûr, vous pouvez voir les mesures par défaut pour les tâches Web Application Insights et des informations à partir de l’explosion des travaux dans Ambari et les restaure all up with Analytique de journal Azure pour insights post ad hoc. Toutefois, nous ne voulons pas voir les deux processus distincts avec quatre étapes. Que vous souhaitez voir le processus dans son ensemble, et nous souhaitons insights de runtime et les alertes de l’exécution.

Dans cet article, nous examinerons les considérations et la planification pour remettre le projet complet en utilisant Application Insights. En outre, nous utiliserons la version de Azure Databricks de Spark car elle a un jeu intéressant de fonctionnalités qui vous aident plus facilement développer et tiens notre flux de travail.

Planification de télémétrie Application Insights

Nous ne couvrant les principaux concepts, mais pour une introduction sur ces concepts, jetez un œil à la documentation en ligne à l’adresse bit.ly/2FYOCyp. En outre, Victor Mushkatin et Kanzhelev Sergey a écrit un bon article sur l’optimisation de la collecte de données de télémétrie, « Optimiser les données de télémétrie avec Application Insights » (msdn.com/magazine/mt808502). Ici, nous allons nous concentrer sur l’organisation de notre blocs-notes et des travaux afin de faciliter le suivi dans le formulaire de l’opération, les événements et les données que nous envoyer des travaux de notre Databricks approprié.

Dans Databricks, vous pouvez définir un travail en tant que l’exécution d’un ordinateur portable avec certains paramètres. Figure 2 illustre les deux approches pour organiser le travail dans un bloc-notes Databricks.

Figure 2 Options d’organisation de base pour un travail Databricks portable

Figure 2 montre deux possibilités simples dans lequel une tâche est définie comme un ordinateur portable unique avec un nombre de blocs de code ou de fonctions appelées tandis que l’autre tâche affiche un ordinateur portable de contrôle qui orchestre l’exécution d’ordinateurs portables d’enfants, soit de façon séquentielle ou parallèle. Cela n’est pas, par quelque moyen que, la seule organisation qui peut être utilisée, mais c’est suffisant afin d’illustrer comment aborder la corrélation. Comment vous allez organiser les ordinateurs portables et le code est certainement une rubrique utile et est très variable selon la taille et la nature du travail. Pour un peu plus approfondie sur le flux de travail Databricks bloc-notes et examinez le billet de blog, « portables de flux de travail : Le moyen le plus simple à implémenter Apache Spark Pipelines » (bit.ly/2HOqvTj).

Notez qu’organisation bloc-notes a été alignée avec les opérations discrètes qui peuvent être utilisé pour l’événement du groupe de rapports dans Application Insights. Dans Application Insights, corrélation est effectuée via deux propriétés : Id d’opération et ID d’opération Parent. Comme dans Figure 2, nous souhaitons capturer tous les événements discrètes et métriques dans un code de bloquent ou séparer l’ordinateur portable dans le contexte d’une opération unique, qui est réalisée à l’aide d’une Id d’opération distinct pour chaque section. En outre, nous souhaitons voir ces blocs distincts opération importante dans le cadre d’un ensemble, nous pouvons faire en définissant l’opération de parent du contexte code à la même valeur pour toutes les métriques de création de rapports dans chaque opération. L’opération parent Id peut également être transmis dans à partir d’un déclencheur externe pour le travail, qui ensuite offre un mécanisme permettant de lier toutes les opérations discrètes à partir de la procédure précédente et le travail Azure Databricks dans le cadre d’une opération de lecture seule identifiée par le parent opération Id dans Application Insights.

Nous avons décrit quelques scénarios ici. Le point essentiel est que vous devez envisager la façon dont vous souhaitez organiser vos opérations, les événements et les métriques dans le cadre de l’organisation de travail global.

Ajout d’Application Insights à l’environnement

Pour préparer l’environnement, vous devez installer la bibliothèque Python Application Insights sur le cluster, saisissez certains paramètres de configuration et ajoutez un peu de code d’assistance. Vous pouvez trouver l’Application Insights sur pypi (pypi.python.org/pypi/applicationinsights/0.1.0). Pour l’ajouter à Databricks, simplement choisir un emplacement dans votre espace de travail (nous avons créé un Lib nommée) avec le bouton droit et cliquez sur Créer, puis de bibliothèque. Une fois, vous pouvez entrer le nom de l’application pypi et Databricks télécharge et installe le package. La dernière chose que vous devrez décider est ou non vous voulez attacher la bibliothèque à tous les clusters automatiquement.

Lors de la tentative de réduire la quantité de code à ajouter à chaque ordinateur portable, nous avons ajouté un fichier include qui a deux fonctions d’assistance :

def NewTelemetryClient (applicationId, operationId="",  
  parentOperationId=""):
  tc = TelemetryClient(instrumentationKey)
  tc.context.application.id = applicationId
  tc.context.application.ver = '0.0.1'
  tc.context.device.id = 'Databricks notebook'
  tc.context.operation.id = operationId
  tc.context.operation.parentId = parentOperationId
  return tc

Ce code contient une fonction de fabrique nommée NewTelemetryClient pour créer un objet de client de télémétrie, de définir certaines propriétés et de retourner l’objet à l’appelant. Comme vous pouvez le voir, il prend un parent Id d’opération et un ID d’opération. Ce code initialise l’objet, mais notez que si vous devez modifier l’Id de l’opération, vous devrez le faire directement dans le bloc-notes de travail. À noter est que le TelemetryClient constructeur prend également une clé d’instrumentation, qui se trouve dans le panneau des propriétés de l’instance d’Application Insights que vous souhaitez utiliser. Nous avons attribuées de façon un peu de valeurs qui est nécessaires pour l’exemple, mais l’objet de contexte TelemetryClient a de nombreux objets enfants et des propriétés qui sont disponibles. Si vous avez besoin initialiser d’autres valeurs, cela peut être le lieu de le faire. Séparation de la fonction de fabrique conserve l’encombrement vers le bas et facilite également l’implémentation pour les développeurs de conversion de l’ordinateur portable à partir d’un type de prototype sandbox de code à un type de tâche d’entreprise d’implémentation. 

Avec la bibliothèque est ajoutée au cluster et le bloc-notes le programme d’installation définies, il suffit d’ajouter une ligne en haut de l’ordinateur portable de travail pour exécuter le programme d’installation, puis créer un objet de télémétrie de démarrage. Nous allons émettre un %, exécutez la commande en haut de l’ordinateur portable :

%run ./AppInsightsSetup

Dans la cellule suivante, nous allons simplement instancier une nouvelle instance de l’objet TelemetryClient.

Figure 3 montre le code de l’exemple de prédiction, nous avons créé. Il existe plusieurs choses à noter ici. Tout d’abord, que nous transmettons le nombre de variables de l’ordinateur portable qui sont envoyées dans le cadre de l’initialisation de tâche qui s’effectue via l’objet dbutils.widgets fourni dans le cadre de l’environnement Databricks. Étant donné que nous avons besoin de quelques ID pour l’opération de parent et de l’opération discrète, nous allons continuez et sélectionnez ceux qu’et, s’ils sont vides, créez et affectez nouvelles UUID. Affectation d’ID arbitraires dans ce cas est principalement pour faciliter l’exécuter de manière interactive. Toutefois, les autres approches peuvent être suivies, telles que l’encapsulation de code de l’ordinateur portable de la tâche dans une série de fonctions et en cours d’exécution des tests en appelant la fonction parente avec un ID spécifique. Les deux fonctionnent suffisamment bien pour notre à des fins ici. La dernière chose que nous affectons est un nom d’opération, qui finit par s’affiche dans Application Insights en tant que quelque chose que vous pouvez utiliser pour afficher et regrouper par, comme dans Figure 4.

Code d’initialisation de la figure 3 portable

baseRatingsFile = dbutils.widgets.get("baseRatingsFile")
newRatingsFile = dbutils.widgets.get("newRatingsFile")
trainOperationId = dbutils.widgets.get("trainOperationId")
parentOperationId = dbutils.widgets.get("parentOperationId")
maxIterations =  int(dbutils.widgets.get("maxIterations"))
numFolds = int(dbutils.widgets.get("numFolds"))
numUserRecommendations = int(
  dbutils.widgets.get("numUserRecommendations"))
predictionFilePath = dbutils.widgets.get("predictionFilePath")
if trainOperationId == "":
  trainOperationId = NewCorrelationId()
if parentOperationId == "":
  parentOperationId = NewCorrelationId()
#setup other needed variables
telemetryClient = NewTelemetryClient("PredictionExample",
  trainOperationId, parentOperationId)
telemetryClient.context.operation.name = "Train Model"

Examinez Figure 3, vous pouvez voir que le nom de l’opération a été affecté à la valeur du modèle d’apprentissage. Figure 4 décrit dans une grille de données une fois qu’il a été choisi comme mécanisme de regroupement pour les données. Comme nous exécuter plusieurs tâches et affecter des noms d’opération, nous serons en mesure de consulter les informations apparaissent dans la vue. Avec ces éléments en place, nous sommes en bonne voie pour travailler sur l’instrumentation de notre code de travail pour capturer des événements et des mesures.

Nom de l’opération dans Application Insights

Nom de l’opération figure 4 dans Application Insights

L’instrumentation du Code de projet de Databricks

Examinons un exemple qui utilise l’Application Insights pour analyser une ingénierie à rebours de données classiques à un travail dans Databricks. Dans ce scénario, nous utilisons les données accessibles à partir de Fannie Mae (bit.ly/2AhL5sS) et prend les données sources brutes sur les performances de la seule famille prêt et préparer pour la création de rapports et analytique. Plusieurs étapes sont nécessaires pour préparer correctement les données. À chaque étape, nous capturer des informations telles que le nombre d’enregistrements et de temps écoulé et enregistrez ces éléments dans Application Insights. Figure 5 illustre les étapes du travail. Nous avons réglé sur l’utilisation de titres dans la partie supérieure de Figure 5 pour identifier ses opérations distinctes.

Flux de travail de l’équipe d’ingénierie de données figure 5

En outre, nous avons créé un ensemble de mesures avec des noms similaires (par exemple, écrire une durée, en lecture durée, nombre d’enregistrements) qui seront signalées dans les événements nommés différemment. Ce sera important dans l’analytique, observez les mesures spécifiques et les afficher par l’opération ou l’événement. Comme indiqué dans Figure 5, tout d’abord nous réception de plusieurs fichiers de données, puis consolider les transformer et enfin écrire dans deux emplacements cibles. Le jeu de données entièrement préparé est rendue persistante dans le stockage d’objets Blob à long terme et un sous-ensemble agrégé est envoyé à notre SGBDR, base de données SQL Azure. Bien entendu, au sein de chaque étape générale, il existe plusieurs sous-étapes. Plus précisément, nous importer les quatre fichiers distincts, les fusionner dans une trame de données Spark unique et écrire le jeu de données consolidée brute pour le stockage d’objets Blob. Les données consolidées sont puis lus hors de stockage d’objets Blob dans une nouvelle trame de données pour le nettoyage et la transformation. Pour effectuer la transformation, nous sous-ensemble la trame de données (autrement dit, réduire aux colonnes appropriées uniquement), renommez les colonnes à des noms significatifs et remplacez les valeurs null dans la colonne du nom. La forme finale des données est conservée dans le format de fichier Parquet. La dernière étape de cet exemple conserve les données à une base de données SQL Azure.

Pour cet exemple de travail Azure Databricks, nous avons l’approche portable unique avec les étapes programmées dans les cellules de code séparé. Opération d’un seul parent Id est défini pour chaque exécution du travail. Une opération (enfant) Id s’applique à chaque opération d’une tâche, et nous avons défini l’Acquisition, de Transformation et de persistance en tant que ces opérations. Nous suivre les événements qui se produisent pour chaque opération, l’enregistrement d’horodatage, nombre d’enregistrements, la durée et autres paramètres dans Application Insights lors de l’exécution du travail.

Comme dans l’exemple précédent de prédictions, nous ajouter le package Python « applicationinsights » au cluster, exécutez le bloc-notes le programme d’installation et instancier une nouvelle instance de l’objet TelemetryClient. Cette fois nous nommez l’instance DataEngineeringExample et puis définissez le nom de l’opération initiale à l’acquisition par exemple, pour vous préparer à notre première série d’étapes pour l’acquisition des données de la source :

telemetryClient = NewTelemetryClient(
  "DataEngineeringExample", operationId, parentOperationId)
telemetryClient.context.operation.name = "Acquisition"

Ensuite, nous capturer l’heure actuelle et effectuer le suivi de notre premier événement d’Application Insights, l’enregistrement que le travail a démarré :

import datetime
jobStartTime = datetime.datetime.now()
jobStartTimeStr = str(jobStartTime)
telemetryClient.track_event('Start Job', { 'Start Time': jobStartTimeStr,
  'perfDataFilePath':perfDataFilePath, 'perfDataFileNamePrefix' :  
  perfDataFileNamePrefix, 'consolidatedDataPath':consolidatedDataPath, 
  'transformedFilePath' : transformedFilePath, 'perfDBConnectionString':
  perfDBConnectionString, 'perfDBTableName': perfDBTableName})
telemetryClient.flush()

Il s’agit du code pour définir l’horodatage actuel en tant que l’heure de début pour le travail et enregistrez-le dans notre premier événement Application Insights. Tout d’abord, nous importer la date/heure de la bibliothèque Python pour pratique fonctions de date et heure et définissez jobStartTime variable à l’horodatage actuel. Il est important de noter que la signature pour le track_event ([eventName], [{propriétés}], [{mesures}]) méthode accepte les paramètres d’un dictionnaire de mesures, dictionnaire de propriétés et le nom de l’événement. À cette fin, la variable timestamp doit être sérialisable JSON pour l’inclure dans les propriétés de l’événement de télémétrie. Par conséquent, nous effectuer un cast de l’objet jobStartTime sous forme de chaîne et insérez la valeur dans une nouvelle jobStartTimeStr variable. Dans l’étape suivante, nous envoyons notre événement de télémétrie initiale avec la méthode track_event, en lui passant le nom heure de début de notre événement personnalisé avec plusieurs paramètres, que nous avons sélectionné pour capturer cet événement. Nous avons inclus des paramètres pour les différents chemins d’accès de fichier et les chaînes de connexion qui sont référencés dans la tâche. Par exemple, perfDataFilePath contient l’emplacement des fichiers de données source et perfDBConnectionString contient la chaîne de connexion pour la base de données SQL Azure, où nous allons conserver certaines données. Il s’agit des informations utiles dans de tels cas où nous constatons un enregistrement 0 se connecter ou avoir une alerte définie ; Nous pouvons prendre un coup de œil la télémétrie de l’opération associée et vérifier rapidement les fichiers et/ou les bases de données qui sont en cours d’accès.

Nous pouvons maintenant dans les cellules de la commande dans le bloc-notes, ajouter du code de suivi des événements similaires à chaque étape, avec quelques modifications relatives aux étapes du travail internes. Comme il est souvent utile d’utiliser des nombres d’enregistrements dans l’ensemble d’un travail d’ingénierie de données à prendre en compte du volume de données lors de l’analyse des performances et utilisation des ressources, nous avons ajouté une mesure du nombre d’enregistrements pour chaque événement de suivi.

Figure 6 montre quelques transformations de base de données, suivies de suivi des événements pour Application Insights. À l’intérieur du bloc Try de gestion des exceptions, nous effectuer trois types de transformations à la fois sur la trame de données perfTransformDF. Nous sous-ensemble la trame de données, en conservant uniquement un groupe sélectionné de colonnes les plus pertinentes et en ignorant le reste. Nous Remplacez les valeurs NULL dans la colonne du nom par « Inconnu ». Et, étant donné que les noms de colonne d’origine ont été sans signification (par exemple, « _C0 », « _C1 »), nous renommer le sous-ensemble approprié de colonnes des noms explicites tels que « loan_id » et « loan_age ».

Code de suivi des événements de Transformation de données figure 6

if notebookError == "":
  try:
    perfTransformedDF = perfTransformedDF['_c0','_c1','_C2','_C3','_C4', \
                                          '_C5','_C6','_C7','_C8','_C9', \
                                          '_C10','_C11','_C12','_C13'] \
      .fillna({'_C2':'UNKNOWN'}) \
      .withColumnRenamed("_C0", "loan_id") \
      .withColumnRenamed("_C1", "period") \
      .withColumnRenamed("_C2", "servicer_name") \
      .withColumnRenamed("_C3", "new_int_rt") \
      .withColumnRenamed("_C4", "act_endg_upb") \
      .withColumnRenamed("_C5", "loan_age") \
      .withColumnRenamed("_C6", "mths_remng") \
      .withColumnRenamed("_C7", "aj_mths_remng") \
      .withColumnRenamed("_C8", "dt_matr") \
      .withColumnRenamed("_C9", "cd_msa") \
      .withColumnRenamed("_C10", "delq_sts") \
      .withColumnRenamed("_C11", "flag_mod") \
      .withColumnRenamed("_C12", "cd_zero_bal") \
      .withColumnRenamed("_C13", "dt_zero_bal")
    print("nulls replaced")
    end = datetime.datetime.now()
    rowCount = perfTransformedDF.count()
    duration = round((end - start).total_seconds(), 1)
    telemetryClient.track_event('Transformation Complete', {}, \
                                { 'Records Transformed': rowCount, \
                                 'Transformation Duration':duration })
    telemetryClient.flush()
  except Exception as e:
    notebookError = str(e)
    telemetryClient.track_exception(e,{"action":"column transform"},{})
else:
  print("command skipped due to previous error")

Une fois que les transformations sont terminées, nous capturer l’horodateur actuel dans la variable « fin » qu’au moment où cette étape est terminée ; compter les lignes dans la trame de données ; et calculer la durée de l’étape en fonction des heures de début et de fin. Nous envoyer ce télémétrie à Application Insights avec le nom de l’événement « Transformation terminée » et nous incluent des mesures pour les enregistrements transformées et de durée de transformation avec la méthode telemetryClient.track_event.

Nous ajouter certaines exceptions très basique dans nos portables purement pour illustrer le suivi des exceptions avec Application Insights, également. Notez dans le, à l’exception de bloc dans Figure 6 que si nous intercepter une exception, nous allons appeler la méthode track_exception. Nous passons l’exception comme premier paramètre et les paramètres suivants sont les mêmes types que dans track_event, ce qui vous permet d’enregistrer autant d’informations sur l’événement que possible. Une remarque importante à apporter ici est qu’il n’existe actuellement aucune sémantique de gestion des exceptions pour inline sql. Par conséquent, il peut être préférable d’ignorer magics tel que sql % pour les tâches de production jusqu'à ce que la prise en charge pour la gestion des exceptions sont ajoutée.

Les autres étapes de notre travail ingénierie de données, y compris les opérations d’Acquisition et la persistance, suivent le modèle dans le code de Transformation pour l’envoi des événements de télémétrie avec des valeurs personnalisées à Application Insights.

Configuration Analytique et les alertes

Le code en place pour envoyer la télémétrie, nous activons à la configuration d’Application Insights pour créer des tableaux de bord en direct, examinez les événements et les détails de l’événement en corrélation et configurer des alertes d’information et éventuellement entreprendre une action basée sur le déclencheur d’événement.

Figure 7 illustre plusieurs graphiques que nous avons configurés via le panneau Metrics Explorer et le panneau de métriques (version préliminaire) dans Application Insights et puis épinglé à notre tableau de bord du portail Azure.

Graphiques application Insights sur le tableau de bord Azure

Figure 7 Application Insights graphiques sur le tableau de bord Azure

Prenez note de la droite deux quartile. La partie supérieure droite affiche une grille de durées regroupés par le nom de l’opération que nous a signalé la télémétrie sous lorsque nous avons ajouté les appels de suivi. En bas à droite affiche une mesure du nombre d’enregistrements regroupée par le nom d’événement que nous avons utilisé. Bien sûr, « Conserver les base de données pour SQL » est beaucoup plus faible que les autres, comme il s’agit de l’événement qui a écrit uniquement un sous-ensemble de petit et filtré des données à la base de données SQL Azure. Choisir votre groupements d’opération, les noms d’opération et les noms d’événements est une partie importante de la planification que pays hors tension à ce stade que vous obtenez pour visualiser et créer des rapports sur les données d’une manière qui soit parlante pour comment vous réfléchissez à vos opérations.

Les deux quartiles gauche dans Figure 7 afficher les graphiques qui ont été créés avec les mesures (version préliminaire), qui possède une configuration bien l’interface utilisateur, ainsi que certaines des fonctionnalités supplémentaires pour fractionner les mesures basées sur une autre propriété. Dans l’angle supérieur gauche, vous pouvez voir le nombre d’enregistrements, mais nous avons la fractionner afin que cela est signalé par le nom de l’événement, nous donner un graphique et des données pour le nombre d’enregistrements pour les différents événements. Nous comparons ici le nombre d’enregistrements prises lors de la source de données a été lu pour les nombres d’enregistrements effectuées ultérieurement lors du chargement de données consolidées dans une trame de données. Il s’agit d’une fonctionnalité importante, car le nombre d’enregistrements peut être une mesure très courant dans notre opération parent, mais nous aimerions voir chaque opération ou d’un événement.

Si vous voyez quelque chose dans un des graphiques opérationnels qui appelle pour des recherches, vous pouvez parcourir toutes les données de télémétrie. Figure 8 représente les résultats d’une recherche et un graphique indiquant un nombre d’occurrences dans le temps dans le volet gauche. Dans le volet de droite vous pouvez consulter toutes les informations enregistrées dans l’événement. Rappeler le track_event ([nom], [propriétés], [mesures]) signature. Nous avons mis le détail d’une persistance pour les événements de base de données SQL dans laquelle vous pouvez voir les propriétés personnalisées en haut. Au milieu, intitulé données personnalisées, est où vous trouverez les mesures personnalisées qui ont été envoyés avec la télémétrie. En bas à droite sont tous les éléments connexes dans lequel vous pouvez facilement accéder à tous les événements qui appartiennent à l’opération ou parent. En outre, il est une ligne en bas pour afficher toutes les données de télémétrie disponibles au moment de l’événement. Si vous avez normalisé sur Application Insights pour votre contrôle d’exécution, cela est un excellent outil pour comprendre l’état du système et le contexte opérationnel d’un événement. Avoir un aperçu de ce qui se passe largement peut vous aider à expliquer lorsque le nombre d’enregistrements est désactivés ou la durée est askew.

Détails et recherche de l’événement

Détails et recherche des événements de la figure 8

La dernière chose que nous voulons couvrir pour Application Insights est la possibilité de configurer une alerte. Dans Figure 9 vous pouvez voir la partie de la configuration des alertes. Comme les autres éléments, nous avons étudié les informations personnalisées, que nous vous avons envoyé dans les événements s’affiche ici pour que nous puissions choisissez en tant que critères d’alerte.

Configuration de la figure 9 d’une alerte sur métrique

Comme prévu, l’alerte peut envoyer un message électronique. Toutefois, il peut également appeler un WebHook, ce qui en fait un moyen simple et agréable prendre aucune autre mesure que peut souhaité. Les fonctions Azure est parfaitement adapté à ce programme d’installation et vous permet de créer n’importe quelle action personnalisée que vous le souhaitez. Plus intéressant encore, Application Insights est directement intégrée aux applications de logique. Cela permet une fonctionnalité native intégrer et orchestrent les actions sur un large éventail d’intégrations et Microsoft Azure. Par conséquent, une alerte d’Application Insights peut avertir les utilisateurs lors du démarrage de prendre des mesures correctives et/ou de compensation via l’orchestration de Logic Apps, y compris les actions et l’intégration avec les systèmes en aval et en amont.

Conclusion

Nous voulons que nous mettre en surbrillance les bits de clé d’informations. Application Insights n’est pas une solution Analytique de journal. Il s’intègre à Azure journal Analytique, qui fournit une analyse post ad hoc et rétention du journal à long terme. Application Insights est pour l’analyse et analytique de vos opérations d’exécution, vous donner plus d’informations, les analyses et les alertes que se passe-t-il maintenant. Intégration directe avec une large gamme de développement logiciel platform SDK des services Azure permet un ajustement agréable pour aider à mettre vos travaux Databricks d’Azure. Par conséquent, pour ces travaux d’analyse n’est pas effectué dans un silo, mais plutôt dans le contexte de l’architecture de solution complète.


Joseph Fultz est un architecte de solutions de cloud de Microsoft. Il fonctionne avec les clients Microsoft développement des architectures pour la résolution des problèmes de business lev-eraging Microsoft Azure. Auparavant, Fultz a été chargé pour le développement et l’architecture du programme de partage de voiture de GM (mavendrive.com). CON-intacts sur Twitter : @JosephRFultz ou par courrier électronique à jofultz@microsoft.com.

Ryan Murphy est un architecte de solutions vivant dans Saint Louis, Mo. Il a génération et innovations avec des données bientôt 20 ans, y compris un travail dans les jeu agriculture industries. Actuellement, Murphy permet à certains des plus grandes entreprises les moderniser leur entreprise avec des solutions de données avec Microsoft Azure Cloud. Suivre sur Twitter : @murphrp.