API-calls loggen in NDJSON formaat voor bijvoorbeeld Elasticsearch

Alle gegevensverzoeken door Invantive SQL aan dataplatformen worden geregistreerd voor analytische doeleinden. Zowel voor online producten zoals Invantive Cloud als voor on-premise producten zoals Invantive Control for Excel of Invantive Data Replicator worden statistieken over alle gegevensverzoeken verzameld. Deze registraties zijn online beschikbaar via Invantive Cloud als gedetailleerde dagstanden en geaggregeerde maandelijkse totalen.

In dit topic wordt uitgelegd hoe de lokale logging van API-calls geactiveerd wordt en wordt aan de hand van Elasticsearch de analyse beschreven. Het analyseren kan ook met Invantive SQL zoals beschreven in Analyzing large volumes of native call logs on cloud platform APIs.

Loggen API-calls activeren

Statistieken over alle API-calls kunnen ook lokaal vastgelegd worden.

Voor vastlegging van de API-call statistieken dienen tenminste twee omgevingsvariabelen ingesteld te worden:

  • INVANTIVE_LOG_IO_TO_FILE_NAME_PATH: volledig pad naar het bestand dat de registratie vasthoudt, bijvoorbeeld c:\temp\api-calls.ndjson.
  • INVANTIVE_LOG_IO_TO_FILE: dient op true ingesteld te worden om registratie te activeren.

Standaard wordt per API-call naar het dataplatform een regel toegevoegd aan het opgegeven bestand. Het bestand heeft een NDJSON-formaat; dit betekent dat elk individuele regel een JSON-object is, maar dat er geen array samengesteld hoeft te worden. NDJSON is eenvoudig te verwerken door goedkope en snelle logging en analyse producten zoals Power BI, AWS CloudWatch of Elasticsearch.

Het wegschrijven gebeurt normaliter in groepen, tegelijk met het registreren op Invantive Cloud. De registratie in het lokale bestand kan ook real-time gebeuren. Dit verlengt de verwerkingstijd, maar geeft vroegtijdig inzicht. Om real-time registratie in te schakelen geef je de omgevingsvariabele INVANTIVE_LOG_IO_TO_FILE_REALTIME de waarde true.

Het bestand ziet er uit zoals:

{"Id":29,"BytesSent":317,"BytesReceived":9610,"RoundTrips":1,"RowCount":0,"RecursionLevel":0,"Partition":null,"Action":"READ","DataContainerAlias":"ac","DataContainerId":"invantive","ExecutionDateUtc":"2021-02-17T10:41:38.2411694Z","DurationMs":478,"Successful":true,"Url":"https://acme.api-us1.com/api/3/users/me","ErrorMessage":null,"CallSafeName":"Me","LicenseContractCode":"L140999991","LicenseKeyIdentifier":"132555434567899081","ProviderName":"ActiveCampaign","ManagedThreadId":6,"ForwardedToCustomerService":false,"Iiid":"b8fbf287-dfc9-fc08-80b9-6496e8b671a6","Iuid":"john.doe@acme.com as disconnected on invantive from b8fbf287-dfc9-fc08-80b9-6496e8b671a6","SessionId":"A1157FFEA8FB902B3234191505258B99","BillingId":null,"BillingReference":null,"PoolIdentity":null,"ParameterListText":null}

Voor gedetailleerde vastlegging van de API-call en het antwoord kan native call logging ingesteld worden zoals beschreven in Collect Native Platform Call Data.

Inlezen

Het resulterende bestand kan eenvoudig ingelezen in bijvoorbeeld Elasticsearch via upload:

Kies het API-logbestand. Na een korte analyse kunne de gegevens geïmporteerd worden:

Kies een indexnaam die gemakkelijk te combineren is met wildcard, en laat voor Kibana een index pattern toevoegen:

API-calls import voor Kibana

Bouw op het index pattern de gewenste dashboards zoals onderstaand overzicht van de API-calls per dataplatform gedurende de laatste 15 minuten:

Beschikbaarheid

De logging van API-calls in NDJSON formaat is beschikbaar in releases vanaf 20.1.365 BETA voor alle Invantive producten en operating systems.