Application Insights on vakiinnuttanut asemansa (Microsoft) kehittäjien keskuudessa. Se on erinomaisen monipuolinen palvelu ratkaisun monitorointiin, diagnosointiin ja vaikka mihin.

Nyt Application Insights:in saa kytkettyä myös (Canvas) Power Appsiin.

Mitä tämä käytännössä tarkoittaa?

Otetaan selvää.

Application Insights -palvelun luominen

Ensimmäiseksi tarvitsemme Azureen Application Insights -palvelun. Se luodaan kuten mikä tahansa Azure palvelu.

New -> Application Insights.

Näyttökuva 2020-2-4 kello 16.46.46

Valitaan mihin tilaukseen (subscription), resurssiryhmään (resource group) ja sijaintiin (region) palvelu luodaan. Ja annetaan sille tietenkin nimi.

Näyttökuva 2020-2-4 kello 16.49.19

Tämän jälkeen palvelu voidaan luoda (Create).

Näyttökuva 2020-2-4 kello 16.48.37

Lyhyen odottelun jälkeen palvelu on valmis käyttöön. Tarvitsemme yhteenveto (overview) -osiosta löytyvän avaimen (Instrumentation Key). Kopioidaan se leikepöydälle.

ai 1

Power Appsin liittäminen Application Insights:in

Avataan monitoroitava Power Apps. Sovelluksen (App) ominaisuuksista löytyy uusi kenttä: Instrumentation Key.

Näyttökuva 2020-2-4 kello 16.53.32

Kopioidaan kenttään Application Insights -palvelusta haettu avain. Tämän jälkeen tallennetaan ja julkaistaan Power Apps.

Valmista.

Mitä tietoja Application Insight:iin nyt kertyy?

Application Insights – Vakiosisältö

Sovelluskartassa (Application map) Power Apps näkyy yhtenä oliona. Tietolähteet (tai muut yhteydet) ja niiden käyttö eivät näy millään tavalla.

ai 2

Tarkemmin katsottuna koko investigate -osio on enemmän tai vähemmän tyhjää täynnä. Suorituskyvystä (sivulatausajoista) sentään löytyy infoa.

ai 3

Käyttö (Usage) -osio sitten onkin jo hyödyllinen.

Käyttäjät (Users) -kohdasta näemme, että sovellusta on käytetty viimeisen 48 tunnin aikana 18 kertaa (sessions). Niistä on kirjattu 68 tapahtumaa (events).

Sovelluksen suorituskyky on ollut tarkastelujaksolla hyvä (näytöt ovat latautuneet keskimäärin alle 0.339 sekunnissa).

ai 4

Käyttäjä (users) tiedolla ei toistaiseksi tee mitään, sillä Application Insights ei kykene erottelemaan käyttäjiä toisistaan. Käyttäjämäärä on siis virheellisesti sama kuin sessioiden lukumäärä.

Virhetilannetta selvittäessä on hyödyllistä nähdä, mitä käyttäjä on sovelluksella session aikana oikeasti tehnyt. Tämän tiedon voi kaivaa esiin Application Insightin sessions -osiosta.

ai 5

User Flows -osiosta näkee, miten käyttäjät etenevät sovelluksessa näytöltä toiselle. Se paljastaa armotta sovelluksen näytöt, joilla käydään todella harvoin.

ai 6

Kaikki tämä on hienoa, mutta tarkkasilmäiset huomasivat että vakiona Application Insights saa (tapahtumamielessä) tietoonsa Power Appsista ainoastaan sovelluksen käynnistymisen, sulkemisen sekä eri näyttöjen avaamiset.

Eihän se riitä mihinkään.

Älä huoli. Paras on vasta tulossa.

Omat lokijäljet (Trace)

Oikeasti haluamme seurata sovelluksesta seuraavankaltaisia asioita

  • Toimintojen suorittamiset
    • tietueen lisääminen/muokkaaminen/poistaminen
    • sähköpostin lähettäminen
    • tilauksen lähettäminen
    • tulostuksen käynnistäminen
    • jne
  • Virheet
    • lomakkeen tallennus on epäonnistunut
    • käynnistetty Flow palautti virheen
    • jne

Toimintojen lokittaminen auttaa meitä ymmärtämään, mitä käyttäjät sovelluksella oikeasti tekevät ja miten paljon.

Virheiden lokittaminen mahdollistaa aktiivisen reagoinnin virhetilanteisssa. Syntynyt loki myös helpottaa varsinaisen vian selvittämisessä.

Miten näitä omia merkintöjä lisätään?

Tallennetaan seuraavaksi Power Appsista Application Insightsiin tieto aina kun matkamittarilukema

  • Lisätään
  • Poistetaan
  • Muokataan
  • Jätetään täyttämättä (palataan takaisin)

