Grafanan hälytykset chattiin — Ohjeet Telegram-botin tekoon

alatalo
4 min readFeb 5, 2018

Grafana osaa datan visualisoimisen lisäksi lähettää hälytyksiä, kun määrittelyt parametrit täyttyvät.

Tällaisia hälytyksiä voisi olla esimerkiksi saunan lämpötilan nouseminen yli 70°C tai sikarihumidorin suhteellisen ilmankosteuden tippuminen alle 65%. Näissä tapauksissa olisi kiva saada ilmoitus taskuun, että osaisi toimia nopealla sykkeellä.

Grafanaan on helppo lisätä sähköpostihälytyksiä, mutta chatti/messenger-pohjaiset ilmoitukset ovat mielestäni kätevämpiä reaaliaikaisuutensa vuoksi. Olen myös jotenkin allergisoitunut sähköposteille ja suosin pikaviestityyppisiin viesteihin pikaviestimiä. Siis chatteja.

Humidoria ilmankosteuden hälytysraja asetettu 65%.

Telegram

Telegram on erinomainen viestipalvelu. Alla olevaa voi soveltaa myös muihin palveluihin kuten Slackiin tai HipChattiin, sillä logiikka on sama. API token ja webhookit ovat käytössä kaikissa.

Aiemmassa artikkelissani Tee se itse: Omakotitalon lämmityksen mittaaminen ja visualisointi annoin vinkkejä oman Raspberry Pi -pohjaisen datankerääjän rakentamiseen. Jutussa asennettiin InfluxDB ja Grafana, sekä kerättiin ja visualisoitiin talon lämmitysjärjestelmän tarjoamaa dataa.

Tässä artikkelissa syvennytään Grafanan hälytyksiin ja Telegram-bottiin.

Oma Telegram-botti!

Jotta Grafana voisi lähettää hälytystietoa Telegramiin, täytyy sille luoda oma botti ja viestikanava.

@BotFather

Telegramin botit luodaan.. missäpä muualla kuin Telegramissa. Tarkoitusta varten on luotu @BotFather -niminen botti, jonka kanssa keskustelemalla voit luoda ja muokata omia bottejasi.

Aloita keskustelu BotFatherin kanssa. Luo uusi botti kirjoittamalla:

/newbot

Seuraavaksi BotFather kysyy bottisi nimeä. Nimen tulee olla uniikki, joten GrafanaBot ei kelpaa. Keksi botillesi napakka nimi ja lähetä se vastauksena takaisin BotFatherille. Nimen tulee päättyä sanaan “bot”.

SeppoTaalasmaaBot

BotFather vastaa viestillä, jossa on bottisi HTTP API token. Tätä tokenia tarvitaan Grafanan konfigurointiin, joten kopioi se talteen.

<@BotFather> Use this token to access the HTTP API: 123456789:aaaBBBcccDDDeeeFFFgggHHHiiiJJJkkkLL

Seuraavaksi suunta Grafanaan ja sen asetuksiin. Valitse Grafanasta Alerting, Notification channels ja New channel.

Anna kanavalle nimi ja valitse tyypiksi Telegram.

Jätä Include image valitsematta. Liitekuvien lähettäminen vaatii lisäsäätöä, johon tässä artikkelissa ei pureuduta.

Kopioi Telegram bottisi HTTP API token BOT API token -kenttään.

Mikä ihmeen Chat ID?

Ainoastaan yksi kenttä Chat ID jää täyttämättä ja se vaatiikin hieman tunkkausta.

Aloita Telegramissa keskustelu juuri luomasi botin kanssa (esimerkissä SeppoTaalasmaaBot ).

Lähetä botillesi viesti, jolloin chat-ikkuna avautuu. Tämä on tärkeää: sinun täytyy oikeasti lähettää botillesi jotakin. Sano vaikka moro. Bottisi ei vastaa, mutta tämä viesti avaa tarvittavan chat-yhteyden jonka jälkeen voit jatkaa eteenpäin.

Jätä chatti Telegramiin auki.

Muodosta seuraavaksi url-osoite bottisi HTTP API tokenia käyttäen:

https://api.telegram.org/bot<token>/getUpdates

Aiemman esimerkin mukaan osoitteeksi tulee siis:

https://api.telegram.org/bot123456789:aaaBBBcccDDDeeeFFFgggHHHiiiJJJkkkLL/getUpdates

Vieraile uudella selainikkunalla tässä osoitteessa. Saat vastaukseksi hieman kryptisen näköisen JSONin, josta sinun täytyy etsiä ja kopioida talteen Grafanan tarvitsema chat id. Tämä id on sen keskustelun tunniste, jonka hetki sitten aloitit uuden bottisi kanssa ja johon hälytykset jatkossa tulevat.

Esimerkki chat id:stä lihavoituna alla olevassa esimerkissä. Kopioi numero talteen (esimerkissä 987654321 ).

{"ok":true,"result":[{"update_id":123456789,
"message":{"message_id":1,"from":{"id":987654321,"is_bot":false,"first_name":"Ville",
"last_name":"Alatalo"},"chat":{"id":987654321,"first_name":"Ville",
"last_name":"Alatalo","type":"private"}, ...

Lisää Grafanan New Channel asetuksiin kopioimasi Chat ID.

Paina Send Test ja tallenna muutokset.

Ensimmäinen testihälytys botilta!

Onneksi olkoon! Telegram-hälytyskanavasi on nyt auki!

Mitä seuraavaksi?

  • Viritä erilaisia hälytyksiä mittausdatallesi ja valitse hälytyskanavaksi juuri luomasi Telegram-botti.
  • Kokeile Slack-hälytyksiä.
  • Testaa geneeristä webhook-hälytystä. Keksitkö mihin sen voisi hookata kiinni?
  • Lähetä liitekuvia hälytysten matkassa.

Yksityiskohtaiset ohjeet Telegram-botteihin löytyvät Telegramin Bot API-dokumentaatiosta.

Saman sarjan juttuja

--

--

alatalo

Software Development Generalist - Hybrid Worker - Human Being