Přeskočit na hlavní obsah
Sloučeno do jednoho dokumentu: 9 stránek. Tip: v tiskovém dialogu zapněte volbu Grafika na pozadí, aby si poznámky a upozornění zachovaly podbarvení.
Všechny příručky k tisku
Dronetag
Developers

Posílání dat do vašeho API

Dokument
Developers — Posílání dat do vašeho API
Kapitoly
9
Zdroj
help.dronetag.cz/cs/print/developers/data-push
Dronetag s.r.o. · Rozhodující je vždy aktuální online verze tohoto dokumentu.
Tento dokument je překlad. Liší-li se od anglického originálu na adrese help.dronetag.cz/print/developers/data-push, platí anglické znění.

Začínáme s Data Push

Telemetrická data ze zařízení Dronetag můžete získávat i tak, že spojení navážou naše servery a data posílají (push) na ty vaše. Tato spojení spravujete v našem portálu integrací, kde si vše nakonfigurujete sami. Portál vám dává plnou kontrolu nad nastavením integrace — můžete zvolit protokol spojení, například HTTP webhooky, MQTT, TCP nebo UDP, snadno přepínat mezi testovacím a produkčním prostředím a upravovat další nastavení podle potřeby.

Jak získat přístup k portálu integrací​

K nastavení integrace Data Push potřebujete přístup k portálu. Ten mají uživatelé s předplatným Pro a obchodní partneři zapojení do našich společných projektů. Pokud o přístup máte zájem, ozvěte se nám.

Portál najdete na adrese https://integrations.dronetag.app.

V přehledném webovém rozhraní integraci nastavíte během několika kroků.

Co lze nastavit?​

Náš integrační systém je navržený tak, aby byl co nejflexibilnější. U každé integrace si můžete sami, bez naší pomoci, upravit řadu parametrů:

  • Protokol spojení: HTTP webhooky, MQTT, TCP nebo UDP.
  • Cílová adresa: Data můžete směrovat na produkční nebo testovací (staging) endpoint svého API — je to na vás.
  • Výstupní formát: Kromě našeho standardního formátu JSON podporujeme i různé systémy UTM. Doporučené kombinace najdete na stránce Protokoly a formáty.
  • Omezení provozu (throttling): Abyste nepřetížili své servery, můžete za cenu určitého zpoždění omezit počet požadavků.
  • Ověřování: Na výběr je řada způsobů ověřování, mimo jiné HTTP Basic Authentication, vlastní HTTP hlavičky, OAuth 2.0 a další.
  • … a další

Nastavení prvního cíle distribuce​

Abyste mohli začít přenášet data, musíte vytvořit cíl distribuce (distribution target). Ten představuje službu, do které chcete data posílat. Cílů můžete vytvořit několik, jejich počet je ale omezený. Jakmile cíl vytvoříte, náš systém do něj bude data automaticky posílat, dokud ho nedeaktivujete nebo neodstraníte.

  1. Přihlaste se do portálu integrací svým účtem Dronetag, nebo si vytvořte nový.
  2. Na hlavní stránce uvidíte všechny distribuce, které jste vytvořili.
  3. Vytvořte nový cíl distribuce tlačítkem Add New.
  4. Vyplňte formulář s konfigurací cíle. S nastavením vám pomohou další sekce na této stránce.
  5. Cíl uložte a počkejte několik minut, než se změny projeví.
  6. Chyby komunikace nebo konfigurace zkontrolujete v serverových lozích. Najděte novou distribuci na hlavní stránce a klikněte na View & Edit.

Pozastavení nebo ukončení distribuce​

Chcete-li dočasně přestat posílat data do svých služeb, distribuci pozastavte tím, že ji označíte jako neaktivní. Pokud distribuci už nepotřebujete, můžete ji trvale smazat.


Co dál?​

Protokoly a formáty

Každá distribuce Data Push kombinuje dvě nezávislé volby:

  • Protokol spojení - jak Dronetag posílá data do vašeho systému.
  • Výstupní formát - jak je zakódovaná každá telemetrická zpráva.

Většina formátů je technicky nezávislá na přenosu, ne každá kombinace má ale v praxi smysl. Protokol vyberte podle toho, jak váš systém data přijímá, a formát podle toho, co umí váš cílový systém zpracovat.

