maesn
Produkt-Feature

Unified Logging & Monitoring über alle Systeme, nicht ein Log je Anbieter

Jeder API-Aufruf wird in derselben strukturierten Form protokolliert: der Endpunkt, die Antwort, der Zeitstempel, das Zielsystem und der Account-Key. Die Systeme antworten alle verschieden, der Satz nicht, und er hält fest, dass übertragen wurde, statt zu speichern, was bewegt wurde.

Drei Aufrufe, drei Systemeein Satz
POST /invoiceslexware-office
GET /contactsdatev
POST /expensesxero
maesn protokolliert jeden gleich
Immer diese fünf Dinge
endpointPOST /invoices
response201
timestamp…
targetSystemlexware-office
accountKey<account-key>
Diese Software-Teams vertrauen uns
HubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicapHubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicap
Das Konzept

Was ist Unified Logging & Monitoring

Mit einer Anbindung ist Debuggen das Lesen zweier Sätze: Ihres und des Systems. Die Kosten für das nächste System sind nicht linear, weil die Frage sich ändert. Sie ist nicht mehr, was in unserem Code schiefging, sondern wo das schiefging, und jedes System beantwortet diese Frage in seinem eigenen Format, über sein eigenes Portal oder über gar keines, nach seiner eigenen Uhr.

Unified Logging & Monitoring hält diese Frage von einer Stelle aus beantwortbar. Jeder API-Aufruf wird in derselben strukturierten Form protokolliert, mit dem aufgerufenen Endpunkt, der Antwort, dem Zeitstempel, dem Zielsystem und dem Account-Key. Das genügt, um für einen Mandanten über Systeme hinweg zu rekonstruieren, was wann geschah, ohne dass Sie sonst etwas öffnen.

Sätze werden bei Start und Scale 30 Tage und bei Enterprise 90 Tage oder länger aufbewahrt, wie weit zurück Sie untersuchen können, gehört also zu Ihrem Tarif.

Das arbeitende Wort ist unified. Die eigenen Antworten und Meldungen der Systeme haben nichts gemeinsam, und erst ihre Normalisierung macht eine einheitliche Satzform überhaupt möglich, ob Sie sie im Maesn-Portal oder über die API lesen. Es ist dasselbe Normalisierungsprinzip wie der Fehler-Umschlag, den Sie ohnehin verarbeiten, angewandt auf die Spur, die ein Aufruf hinterlässt, statt auf die Antwort, die er liefert.

Das Problem

Die Frage ist selten, was kaputtging, sondern wo

Vier Orte, an denen man bei einem gescheiterten Abgleich nachsieht, und jeder sieht nur einen Teil.

Ihre eigenen Logs
nur Ihre Seitekeine Systemdetails
Das Portal des Systems
ein Systemfalls es eines hat
Der Kunde
ein ScreenshotStunden später
Über alle hinweg
keine gemeinsame IDkeine gemeinsame Uhr

Ihre eigenen Logs zeigen den Aufruf, den Sie gemacht haben, und den Fehler, den Sie bekamen. Das genügt, um zu wissen, dass stromaufwärts etwas abgelehnt hat, und genügt nicht, um zu wissen, welches System Ihres Kunden es war oder woran es sich gestört hat. Das Portal des Herstellers weiß es, falls es eines gibt und falls der Kunde Ihnen Zugang gibt, und das sind zwei Bedingungen, die oft scheitern. Der Kunde weiß, dass etwas nicht stimmt, meist zuletzt, meist in Form eines Screenshots.

Das eigentliche Problem ist die vierte Kachel. Selbst mit allen drei Quellen offen verbindet sie nichts: keine gemeinsame Kennung, keine gemeinsame Uhr und kein gemeinsames Vokabular für das Geschehene. In dieser Zuordnungsarbeit gehen die Stunden drauf, und sie wächst mit jedem System, das Sie unterstützen.

Der Satz

Fünf Dinge, für jeden Aufruf

