Julkaistu 8.5.2024

Paikkatietopalvelut seurantaan: Grafana ja GeoHealthCheck

Kaikki karttapalvelut, jotka käyttävät tai jakelevat rajapintoja, eivät välttämättä ilmoita, jos rajapinnat eivät toimi. Ongelmatilanteista voi kuulla monesti vasta päivien tai viikkojen viiveellä palvelua käyttäviltä asiakkailta, ja ongelmien syyn selvittämiseksi joutuu kahlaamaan virheraportteja ja lokeja läpi käsityönä. Jos rajapintoja on useita kymmeniä tai jopa satoja, ongelmat kasaantuvat. Ideaalitilanteessa rajapinnan omistaja tietää ongelmista ennen käyttäjiä. Tässä artikkelissa esittelemme kaksi ratkaisua, joilla paikkatietorajapintoja ylläpitävien ihmisten työ helpottuu.

Grafana – lähes kaikkea lähes kaikille

Grafana on ekosysteemi, jonka perusperiaate on pohjimmiltaan yksinkertainen: se tekee tietokantaan kyselyitä, joista se piirtää kaavioita. Käyttäjä voi hyödyntää joko Grafanan valmiita kyselyitä tai kirjoittaa koodimuodossa omiaan. Grafanan antamia tietoja ja visualisointeja voi katsella nettiselaimella. Visualisointitavoista löytyvät mm. erilaiset viiva-, pylväs- ja ympyrädiagrammit. 

Ekosysteemin pääasiallisella Grafana-ohjelmalla visualisoidaan tietoa, mutta lisäksi Grafanaan kuuluu muita osia, kuten tietokantana Prometheus, jossa tietoja säilytetään ja josta Grafana tekee kyselyitä. Prometheus-tietokannassa voidaan määritellä, kuinka pitkältä ajalta dataa säilytetään. Myös muita tietokantoja voidaan käyttää. Grafanasta löytyy lisäksi kaikenlaista back-endiä monenlaiseen tarpeeseen, myös paikkatietopalveluiden ulkopuolelle.

Grafanan ja Prometheuksen pystyttämiseen löytyy näppärät konttiratkaisut, joiden pystyttäminen on helppoa asiaan perehtyneelle. Mutta kuten aina, mitä monimutkaisempaa asiaa halutaan tehdä, sitä enemmän aikaa saa kulumaan. Grafanalla voi kuitenkin seurata lähes mitä vain, ja monipuolisempien työkalujen (kuten Elastic Stack) käyttö ja pystyttäminen on vielä monimutkaisempaa.

Konttien tarkkailua ja säästöä palvelimissa

Miksi sitten Grafanan pitäisi kiinnostaa ketään? Jos käytössä on esimerkiksi useita palvelimia ja halutaan tietää, tarvitaanko jokaista niistä, Grafanan avulla voi katsoa niiden kuormitusta ja onko osa palvelimista ilman mitään käyttöä. Jo muutamankin turhan palvelimen pois ottaminen tai kapasiteetin vähentäminen voi tuottaa suuren säästön.

Ohjelmiston avulla voidaan myös tarkkailla palvelun saatavuutta: jos vaikka palvelimelta ei saada dataa minuuttiin, Grafana voi hälyttää asiasta ylläpitäjän määrittämään sähköpostiin, porttiin tai web-osoitteeseen. Näin voidaan reagoida nopeasti, mikäli jokin palvelin on kumossa tai muuten jumissa. Käyttäjä voi tietenkin määrittää myös muita raja-arvojen ylityksiä ja alituksia, joista hälytys lähtee.

Olemme käyttäneet Grafanaa myös asiakasprojekteissamme. Äskettäin yhdellä asiakkaallamme oli palvelimella kontteja, joista he halusivat ylläpitoon liittyviä arvoja. Tähän tarkoitukseen käytimme Grafana-Prometheus-C-advisor-yhdistelmää. Pystytimme palvelimelle ensin C-advisor-ohjelman, joka tarkkaili kontteja ja julkaisi niiden tiedot web-serverin tapaan haluttuun porttiin. Tätä porttia Prometheus kävi lukemassa tasaisin väliajoin, tässä tapauksessa kerran 15 sekuntiin. Prometheuksen kannasta Grafana luki datan ja piirsi kyselyiden tuloksista käyriä. Lopulta Grafana näytti tulosten perusteella monta kymmentä parametria konttikohtaisesti – kaikkea muistinkulutuksesta prosessointiaikaan. 