Produkt / název integraceDoporučený protokolDoporučený výstupní formátObvyklé nastavení
Vlastní HTTP API nebo webhookHTTP WebhooksDUMP JSON, DUMP JSON Typed nebo partnerský socketový formátPoužijte cílovou URL s HTTPS, podle potřeby HTTP Basic Authentication nebo OAuth 2.0 a vlastní hlavičky pro klíče API nebo ID tenantů.
Vlastní telemetrický kanál přes MQTTMQTT ClientDUMP JSON, DUMP JSON Typed nebo partnerský socketový formátPokud je to možné, použijte MQTT přes TLS, ověřování jménem a heslem, QoS podle požadavků vašeho brokeru a {msgtype} v tématu (topic), pokud chcete zprávy směrovat podle typu.
Vlastní kanál přes TCP socketTCP SocketDUMP JSON, DUMP JSON Typed nebo partnerský socketový formátPři přenosu přes veřejné sítě použijte TLS nebo mTLS. Vložená metadata zapněte, jen pokud s obálkou váš přijímač počítá.
Vlastní kanál přes UDP socketUDP SocketDUMP JSON nebo DUMP JSON Typed nebo partnerský socketový formátPoužijte jen tehdy, když je ztráta paketů přijatelná. Pokud to přijímač podporuje a síťová cesta není důvěryhodná, přidejte šifrování obsahu AES.
TAK Server / kanál CoTTCP SocketCursor on Target XMLPokud nasazení TAK vyžaduje klientské certifikáty, použijte TCP s mTLS.
Kanál SAPIENTTCP SocketSAPIENTNastavte režim protokolu TCP na sapient, podle potřeby nastavte interval stavových zpráv (heartbeat) a pokud přijímající uzel vyžaduje zabezpečení certifikáty, použijte TLS/mTLS.

Matice kompatibility​

Výstupní formátHTTP WebhooksMQTT ClientTCP SocketUDP SocketPoznámky
DUMP JSONDoporučenoDoporučenoPodporovánoPodporovánoNejlepší výchozí volba pro vlastní integrace.
DUMP JSON TypedDoporučenoDoporučenoPodporovánoPodporovánoStejné jako DUMP JSON, navíc s polem $type v obsahu zprávy.
Cursor on Target XMLMožnéNepodporovánoDoporučenoMožnéPoužívají ho systémy kompatibilní s TAK.
SAPIENTNepodporovánoNepodporovánoDoporučenoNepodporovánoVyžaduje režim protokolu TCP SAPIENT.

Názvy produktů​

Některé integrace jsou známější pod názvem produktu nebo ekosystému než pod svým protokolem a formátem:

Protokol + formátProdukt / název integrace
HTTP Webhooks + DUMP JSONVlastní webhook / vlastní integrace API
MQTT + DUMP JSONVlastní integrace MQTT
TCP nebo UDP + Cursor on Target XMLIntegrace TAK Server
TCP + SAPIENTIntegrace SAPIENT

Názvy v portálu a možnosti zabezpečení​

Portál integrací používá tyto názvy typů spojení:

Typ spojení v portáluKompatibilní způsoby ověřováníZabezpečení přenosu a obsahu
HTTP WebhooksHTTP Basic Authentication, OAuth 2.0Cílová URL s HTTPS
MQTT ClientHTTP Basic AuthenticationMQTT přes TLS, šifrování dat AES
TCP SocketŽádnéTLS/mTLS, šifrování dat AES
UDP SocketŽádnéŠifrování dat AES

Pokud váš přijímač ověřování nevyžaduje, můžete ho nechat prázdné. V této tabulce jsou HTTPS, MQTT over TLS a TLS/mTLS možnosti zabezpečení přenosu a AES data encryption je šifrování obsahu zprávy, nikoli způsob přihlášení. Popisek HTTP Basic Authentication se v portálu používá i pro jméno a heslo k MQTT.

Nastavení mTLS portál zobrazuje jen u distribucí typu TCP Socket. Portál přijímá buď samostatné soubory PEM, nebo balíčky PKCS#12 .p12:

  • PEM: certifikát CA, klientský certifikát, soukromý klíč klienta a volitelné heslo ke klíči klienta.
  • PKCS#12: truststore .p12 s jedním nebo více certifikáty pro ověření serveru a klientský .p12 s klientským certifikátem a odpovídajícím soukromým klíčem. Každý balíček může mít vlastní volitelné heslo. Portál oba balíčky před použitím v integraci převede do formátu PEM.
  • Verify host ověřuje název hostitele serveru proti certifikátu TLS.

Zvolený Data Source (zdroj dat) určuje, které zprávy smí cíl distribuce dostávat, ještě před převodem protokolu nebo formátu. Které typy zpráv umí jednotlivé výstupní formáty odeslat, popisuje stránka Pokrytí zpráv.

Portál nabízí také nastavení doručování:

  • Keep reliable určuje chování, když zprávy nelze doručit.
  • Throttle messages omezuje, jak často vám Dronetag data posílá.
  • Allow mixed content povoluje více typů zpráv v jednom požadavku, pokud to zvolený výstupní formát podporuje.
  • Send empty payloads posílá v intervalu omezení prázdný požadavek i tehdy, když nejsou k dispozici žádná nová telemetrická data. Vyžaduje zapnuté omezování (throttling).