Ein Log nützt nur, wenn jeder Eintrag dieselbe Form hat, denn das macht es durchsuchbar, vergleichbar und zählbar. Maesn schreibt einen Satz je API-Aufruf mit denselben fünf Feldern, ob der Aufruf an ein System mit moderner REST-API ging oder an eines, das in Dateien antwortet, und das ist der Unterschied zwischen einer Spur, der Sie folgen können, und einem Haufen herstellerspezifischer Meldungen.

Ein Satz je API-Aufruf
endpointWelcher Aufruf erfolgte, damit die Aktion eindeutig ist.
responseWie das Zielsystem antwortete, über alle Systeme in eine Form normalisiert.
timestampWann es geschah, was eine Abfolge von Ereignissen rekonstruierbar macht.
targetSystemAn welches der verbundenen Systeme der Aufruf ging.
accountKeyZu welcher Kundenverbindung er gehörte, sodass ein Mandant verfolgbar ist.
Was der Satz nicht ist

Er hält fest, dass eine Übertragung stattfand, nicht die übertragenen Daten. Die Nutzlast selbst wird nicht gespeichert.

Der letzte Streifen lohnt zweimal gelesen zu werden. Der Satz hält fest, dass eine Übertragung stattfand, mit welchem Endpunkt, zu welchem System, für welche Verbindung und wann. Er bewahrt die Nutzlast nicht auf, und so verträgt sich das damit, keine Kundendaten zu speichern. Sie können belegen, was Ihre Anbindung getan hat, ohne dass Maesn behält, was sie bewegt hat.

Ihre Seite davon

Dieselbe Spur, in Ihren eigenen Logs

Sechs dokumentierte Felder, die auf Ihrer Seite abzulegen sich lohnt, damit Ihre Sätze zu denen von Maesn passen statt daneben zu liegen.

Signal
context.targetSystemAn welches der verbundenen Systeme dieser Aufruf wirklich gingjeder Fehler
context.unifiedApiGegen welche Unified API der Aufruf erfolgtejeder Fehler
context.timestampWann der Aufruf verarbeitet wurde, damit Sie ihn mit Ihren Logs abgleichenjeder Fehler
meta.warningsWelche Felder das Zielsystem nicht nutzt, benannt statt stillschweigend verworfenAntworten
downstreamErrorsWas das Zielsystem selbst meldete, in seinen Worten, wörtlich bewahrtSystemfehler
information[]Was eine Hintergrundaufgabe meldete, Eintrag für Eintrag, je mit Zeitstempelasynchrone Aufgaben

Keines davon braucht eine eigene Anfrage. Legen Sie context neben Ihren eigenen Fehlersätzen ab, ist ein gescheiterter Abgleich schon einem System in einem Moment zuzuordnen, und eine Supportfrage wird zum Nachschlagen. Diese Verschiebung wirkt am stärksten bei Customer-Success-Teams, weil die Antwort nicht mehr davon abhängt, wer sich an den letzten Vorfall erinnert. Zeigen Sie meta.warnings irgendwo, wo ein Nutzer es sieht, hört das Feld, das ein Zielsystem still übergeht, auf, eine Entdeckung zu sein, die Sie sechs Wochen später in einem Report machen.

Arbeit im Hintergrund hinterlässt dieselbe Art Spur. Ein asynchroner Vorgang meldet seinen Fortschritt über die Aufgabe, die er zurückgibt, Eintrag für Eintrag statt als einzelnes Urteil, und jedes Webhook-Event benennt das Objekt, um das es ging, und kommt signiert an, ein überraschendes Event lässt sich also auf einen Datensatz und auf Maesn zurückführen.

Monitoring

Die Systeme beobachten, die Sie nicht gebaut haben

Am meisten schmerzen im Anbindungsgeschäft die Fehler bei einem Hersteller, bei dem Sie kein Konto haben. Ein System ist eine Stunde langsam, ein Endpunkt liefert nach einer Freigabe Fehler, ein Wartungsfenster, von dem Ihnen niemand erzählt hat, fällt mitten in Ihren nächtlichen Abgleich. Sie erfahren es von einem Kunden, und das ist der schlechteste verfügbare Kanal.

