Send data from AWS FireLens to Axiom
FireLens integrates with your Amazon ECS tasks and services seamlessly, so you can send logs from your containers to Axiom seamlessly.
To determine the best method to send data from different AWS services, see Send data from AWS to Axiom.
Prerequisites#
- Create an Axiom account.
- Create a dataset in Axiom where you send your data.
- Create an API token in Axiom with permissions to ingest data to the dataset you have created.
Use AWS FireLens with Fluent Bit and Axiom#
Here’s a basic configuration for using FireLens with Fluent Bit to forward logs to Axiom:
Fluent Bit configuration for Axiom#
You’ll typically define this in a file called fluent-bit.conf:
[SERVICE]
Log_Level info
[INPUT]
Name forward
Listen 0.0.0.0
Port 24224
[OUTPUT]
Name http
Match *
Host AXIOM_DOMAIN
Port 443
URI /v1/ingest/DATASET_NAME
Format json_lines
tls On
format json
json_date_key _time
json_date_format iso8601
Header Authorization Bearer API_TOKENReplace AXIOM_DOMAIN with the base domain of your edge deployment. For more information, see Edge deployments.
Replace API_TOKEN with the Axiom API token you have generated. For added security, store the API token in an environment variable.
Replace DATASET_NAME with the name of the Axiom dataset where you send your data.
Read more about Fluent Bit configuration here
ECS task definition with FireLens#
You’ll want to include this within your ECS task definition, and reference the FireLens configuration type and options:
{
"family": "myTaskDefinition",
"containerDefinitions": [
{
"name": "log_router",
"image": "amazon/aws-for-fluent-bit:latest",
"essential": true,
"firelensConfiguration": {
"type": "fluentbit",
"options": {
"config-file-type": "file",
"config-file-value": "/fluent-bit/etc/fluent-bit.conf"
}
}
},
{
"name": "myApp",
"image": "my-app-image",
"logConfiguration": {
"logDriver": "awsfirelens"
}
}
]
}Use AWS FireLens with Fluentd and Axiom#
Create the fluentd.conf file and add your configuration:
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match *>
@type http
headers {"Authorization": "Bearer API_TOKEN"}
data_type json
endpoint https://AXIOM_DOMAIN/v1/ingest/DATASET_NAME
sourcetype ecs
</match>Replace API_TOKEN with the Axiom API token you have generated. For added security, store the API token in an environment variable.
Replace DATASET_NAME with the name of the Axiom dataset where you send your data.
Replace AXIOM_DOMAIN with the base domain of your edge deployment. For more information, see Edge deployments.
Read more about Fluentd configuration here
ECS Task Definition for Fluentd#
The task definition would be similar to the Fluent Bit example, but using Fluentd and its configuration:
{
"family": "fluentdTaskDefinition",
"containerDefinitions": [
{
"name": "log_router",
"image": "YOUR_ECR_REPO_URI:latest",
"essential": true,
"memory": 512,
"cpu": 256,
"firelensConfiguration": {
"type": "fluentd",
"options": {
"config-file-type": "file",
"config-file-value": "/path/to/your/fluentd.conf"
}
}
},
{
"name": "myApp",
"image": "my-app-image",
"essential": true,
"memory": 512,
"cpu": 256,
"logConfiguration": {
"logDriver": "awsfirelens",
"options": {
"Name": "forward",
"Host": "log_router",
"Port": "24224"
}
}
}
]
}By efficiently routing logs with FireLens and analyzing them with Axiom, businesses and development teams can save on operational overheads and reduce time spent on troubleshooting.