Obvyklé sady nastavení​

HTTP Webhooks API​

Použijte pro vlastní API, webhooky a většinu integrací s API partnerů.

Obvyklé nastavení:

  • Cílová URL začíná https://.
  • Ověřování je HTTP Basic Authentication, OAuth 2.0, způsob specifický pro partnera nebo vlastní HTTP hlavičky.
  • Další hlavičky mohou nést klíče API, identifikátory tenantů nebo volbu prostředí.

MQTT Client​

Použijte, když vaše infrastruktura očekává telemetrii v tématech (topics) MQTT.

Obvyklé nastavení:

  • Cílová URI a port ukazují na váš broker MQTT.
  • Přenos je tcp nebo websockets podle vašeho brokeru.
  • Pokud to broker vyžaduje, je nastavené ověřování jménem a heslem.
  • Téma může obsahovat {msgtype} pro směrování DUMP JSON.
  • QoS je obvykle 0 nebo 1 podle toho, zda je důležitější nízká latence, nebo potvrzení doručení.

TAK / CoT​

Použijte pro TAK Server, ATAK, WinTAK, iTAK nebo middleware kompatibilní s TAK.

Obvyklé nastavení:

  • Výstupní formát je Cursor on Target XML.
  • Protokol je obvykle TCP nebo UDP socket.
  • TCP je vhodnější, když potřebujete stav spojení a spolehlivější doručování.
  • UDP je běžné u jednoduchých kanálů CoT, kde občasná ztráta paketu nevadí.
  • Pokud váš TAK Server vyžaduje klientské certifikáty, lze u TCP zapnout mTLS.

SAPIENT​

Použijte jen pro systémy, které SAPIENT výslovně implementují.

Obvyklé nastavení:

  • Protokol je TCP Socket.
  • Výstupní formát je SAPIENT.
  • Režim protokolu TCP je sapient.
  • Pokud to přijímající uzel vyžaduje, je nastavený interval stavových zpráv (heartbeat).
  • Pokud to nasazení SAPIENT vyžaduje, je zapnuté TLS nebo mTLS.

Poznámky k protokolům​

HTTP Webhooks​

HTTP je nejlepší volba, pokud váš systém poskytuje endpoint API. Dronetag posílá na vaši cílovou URL požadavky POST. URL musí začínat http:// nebo https://.

Nešifrované HTTP používejte jen při vývoji a testování. Pro produkční prostředí důrazně doporučujeme HTTPS.

HTTP může přenášet metadata v hlavičkách, například typ obsahu, typ zprávy, client ID integrace a viditelnost veřejných dat. Pro distribuci můžete nastavit i další vlastní HTTP hlavičky.

HTTP používejte pro formáty API specifické pro partnery, například Altitude Angel, ASTRA, Highlander a podobné integrace.

MQTT Client​

MQTT je nejlepší volba, pokud váš systém už provozuje broker MQTT a očekává telemetrii v tématech. Dronetag se připojí jako klient MQTT a převedené zprávy publikuje do nastaveného tématu.

MQTT se dobře hodí pro obsah ve formátu JSON. Pokud používáte DUMP JSON, můžete do názvu tématu vložit {msgtype} a směrovat tak telemetrii UA, telemetrii operátora, systémovou telemetrii a změny operací do samostatných témat.

TCP Socket​

TCP se hodí, když cílový systém očekává trvalé socketové spojení. Je to také doporučený protokol pro SAPIENT a jeden z doporučených protokolů pro TAK Server.

Pro SAPIENT nastavte režim protokolu TCP na sapient. Tím se zapne registrační postup SAPIENT a binární zprávy s délkovou předponou.

TCP může také používat TLS nebo vzájemné TLS (mutual TLS), pokud váš cíl vyžaduje zabezpečení certifikáty.

UDP Socket​

UDP se hodí pro jednoduché doručování bez potvrzení (fire-and-forget), zejména při integraci se systémy, které už kanály UDP přijímají, například některá nasazení TAK.

Protože UDP nepotvrzuje doručení, použijte TCP nebo HTTP, pokud vaše integrace vyžaduje spolehlivější doručování.

Metadata​

HTTP posílá metadata v hlavičkách požadavku. MQTT, TCP a UDP mohou u formátů, kde je to užitečné, metadata volitelně vkládat do obsahu zprávy.

Vložená metadata obalí obsah zprávy objektem s poli data a metadata. Používejte je jen tehdy, když je váš přijímač napsaný tak, aby tuto obálku zpracoval.

Když si nejste jisti​