grafana

Miksi juuri Grafana?

Grafana ei tietenkään ole ainoa ohjelma, jolla tällaisia prosesseja voi tehdä. C-advisorin lukemiseen voi periaatteessa käyttää esimerkiksi Microsoftin PowerBI:tä. C-advisorinkin antama data on lopulta lähinnä nimiä ja numeroita, kuten “C-usage 2,3”, jossa numeroarvo vaihtelee eri aikaväleillä.

PowerBI:hin ja muihin ohjelmistoihin nähden Grafanan etuna on se, että ohjelmisto on avointa lähdekoodia (AGPLv3-lisenssillä) eikä siitä tarvitse maksaa pakollisia kuukausimaksuja. Sen saa pyörimään omaan instanssiin ja asennus käy varsin helposti. Ohjelmistosta löytyy myös valmiiksi hostattu, maksullinen versio, ja siihen voi hankkia käytön tukea.

Merkittävä etu on myös se, että jos tarkkailtavat kontit tai muut kohteet ovat suljetussa verkossa, jonne ei pääse ulkopuolelta, voi Grafanan laittaa samaan instanssiin. Näin asiat pysyvät paremmin turvassa, eikä esimerkiksi palomuuriin tarvitse tehdä muutoksia datan siirtoa varten. 

Vaikka me käytämme Grafanaa paikkatietoon liittyvissä prosesseissa, ohjelmistoon voi kytkeä lähes mitä vain, mikä antaa jonkinlaisia numeroita ulos. Grafanan demosivulla voi tutkia ohjelman toimintoja, kuten sisäänkirjautumisten seuraamista, maksujen määrää ja muita muuttujia eri aikavälillä.

Grafanan demo löytyy netistä https://play.grafana.org/

GeoHealthCheck – yksinkertaista rajapintojen seuraamista

GeoHealthCheck on selainpohjainen ohjelmisto, joka tarkkailee paikkatiedon jakeluun tarkoitettuja rajapintapalveluita. Kuten Grafana, GeoHealthCheck seuraa palveluiden saatavuutta, piirtää niistä diagrammeja ja katsoo kuinka nopeasti ne vastaavat erilaisiin kyselyihin. Ohjelmisto on huomattavan yksinkertainen ottaa käyttöön, ja karkeasti voisi sanoa sen tekevän yhden asian ja näyttävän sen yhdellä tapaa.

Käyttäjä voi määritellä, kuinka tarkasti ohjelmisto tutkii rajapintaa. Paikkatietorajapinnoilla on omat logiikkansa, ja GeoHealthCheckiä voidaan käyttää esimerkiksi tarkistamaan WFS-rajapinnasta GetCapabilities-dokumentin ja sieltä muutaman tason tai kohteen. Rajapintaan tehdyt kyselyt näkyvät sivustolla “Probes”-otsikon alla, ja history-kohta näyttää viimeisimmät virheet. Sivulta saa myös täyden raportin kyselyistä.

grafana

Serveri ja vähän viitseliäisyyttä

Siinä missä Grafana edellyttää paljon teknistä tietoa seurattavista palveluista (mikä portti on auki serveriin ym.), tarvitsee GeoHealthCheck vain halutun rajapintapalvelun osoitteen. 

Ohjelmiston käyttöönotto vaatii serverin ja viitseliäisyyttä – ja jälkimmäistäkin aika vähän. Käyttöympäirstönä voi käyttää useita käyttöjärjestelmiä, sillä se on kevyt eikä vaadi paljoa resursseja.

GeoHealthCheck on luontevinta pystyttää jollekin palvelimelle käyttäen konttiasennusta, joka on tehty käyttäjän kannalta melko suoraviivaiseksi ja voi tapahtua nopeastikin. Nohevimmat käyttäjät voivat ajaa ohjelmistoa kontissa omalta koneeltaan. Tämän jälkeen seurattavat rajapinnat voi joko näppäillä käsin, tai jos rajapintoja on paljon, tuoda JSON:ina.