Maesn beobachtet die verbundenen Systeme, ihre Endpunkte und ihren Status, ein Problem bei einem Hersteller fällt also hier auf, statt Ihnen vom betroffenen Kunden gemeldet zu werden. Ist ein System betroffen, auf dem Ihre Mandanten laufen, sagt Ihr Ansprechpartner bei Maesn Ihnen über den Kanal Bescheid, den Sie ohnehin mit uns nutzen, bei den meisten Teams ist das Slack. Die Hersteller veröffentlichen diese Hinweise in ihren eigenen Formaten und häufig in ihrer eigenen Sprache, und was Sie erreicht, ist eine Form, aus welchem System es auch kam. Was Ihre Anwendung erreicht, ist ebenfalls keine Stille, sondern ein typisierter Fehler: Ein vorübergehend nicht erreichbares System kommt als 503 mit dem Typ service_unavailable an.

Wiederholen und Takten greifen enger. Maesn wiederholt und taktet auf den asynchronen Endpunkten. Alles Synchrone reicht die 429 des Zielsystems direkt durch, Backoff und Zeitplan bleiben also bei Ihnen. Das ist der Unterschied zwischen einem Abgleich, den Sie bewusst wiederholen, und einem, der verschwunden ist.

Ein Zielsystem
Fällt aus oder wird langsam
maesn
Nennt das System und benachrichtigt
Ihre App
Ein typisierter Fehler, keine Stille
Warum es zählt

Eine Frage, ein Ort für die Antwort

Selbst gebaut
  • Ihre Logs mit jedem Portal abgleichen
  • Raten, aus welchem System ein Fehler kam
  • Von Ausfällen durch Kunden erfahren
  • Verworfene Felder erst im Report entdecken
Mit Maesn
  • Das System in der Antwort benannt
  • Anfragen, Antworten und Webhooks protokolliert
  • Verbundene Systeme für Sie überwacht
  • Übergangene Felder als Warnungen benannt

Supportkosten sind der stille Teil der Gesamtkosten einer Anbindung. Sie stehen nicht in der Bauschätzung, sie kommen danach, und sie wachsen mit der Zahl der Systeme und der Zahl der Kunden statt mit der Menge Code. Der größte Hebel darauf ist, beantworten zu können, wo etwas geschah, ohne jemanden zu fragen.

Deshalb wird das System in der Antwort benannt, statt es Ihnen zum Erschließen zu überlassen, und deshalb wird ein Feld, das ein System nicht nutzt, als Warnung gemeldet statt still verworfen. Es ist dasselbe Prinzip wie das Common Data Model: Die Unterschiede zwischen Systemen werden abgefangen, und die, die Ihnen weiterhin wichtig sind, werden mit Absicht sichtbar gemacht.

FAQ Unified Logging & Monitoring

Häufige Fragen

Was genau protokolliert Maesn?

Einen Satz je API-Aufruf, jedes Mal in derselben strukturierten Form: den aufgerufenen Endpunkt, die Antwort, den Zeitstempel, das Zielsystem und den Account-Key. Das genügt, um für eine bestimmte Kundenverbindung zu rekonstruieren, was wann geschah. Die Sätze stehen im Maesn-Portal und über die API bereit.

Wie lange werden die Sätze aufbewahrt?

Das hängt vom Tarif ab: 30 Tage bei Start und Scale, 90 Tage oder mehr bei Enterprise. Die Aufbewahrung steht beim Rest des Tarifvergleichs, denn wie weit zurück Sie einen Vorfall untersuchen können, ist ebenso eine kaufmännische wie eine technische Frage.

Enthalten die Logs die Daten unserer Kunden?

Nein. Der Satz hält fest, dass eine Übertragung stattfand, mit Endpunkt, Zielsystem, Account-Key, Zeitstempel und Antwort, und er bewahrt die übertragene Nutzlast nicht auf. So gelten Protokollierung und die Zusage, keine Endkundendaten zu speichern, gleichzeitig: Sie können belegen, was Ihre Anbindung getan hat, ohne dass Maesn behält, was sie transportiert hat.