U vlastních integrací začněte takto:

  1. HTTP Webhooks + DUMP JSON, pokud vaše služba může poskytnout endpoint HTTPS.
  2. MQTT + DUMP JSON, pokud vaše infrastruktura už MQTT používá.
  3. TCP + Cursor on Target XML, pokud se napojujete na TAK Server.
  4. TCP + SAPIENT, pokud váš cílový systém SAPIENT výslovně vyžaduje.

Zdroje dat

Při konfiguraci distribuce v našem portálu integrací narazíte na pole „data source“ (zdroj dat). Tento článek podrobně vysvětluje, co zdroje dat jsou a jak je ve své integraci využít.

Zdroj dat určuje, které zprávy připadají pro cíl distribuce v úvahu. Zvolený výstupní formát může okruh skutečně odesílaných typů zpráv dále zúžit. Podrobnosti najdete na stránce Pokrytí zpráv.

My Account​

Požadavky: žádné
Sdílená data: jen data spojená s účtem vlastníka distribuce

Tento zdroj dat má k dispozici každý, kdo používá portál integrací. Je určený hlavně k počátečnímu testování a vyzkoušení. Když ho zvolíte, získáte přístup jen k datům spojeným se stejným účtem, který distribuci vytvořil (vlastník). Viditelná jsou jen zařízení registrovaná k tomuto účtu, takže data ostatních uživatelů zůstávají soukromá a oddělená.

Device Group​

Požadavky: existující skupina zařízení vázaná na objednávku zařízení Dronetag
Sdílená data: všechna data bez ohledu na nastavení soukromí nebo stav registrace

Device Group (skupina zařízení) je určená zákazníkům, kteří s Dronetagem uzavřeli partnerství a zakoupili skupinu zařízení. Tato zařízení jsou zařazena do předem definované statické skupiny, kterou lze zvolit jako zdroj dat. Členství ve skupině je pevné a lze ho změnit jen na požádání. Běžní uživatelé Dronetagu skupiny zařízení nevidí a nemají k nim přístup.

Partner Integration​

Požadavky: registrace partnerství s Dronetagem
Sdílená data: podle souhlasu uživatelů (opt-in), všechna data bez ohledu na nastavení soukromí

Partnerské integrace (Partner Integration) uživatelé vidí a mají k nim přístup. Plně sami rozhodují, které integrace smějí k jejich datům přistupovat.

Přístup ke svým datům mohou uživatelé každé integraci povolit nebo zakázat v Dronetag App v sekci „Integrations“. Data tak mohou sdílet jen s vybranými integracemi a před ostatními je ponechat soukromá.

Partnerskou integraci lze nastavit tak, aby se uživatele při zapnutí integrace v Dronetag App zeptala na libovolný token, identifikátor nebo autorizační hodnotu. Uživatelé tak mohou zadat přihlašovací údaje nebo identifikátory, které vyžaduje služba třetí strany, a ta pak spolehlivě přiřadí uživatele Dronetagu k vlastním uživatelským účtům nebo autorizačním systémům.

Partnerské integrace zvyšují transparentnost a informovanost uživatelů: uživatelé mohou zůstat v soukromém režimu, a přesto integrace třetích stran využívat. Pro většinu integrací je to doporučený způsob.

Každá partnerská integrace vyžaduje následující údaje, které se pak zobrazují v sekci „Integrations“ v Dronetag App:

  • Plný/zobrazovaný název firmy nebo aplikace
  • URL loga (volitelné) – vodorovné logo pro lepší rozpoznání značky
  • Popis (volitelné) – krátký text o vaší firmě, aplikaci nebo platformě
  • URL webu – odkaz na váš web
  • Účet správce – účet Dronetag, který bude moci tuto partnerskou integraci vybrat v portálu integrací jako zdroj dat
  • Konfigurace Client ID (volitelné) – určuje, zda chcete, aby uživatelé před zapnutím integrace zadali identifikaci

All Public Data (zastaralé)​

Dřívější požadavky: žádné
Sdílená data: všechna veřejná data všech uživatelů Dronetagu (ale ne soukromá data)

Tento zdroj dat dříve umožňoval sdílet všechna veřejná data dostupná v Dronetag App s jakoukoli třetí stranou přes portál integrací.

Kvůli lepší uživatelské zkušenosti a ochraně soukromí byla tato možnost zrušena a už není k dispozici.

HTTP Webhooks

Nejběžnější typ distribuce posílá data protokolem HTTP.
Pro každou telemetrickou zprávu se vytvoří nový HTTP požadavek a odešle se na HTTP server vaší služby.

Specifická konfigurace​

Ve specifické konfiguraci lze zatím nastavit jen další HTTP hlavičky.