Ohjelmistossa on myös mahdollisuus luoda eri käyttäjiä ja antaa näille oikeuksia palveluiden tilan seuraamiseksi. Näin palveluiden seurantaan voi käyttää yhtä GeoHealthCheck-instanssia, jota seuraa kokonainen tiimi. (Toinen vaihtoehto olisi pystyttää jokaiselle käyttäjälle oma ohjelmisto.) Käyttäjähallinta mahdollistaa palveluiden näkymisen rajaamisen niin, että osa tiedoista voidaan näyttää julkisesti, osa vain kirjautuneille, tai jopa eri käyttäjille eri palveluita.

Sivuhuomiona mainittakoon, että rekisteröinnin salliminen vaatii hieman säätöä, sillä silloin käytössä pitää olla sähköpostia lähettävä kone, jotta rekisteröinnin vahvistussähköpostit voidaan lähettää. Toisaalta tällaisen koneen käyttäminen on järkevää muutenkin, sillä silloin GeoHealthCheck voi lähettää hälytysviestit suoraan sähköpostiin. Muussa tapauksessa hälytykset voidaan asettaa tulemaan esimerkiksi halutulle nettisivulle.

Kuten Grafana, myös GeoHealthCheck on avointa lähdekoodia ja siihen on mahdollista tehdä omia lisäosia. Ohjelmistoa kehitetään jatkuvasti, ja vaikka se toimii jo nyt mainiosti, se ei ole vielä aivan täydellinen. Esimerkiksi jos käyttäjä haluaa vaihtaa salasanan tilanteessa, jossa ohjelmalla ei ole sähköpostia käyttävää konetta käytössä, joutuu kikkailemaan tarpeettoman vaikeasti JSON-operaatioiden kanssa. Tämän tai vastaavien asioiden korjaaminen ja pienkehittäminen ovat asioita, joita esimerkiksi me Gispolla teemme.

grafana

Helpot hyödyt

Ohjelmiston hyödyt ovat selkeät: rajapintojen statuksen näkee helposti ja jos ongelmia ilmenee, niistä saa hälytyksen haluamallaan tavalla. Raportit saa ulos CSV:nä, JSON:ina tai PNG-kuvana. Olemassaolevien rajapintojen testaaminen ja niiden saatavuuden tarkkailu on helppoa. Ohjelmisto mahdollistaa myös live-testaamisen, mikä auttaa kun tekee säätöjä rajapintaan, päivittää GeoServeriä tai on julkaisemassa uutta rajapintaa. 

Hälytysten ansiosta ongelmiin voi reagoida nopeammin, ja ongelmien selvittämisessä manuaalisen työn määrä vähenee (esimerkiksiGetCapabilities-raportista ei tarvitse itse kaivaa virheitä, vaan ne näkyvät nätisti eroteltuina selainkäyttöliittymässä). Mitä enemmän rajapintoja on jaossa, sitä enemmän hyötyä ohjelmasta tietenkin on. 

GeoHealthCheckin etuna on sen yksinkertaisuus ja havainnollisuus, sekä helposti ymmärrettävä käyttöliittymä. Jos halutaan seurata niitä asioita, joita GeoHealthCheck tarjoaa, ei asiasta kannata tehdä suotta monimutkaista ja virittää Grafanaa tekemään samaa. GeoHealthCheck on suunniteltu nimenomaan paikkatietokäyttöön, mutta sillä voi tarkkailla myös ihan tavallisiakin nettisivuja.

GeoHealthCheckin demo löytyy täältä: https://demo.geohealthcheck.org/

Profiilikuva

Juho Rekilä

Juho on paikkatiedon, data-analyysin ja viestinnän parissa työskentelevä folkloristiikan FM. Juhoa kiinnostaa lähes kaikki paikkatietoon liittyvä, mutta hän uppoutuu mieluiten karttojen tyylittelyyn ja asiakkaiden lähettämien kysymysten ratkomiseen. Paikkatiedon lisäksi työkokemusta löytyy graafisen suunnittelun ja äänisuunnittelun saralta.