Warum zählt ein vereinheitlichtes Log mehr als ein Log?

Weil die eigenen Antworten und Meldungen der Systeme nichts gemeinsam haben. Ohne Normalisierung heißt ein Satz je System ein Format je System, und das ist über eine Anbindung hinweg weder durchsuchbar noch vergleichbar noch zählbar. Erst die vereinheitlichte Form macht aus einem Haufen Herstellermeldungen eine Spur, der Sie folgen können.

Wie erkenne ich, aus welchem System ein Fehler kam?

Jeder Fehler trägt einen context-Block mit targetSystem und unifiedApi, dazu einen Zeitstempel der Verarbeitung. Genau das gehört auf Ihrer Seite ins Log, denn es macht aus einem gescheiterten Abgleich ein bestimmtes System und einen bestimmten Moment statt eines Stacktrace, der nur Ihren eigenen Code beschreibt.

Sehe ich, was das Zielsystem selbst gesagt hat?

Ja. Lautet der Fehlertyp target_system_error, werden die eigene Fehlerantwort des Systems und sein Status wörtlich in downstreamErrors durchgereicht. Sie bekommen eine Kategorie zum Verzweigen und den Wortlaut des Herstellers zum Debuggen statt einer Zusammenfassung davon.

Woran erkenne ich, dass ein Feld übergangen wurde?

Antworten können meta.warnings tragen, mit Einträgen wie einem Feld, das das Zielsystem nicht nutzt. Das ist der Fall, der sonst wochenlang unbemerkt bleibt: Der Schreibvorgang gelang, das Objekt kam zurück, und ein Wert ist auf der anderen Seite still nie angekommen.

Wie verfolge ich einen langlaufenden Vorgang?

Asynchrone Vorgänge antworten mit einer taskId, und GET /asyncTask gibt den Status samt einem information-Array zurück. Jeder Eintrag trägt eine Meldung, einen Typ und einen Zeitstempel, ein Schreibvorgang im Hintergrund hinterlässt also eine lesbare Spur, statt in einem Ja oder Nein zu enden.

Lassen sich Webhook-Events einem Satz zuordnen?

Jedes Event benennt über eventType, resource und resourceId, worum es ging, und kommt signiert an, sodass Sie ein Event einem Objekt in Ihren eigenen Daten zuordnen und seine Herkunft von Maesn prüfen können, bevor Sie handeln.

Was passiert bei einem Ausfall eines verbundenen Systems?

Maesn beobachtet die verbundenen Systeme und ihre Endpunkte, ein Ausfall fällt hier also meist zuerst auf, und Ihr Ansprechpartner bei Maesn sagt Ihnen über den Kanal Bescheid, den Sie ohnehin mit uns nutzen. Auf Ihrer Seite erscheint ein vorübergehend nicht erreichbares System als 503 mit dem Typ service_unavailable, und das ist ein Signal, auf das Sie reagieren können, statt einer Anfrage, die verschwindet. Wiederholen und Takten greifen enger: Sie passieren auf den asynchronen Endpunkten, und alles Synchrone reicht die 429 des Zielsystems direkt durch, das Backoff bleibt also bei Ihnen.

Warum zählt das bei einer Unified API mehr als bei einer Anbindung?

Weil die Zahl der Stellen, an denen ein Fehler entstehen kann, mit jedem System wächst, das Ihre Kunden verbinden, während Ihre eigenen Logs weiterhin nur Ihre Seite beschreiben. Eine Anbindung sind zwei Logs und ein Portal. Zehn Anbindungen ohne gemeinsamen Blickwinkel sind ein Supportprozess, der mit jedem Quartal langsamer wird.

Einmal bauen, auf der Unified API.

Sehen Sie, wie Unified Logging & Monitoring für Ihre Integration funktioniert, oder steigen Sie in die technische Referenz ein.