NázevPopisPlatné hodnoty
target_additional_http_headersDalší HTTP hlavičky odesílané s každým požadavkemobjekt JSON

Příklad specifické konfigurace​

Následuje příklad konfiguračního JSON, ve kterém se pomocí vlastních hlaviček posílá s každým požadavkem Bearer token.

{
"target_additional_http_headers": {
"X-My-Custom-Id": "12345"
}
}

MQTT Client

Pokud vaše služba provozuje server brokeru MQTT, můžete použít typ MQTT Client, který se k vašemu serveru připojí a data na něm publikuje.

Specifická konfigurace​

NázevPopisPlatné hodnoty
mqtt_dist_client_idClient ID pro MQTTLibovolný řetězec
mqtt_dist_transportTyp přenosu použitý pro připojení k serverutcp nebo websockets
mqtt_dist_tlsZda se má k připojení použít TLStrue nebo false
mqtt_dist_json_datastream_topicTéma (topic) pro odesílání telemetrických zprávLibovolný řetězec
mqtt_dist_publish_qos_defaultParametr QoS zpráv odesílaných klientemLibovolné celé číslo
embed_metadataPřidá do obsahu zprávy metadata jako account_visibility nebo integration_client_idtrue nebo false

Příklad specifické konfigurace​

Následuje příklad konfiguračního JSON.

{
"mqtt_dist_client_id": "dronetag_0001",
"mqtt_dist_transport": "tcp",
"mqtt_dist_tls": false,
"mqtt_dist_json_datastream_topic": "dronetag/telemetry/{msgtype}",
"mqtt_dist_publish_qos_default": 0
}

Použití {msgtype} v názvu tématu​

Pokud používáte formát Dronetag DUMP a chcete posílat různé typy zpráv do různých témat, můžete do názvu tématu vložit zástupný text {msgtype}. Před odesláním se nahradí skutečným typem zprávy. Je-li typem zprávy například „UA telemetry“, z tématu dronetag/telemetry/{msgtype} se stane dronetag/telemetry/tele-ua.

Dostupné typy zpráv:

  • tele-ua - zprávy s telemetrií UA
  • tele-operator - zprávy s telemetrií operátora
  • tele-system - zprávy se systémovou telemetrií
  • operation-update - zprávy o změně operace

Více o typech zpráv najdete na stránce Zprávy DUMP.

Doporučení ke konfiguraci​

  • Obvykle je nutné nastavit platný Target Port.

TCP a UDP sockety

Tento typ distribuce posílá data přes obyčejný TCP nebo UDP socket.

Specifická konfigurace​

NázevPopisPlatné hodnoty
embed_metadataPřidá do obsahu zprávy metadata jako account_visibility nebo integration_client_idtrue nebo false

Příklad specifické konfigurace​

Následuje příklad konfiguračního JSON

{
"embed_metadata": true
}

Doporučení ke konfiguraci​

  • Musí být nastavený 'Target port'
  • Pro zabezpečení provozu doporučujeme typ autorizace AES cipher

Pokrytí zpráv

Data Push používá před odesláním dat do vašeho cíle dva samostatné filtry:

  1. Nastavení Data Source (zdroj dat) určuje, které zprávy připadají pro cíl distribuce v úvahu.
  2. Nastavení Output Format (výstupní formát) určuje, které z těchto typů zpráv lze v daném formátu vyjádřit a odeslat.

Například cíl se zdrojem dat My account může dostávat jen zprávy, ke kterým má tento účet přístup. Pokud tentýž cíl používá partnerský formát pro polohu UAV, odesílají se jen zprávy o poloze letadla, protože tento formát neumí vyjádřit polohu operátora, systémovou telemetrii ani změny operací.

Typy zpráv podle výstupního formátu​

Typ datDUMP JSON / DUMP JSON TypedCursor on Target XMLSAPIENTPartnerské formáty pro polohu UAV
Telemetrie UAOdesílá se jako tele-uaOdesílá se jako události CoT letadlaOdesílá se jako detekce SAPIENTOdesílá se, pokud formát umí zprávu o poloze vyjádřit
Telemetrie polohy operátoraOdesílá se jako tele-operatorOdesílá se jako události CoT operátoraNeodesílá seNeodesílá se
Systémová telemetrieVe výchozím stavu se odesílá jako tele-systemOdesílá se jako systémové události CoTNeodesílá seNeodesílá se
Změny operacíOdesílá se jako operation-updateNeodesílá seNeodesílá seNeodesílá se
Provoz ADS-B, UAT, FLARM a OGNNeodesílá seNeodesílá seNeodesílá seNeodesílá se

DUMP JSON a DUMP JSON Typed jsou nejlepší volbou, pokud váš cíl potřebuje úplnou sadu zpráv Data Push.

