Send logs to an HTTP endpoint
Create a stream that sends the logs of your applications to an HTTP or HTTPS URL, in Azion Console or with the Azion API, and confirm the delivery.
You can send the logs of a stream to any URL that receives HTTP or HTTPS POST requests from Azion Console or with the Azion API. To change the body of each request, such as to send a JSON array, refer to Customize the HTTP POST payload.
Data Stream sends the log lines of each batch in the body of POST requests to your URL. In the stream form, the endpoint is set in the field labeled Connector, and the HTTP endpoint is its Standard HTTP/HTTPS POST option. Use it for a platform that has no option of its own in that list. For every field and its bounds, refer to Endpoints.
The example collects the requests of one workload with the Applications data source.
Select your interface once. The prerequisites and every task below show only that path.
Prerequisites
- An Azion account with the Edit Data Stream permission. For the permissions, refer to Stream settings.
- A workload on the account that receives requests.
- The URL that receives the logs. It must start with
http://orhttps://and acceptPOSTrequests. - The headers your platform requires to accept the requests, such as an access key. Data Stream sends them with every request.
- An endpoint that receives each batch within 20 seconds. After 20 seconds, the send ends with status
504. For the timeout, refer to Data Stream limits.
- Access to Azion Console. To sign in, refer to How to access Azion Console.
Create the stream
The stream collects from the workload you choose, through a workload filter. Unlike sampling, a workload filter leaves your other streams active.
To create the stream with the API, send a POST request to https://api.azion.com/v4/workspace/stream/streams. Replace [TOKEN VALUE] with your personal token, <workload-id> with the ID of your workload, and the URL and the header with your own:
The workloads data source is Applications in the Console, and template 2 is Applications Event Collector. The API requires the headers key: to send no header, set it to {}. The API answers 201 with the stored stream:
Keep the id: it identifies the stream in every later request, such as /v4/workspace/stream/streams/12347. A url with another scheme is refused with 32006 Invalid URL Scheme. For every key of the body, refer to Stream settings.
The API and the Console save the stream without contacting the URL. A wrong URL or header surfaces only when the stream sends. An activation takes effect after one to two minutes.
Confirm the delivery
Real-Time Events records every send of a stream, delivered or not, with the status code the endpoint returned. Send a few requests to the workload, then wait about a minute: a stream sends a batch every 60 seconds, or sooner when it reaches 2,000 log lines.
To read the sends with the API, query the dataStreamedEvents dataset of the Real-Time Events GraphQL API. Replace the dates with a range that covers the activation of the stream:
The API answers 200 with one record for each send, the latest first:
A send to an HTTP endpoint carries HTTP_POST in endpointType. A statusCode of 200 means your endpoint accepted the batch, and streamedLines and dataStreamed give its size in log lines and bytes. An empty dataStreamedEvents list means the stream has not sent in the range. For every field, refer to Real-Time Events GraphQL fields.
Any status other than 200 is the answer of your endpoint, with two exceptions. 503 means Data Stream found the endpoint unavailable, and 504 means the endpoint did not receive the batch within 20 seconds. A URL that accepts no POST request answers each send with its own error, such as 405. For the causes, refer to Troubleshoot Data Stream.