Näyttökuva 2020-2-4 kello 20.03.24

Update -painikkeelle lisätään jälki uuden matkamittarilukeman tallennuksesta (Add).

Trace(
  "Odometer",
  TraceSeverity.Information,
  {
    User: varCurUser.Email,
    Screen: App.ActiveScreen.Name,
    OdometerValue: inpOdometerValue.Text,
    Action: "Add"
  }
)

Mikäli kyseessä on aiemmin tehdyn mittarilukeman muokkaaminen, merkitään se eri toimintona (update).

Trace(
  "Odometer",
  TraceSeverity.Information,
  {
    User: varCurUser.Email,
    Screen: App.ActiveScreen.Name,
    OdometerValue: inpOdometerValue.Text,
    Action: "Update"
  }
)

Roskakoria klikattaessa luodaan jälki mitarilukemakirjauksen poistosta (Delete).

Trace(
  "Odometer",
  TraceSeverity.Information,
  {
    User: varCurUser.Email,
    Screen: App.ActiveScreen.Name,
    OdometerValue: TthisItem.Mittarilukema,
    Action: "Delete"
  }
)

Samalla tavalla lokitetaan näytöltä paluu ilman tallennusta (cancel).

Entä ne virheet?

Tutkitaan tallennuksen jälkeen onko kyseisen tietovaraston yhteydessä (connection) virheitä (Errors(datasource)). Mikäli on, kirjoitetaan kaikki tiedot virheestä Application Insightiin.

Patch(
  'Leasing kilometrilukema',
  Defaults('Leasing kilometrilukema'),
  {
   Name: Today(),
   Mittarilukema: Value(inpOdometerValue.Text)
  }
);

ClearCollect(colErrors;Errors('Leasing kilometrilukema'));

If(!IsEmpty(colErrors),
  Trace(
    "SaveError",
    TraceSeverity.Error,
    {
       User: varCurUser.Email,
       Screen: App.ActiveScreen.Name,
       Action: "Update/Insert",
       OdometerValue: inpOdometerValue.Text,
       Error: colErrors.Error,
       Message: colErrors.Message,
       Column: colErrors.Column
    }
  )
)

Miltä nämä omat kirjaukset näyttävät Application Insightissa?

Yksittäistä käyttäjäsessiota tarkasteltassa tältä.

Näyttökuva 2020-2-8 kello 14.43.45

Ja lokitapahtumia selaillessa tältä.

Näyttökuva 2020-2-8 kello 14.47.24

Lokitietojen penkominen

Application Insightiin kyselyeditorin avulla voi tehdä omia kyselyitä lokitietoihin. Alla kysely, joka palauttaa kaikki itse tekemämme jäljet.

Näyttökuva 2020-2-8 kello 8.56.20

Hälytysten (alerts) luominen

Application Insightsin kyselykielen perusteet on hyvä tuntea, sillä niitä hyödyntämällä voi luoda esimerkiksi hälytyksiä.

Alla esimerkki hälytyksestä, joka lähtee aina kun sovellus kirjaa lokitiedon otsikolla ”SaveError”. Eli mikäli tietojen tallennus on epäonnistunut.

traces
| where message == "SaveError"

Näyttökuva 2020-2-8 kello 9.03.52

Power BI raportin tekeminen

Application Insight on vahvasti kehittäjien työkalu. Mitä jos haluaisimme tarjota sen keräämistä tiedoista raportteja myös muiden käyttöön?

Rakennetaan ensin kysely joka palauttaa kaikki raportin tarvitsemat tiedot. Tämän jälkeen tallennetaan kysely Power BI:n ymmärtämässä muodossa (M query)

Näyttökuva 2020-2-8 kello 9.09.15

Seuraavaksi luodaan Power BI:ssä tyhjä kysely ja kopioidaan ladattu M kyselyn siihen.

Näin meillä on Power BI:ssä valmiina tietojoukko, jonka pohjalta voimme lähteä rakentamaan raportteja.

Uskomattoman helppoa.

Entä jos verkkoyhteys on huono?

Application Insight on pilvipalvelu. Mitä tapahtuu jos Power Appsilla ei ole käytössään verkkoa kun se tekee lokimerkinnän?

Power Apps puskuroi lokimerkinnät ja lähettää ne Application Insightsiin kun verkko on taas käytettävissä!

Yhteenveto

Application Insights palvelun kustannus riippuu pääasiassa tallennetun lokitiedon määrästä. Oletuksena tiedot ovat tallessa 90 päivää, mutta aikaa voi laajentaa aina 720 päivään asti.

90 päivän tallennuksella puhutaan yleensä hyvin maltillisesta (euroje tai kymppien)  kuukausi kustannuksesta.

Minä kytkisin kaikki tuotantokäytössä olevat Power Appsit kiinni Application Insightsiin. Aina.