Systémovou telemetrii lze pro daný cíl vypnout nastavením spojení distribute_system_telemetry.

Monitorování distribuce

Po nastavení první distribuce budete nejspíš chtít sledovat, zda funguje správně. Můžete to dělat několika způsoby.

Kontrola stavu v portálu integrací​

Aktuální stav distribuce zjistíte v portálu integrací, kde ověříte, že je distribuce zapnutá a správně nakonfigurovaná.

Po kliknutí na odkaz View & Edit uvidíte podrobnosti, jako je doba provozu (uptime) a statistiky za posledních 24 hodin. Zobrazí se i malý graf s rychlým přehledem, kolik zpráv touto distribucí za tu dobu prošlo.

Monitorování stavu přes Prometheus / OpenTelemetry​

Pokud chcete pokročilejší monitorování včetně historických dat a upozornění, můžete napojit Prometheus, který bude z našeho systému sbírat metriky. Tato funkce je dostupná všem uživatelům portálu integrací a poskytuje podrobná data o každé běžící integraci.

K vizualizaci dat doporučujeme Grafanu.

Ukázka dashboardu Grafany s metrikami distribuce

Ukázka dashboardu Grafany s metrikami běžící distribuce

Získání URL s metrikami​

  1. Přihlaste se do portálu integrací svým účtem Dronetag, nebo si vytvořte nový.
  2. Najděte cíl distribuce, který vás zajímá, a klikněte na View & Edit.
  3. Klikněte na tlačítko Get Prometheus Metrics.
  4. Zobrazí se metriky ve formátu Prometheus/OpenMetrics.
  5. Tuto URL pravidelně stahujte nástrojem, který vám vyhovuje (podrobnosti v další sekci).

URL vypadá takto:

https://relay.dronetag.app/metrics/[[your_distribution_id]]

Poznamenejte si ID své distribuce.

Sběr metrik pomocí Promethea​

Prometheus je open-source monitorovací systém, který umí náš export metrik sbírat (scrape). Více informací a návod k instalaci najdete v oficiální dokumentaci Promethea.

Doporučená konfigurace, se kterou můžete začít naše metriky sbírat:

prometheus.yml
global:
scrape_interval: 10s
scrape_configs:
- job_name: 'dronetag_distribution_metrics'
scrape_interval: 10s
metrics_path: '/metrics/[[your_distribution_id]]'
static_configs:
- targets: ['relay.dronetag.app']

Tato konfigurace sbírá metriky každých 10 sekund z URL https://relay.dronetag.app/metrics/[[your_distribution_id]].

Dostupné metriky​

NázevPopis
relay_messages_read_totalCelkový počet zpráv přečtených na vstupu
relay_messages_distributed_totalCelkový počet distribuovaných zpráv. Může být nižší než na vstupu kvůli filtrům nebo neúspěšnému doručení.
relay_message_conversion_secondsPrůměrná doba převodu zprávy do zvoleného výstupního formátu (v sekundách)
relay_message_distribution_secondsPrůměrná doba doručení zprávy do vašeho cíle (v sekundách), z velké části odpovídá latenci serveru.

Vizualizace dat v Grafaně​

Grafana je open-source nástroj pro monitorování a analýzu dat, který umí Prometheus používat jako zdroj dat.

Jak Grafanu nainstalovat a nastavit v ní Prometheus jako zdroj dat, popisuje návod 'Get started with Grafana and Prometheus'.

Ukázkový dashboard pro Grafanu​

Připravili jsme jednoduchý ukázkový dashboard pro Grafanu. Soubor JSON můžete importovat do své instance Grafany a upravit podle svých potřeb.

Details
grafana-dashboard.json
{ "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "grafana", "uid": "-- Grafana --" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "target": { "limit": 100, "matchAny": false, "tags": [], "type": "dashboard" }, "type": "dashboard" } ] }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "id": 47, "links": [ { "asDropdown": false, "icon": "cloud", "includeVars": false, "keepTime": false, "tags": [], "targetBlank": false, "title": "Dronetag Integration Portal", "tooltip": "", "type": "link", "url": "https://integrations.dronetag.app" } ], "liveNow": false, "panels": [ { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "dark-purple", "value": null } ] }, "unit": "string" }, "overrides": [] }, "gridPos": { "h": 3, "w": 16, "x": 0, "y": 0 }, "id": 3, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "/^relay_distribution_name$/", "values": false }, "text": { "valueSize": 40 }, "textMode": "value" }, "pluginVersion": "10.1.1", "targets": [ { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "editorMode": "code", "expr": "relay_messages_read_created{distribution_id=\"$distribution_id\"}", "format": "table", "instant": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "transformations": [], "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "dark-blue", "value": 80 } ] }, "unit": "dateTimeFromNow" }, "overrides": [] }, "gridPos": { "h": 3, "w": 8, "x": 16, "y": 0 }, "id": 2, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "center", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "/^Created$/", "values": false }, "textMode": "value_and_name" }, "pluginVersion": "10.1.1", "targets": [ { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "editorMode": "code", "expr": "relay_messages_read_created{distribution_id=\"$distribution_id\"}", "format": "time_series", "instant": false, "legendFormat": "Created at", "range": true, "refId": "A" } ], "transformations": [ { "id": "calculateField", "options": { "alias": "Created", "binary": { "left": "Created at", "operator": "*", "reducer": "sum", "right": "1000" }, "mode": "binary", "reduce": { "reducer": "sum" }, "replaceFields": true } } ], "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "description": "Average rates of sent (distributed) messages. Dotted line shows source input rate, which can be higher if there are filters applied (such as filter to specific device group).", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "bars", "fillOpacity": 100, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 0, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "mps" }, "overrides": [ { "matcher": { "id": "byName", "options": "Input rate" }, "properties": [ { "id": "custom.lineWidth", "value": 1 }, { "id": "custom.lineStyle", "value": { "dash": [ 2, 6 ], "fill": "dot" } }, { "id": "color", "value": { "mode": "fixed" } }, { "id": "custom.drawStyle", "value": "line" }, { "id": "custom.fillOpacity", "value": 0 } ] } ] }, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 3 }, "id": 1, "interval": "15s", "maxDataPoints": 128, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "editorMode": "code", "expr": "sum(rate(relay_messages_distributed_total{distribution_id=\"$distribution_id\"}[$__rate_interval])) by (distribution_id)", "instant": false, "legendFormat": "Distributed rate", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "editorMode": "code", "expr": "sum(rate(relay_messages_read_total{distribution_id=\"$distribution_id\"}[$__rate_interval])) by (distribution_id)", "hide": false, "instant": false, "legendFormat": "Input rate", "range": true, "refId": "B" } ], "title": "Average distribution rate", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "description": "The duration of how long it takes to convert the source input data to the output format. Includes filtering or other data pre-processing.", "fieldConfig": { "defaults": { "color": { "mode": "fixed", "seriesBy": "last" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "line" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null } ] }, "unit": "s" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 11 }, "id": 4, "interval": "15s", "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "editorMode": "code", "expr": "sum(rate(relay_message_conversion_seconds_sum{distribution_id=\"$distribution_id\"}[$__rate_interval]) / rate(relay_message_conversion_seconds_count{distribution_id=\"$distribution_id\"}[$__rate_interval])) by (distribution_id)", "instant": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Average conversion duration", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "description": "The duration of how long it takes to distribute the data. The largest part is usually the server latency. Some distribution types can be missing a support for this metric.", "fieldConfig": { "defaults": { "color": { "mode": "thresholds", "seriesBy": "max" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "dashed" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null }, { "color": "dark-orange", "value": 0.7 }, { "color": "semi-dark-red", "value": 1 } ] }, "unit": "s" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 11 }, "id": 5, "interval": "15s", "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "editorMode": "code", "expr": "sum(rate(relay_message_distribution_seconds_sum{distribution_id=\"$distribution_id\"}[$__rate_interval]) / rate(relay_message_distribution_seconds_count{distribution_id=\"$distribution_id\"}[$__rate_interval])) by (distribution_id)", "instant": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Average distribute duration", "type": "timeseries" } ], "refresh": "", "schemaVersion": 38, "style": "dark", "tags": [ "dronetag" ], "templating": { "list": [ { "current": { "selected": false, "text": "cc2129b7-30e4-469e-8b13-92e7e097d528", "value": "cc2129b7-30e4-469e-8b13-92e7e097d528" }, "datasource": { "type": "prometheus", "uid": "aRT0ZzYnk" }, "definition": "label_values(relay_messages_read_total,distribution_id)", "hide": 0, "includeAll": false, "label": "Distribution ID", "multi": false, "name": "distribution_id", "options": [], "query": { "query": "label_values(relay_messages_read_total,distribution_id)", "refId": "PrometheusVariableQueryEditor-VariableQuery" }, "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" } ] }, "time": { "from": "now-1h", "to": "now" }, "timepicker": { "nowDelay": "", "refresh_intervals": [ "5s", "10s", "30s", "1m", "5m" ] }, "timezone": "", "title": "Dronetag Single Distribution Monitoring", "uid": "f2370455-bdac-4098-baf5-ea8857bc199d", "version": 5, "weekStart": "" }

Řešení problémů

Pokud máte potíže s integrací Data Push nebo s nastavením distribuce, pomůže vám tento návod najít a vyřešit nejčastější problémy.

Časté problémy a jejich řešení​

1. Distribuce neposílá data​

Pokud je distribuce nastavená, ale žádná data se neposílají, zkuste tento postup:

  • Zkontrolujte stav distribuce: Přihlaste se do portálu integrací a ověřte, že je distribuce aktivní a správně nakonfigurovaná. Podívejte se do logů, zda v nich nejsou chyby nebo varování.
  • Ověřte cílovou adresu: Zkontrolujte, že je cílová adresa (endpoint API, broker MQTT atd.) správná. Otestujte spojení a ověřte, že je vaše služba dosažitelná.
  • Firewall nebo síťová omezení: Ověřte, že příchozí data z našich serverů neblokuje firewall ani žádné síťové pravidlo. Zkontrolujte, že jsou otevřené potřebné porty (zejména při použití vlastních portů pro TCP/UDP).

2. Zpožděná data nebo vysoká latence​

Pokud data přicházejí se zpožděním nebo s vysokou latencí, příčinou může být:

  • Omezení provozu (throttling): Zkontrolujte, zda nemáte v portálu integrací nastavené omezení provozu. Silné omezení může latenci zvýšit.
  • Výkon sítě: Prověřte výkon sítě a dobu odezvy svého serveru. Vysoká latence může být způsobená i pomalým zpracováním na vašem serveru. Latenci požadavků na vaše servery můžete sledovat v našich metrikách pro Prometheus.

3. Chyby ověřování​

Pokud distribuce selhává kvůli chybám ověřování:

  • Zkontrolujte způsob ověřování: Ověřte, že je v portálu integrací nastavený správný způsob ověřování (HTTP Basic Authentication, OAuth 2.0, vlastní hlavičky atd.).
  • Přihlašovací údaje: Zkontrolujte, že jsou přihlašovací údaje k API nebo tokeny aktuální a ve vaší cílové službě správně nastavené.

4. Neúspěšné doručení zpráv​

Pokud se zprávy nedaří doručit nebo je počet distribuovaných zpráv nižší než počet zpráv na vstupu:

  • Zkontrolujte filtry: Systém může některé zprávy podle vaší konfigurace odfiltrovat. Zkontrolujte položku konfigurace Data Source.
  • Projděte serverové logy: Hledejte v serverových lozích distribuce chybová hlášení nebo varování. Najdete je v portálu integrací po kliknutí na View & Edit u dané distribuce.
  • Problémy se spojením: Pokud je cílová služba mimo provoz nebo nedosažitelná, systém zprávy doručit nemůže. Ověřte, že je vaše služba online a dostupná.

5. Metriky v Prometheu se nezobrazují​

Pokud metriky sbíráte Prometheem, ale nevidíte žádná data:

  • URL s metrikami: Zkontrolujte URL s metrikami v konfiguraci Promethea. Musí mít správný tvar: https://relay.dronetag.app/metrics/[[your_distribution_id]].
  • Konfigurace Promethea: Projděte konfigurační soubor prometheus.yml a ověřte, že je cesta k metrikám správná a že Prometheus sbírá data ve správném intervalu.
  • Chyby distribuce: Pokud se distribuce nedokáže správně spustit nebo selhává, bývá endpoint s metrikami prázdný. V serverových lozích distribuce zkontrolujte, zda běží správně.

Potřebujete další pomoc?​

Pokud tyto kroky problém nevyřeší, obraťte se na naši podporu. Přiložte všechny užitečné podrobnosti, například chybové logy nebo snímky obrazovky, abychom mohli problém rychle diagnostikovat.

Zdrojové stránky

Každá kapitola tohoto dokumentu je stránkou nápovědy Dronetag. Na těchto adresách najdete vždy aktuální verzi.

  1. 1Začínámehelp.dronetag.cz/cs/developers/data-push/getting-started
  2. 2Protokoly a formátyhelp.dronetag.cz/cs/developers/data-push/protocols-and-formats
  3. 3Zdroje dathelp.dronetag.cz/cs/developers/data-push/data-sources
  4. 4HTTP Webhookshelp.dronetag.cz/cs/developers/data-push/distribution-types/http
  5. 5MQTT Clienthelp.dronetag.cz/cs/developers/data-push/distribution-types/mqtt
  6. 6TCP a UDP socketyhelp.dronetag.cz/cs/developers/data-push/distribution-types/tcp
  7. 7Pokrytí zprávhelp.dronetag.cz/cs/developers/data-push/message-coverage
  8. 8Monitorování distribucehelp.dronetag.cz/cs/developers/data-push/monitoring
  9. 9Řešení problémůhelp.dronetag.cz/cs/developers/data-push/troubleshooting