This plugin outputs your logs to the HSDP Host Logging service. This is useful when your workloads are not running on Cloud foundry, but you still want to utilize the central logging facilities of HSDP.
Fluent bit supports parser and filter plugin which can convert unstructured data gathered from the log Input interface into a structured one and to alter existing structured data before ingestion.
The plugin supports deployment to both Cloud and On-Premise environments. Depending on
the deployment type you can either specify the Cloud Region and Environment or the On-Premise
IamUrl and IdmUrl values.
The plugin supports both the API Signing authorization mechanism or the use
of a IAM Service Identity with the LOG.CREATE scope
Your fluent-bit.conf file should include an entry like below to enable the plugin:
[output]
Name hsdp
Match *
Configuring the authorization mechanism and HSDP Logging endpoints should ideally be done by setting the right Environment variables:
| Key | Description | Environment variable | Required |
|---|---|---|---|
| ProductKey | The Product key of your proposition | HSDP_PRODUCT_KEY | Required |
| IngestorHost | The HSDP ingestor host | HSDP_INGESTOR_HOST | Optional |
| Debug | Shows request details when set to true | HSDP_DEBUG | Optional |
| CustomField | Adds the field hash to custom field when set to true | HSDP_CUSTOM_FIELD | Optional |
| InsecureSkipVerify | Skip checking HSDP ingestor TLS cert. Insecure! | HSDP_INSECURE_SKIP_VERIFY | Optional |
| Key | Description | Environment variable | Required |
|---|---|---|---|
| SharedKey | The Shared key for signing requests | HSDP_SHARED_KEY | Optional |
| SecretKey | The Secret key for signing requests | HSDP_SECRET_KEY | Optional |
| Key | Description | Environment variable | Required |
|---|---|---|---|
| Region | The HSP Region (Cloud) | HSDP_REGION | Optional |
| Environment | THE HSP Environment (Cloud) | HSDP_ENVIRONMENT | Optional |
| IamUrl | The IAM URL (On-Premise) | HSDP_IAM_URL | Optional |
| IdmUrl | The IDM URL (On-Premise) | HSDP_IDM_URL | Optional |
| ServiceId | The Service ID to use for authentication | HSDP_SERVICE_ID | Optional |
| ServicePrivateKey | The Service private key | HSDP_SERVICE_PRIVATE_KEY | Optional |
Environment variable values take precedence over those in configuration files.
The plugin supports full pass-through of the native LogEvent JSON message type, example:
{
"resourceType": "LogEvent",
"id": "7f4c85a8-e472-479f-b772-2916353d02a4",
"applicationName": "OPS",
"eventId": "110114",
"category": "TRACELOG",
"component": "TEST",
"transactionId": "2abd7355-cbdd-43e1-b32a-43ec19cd98f0",
"serviceName": "OPS",
"applicationInstance": "INST‐00002",
"applicationVersion": "1.0.0",
"originatingUser": "SomeUsr",
"serverName": "ops-dev.cloud.pcftest.com",
"logTime": "2017-01-31T08:00:00Z",
"severity": "INFO",
"logData": {
"message": "VGVzdCBNZXNzYWdl"
},
"custom": {
"foo": "bar"
}
}
NOTE: the
logData.messagefield must be base64 encoded
Alternatively, the plugin maps certain record fields to defined HSDP logging resource fields. The below table shows the mapping, and the default value.
| Record field | HSDP logging field | Default value | Details |
|---|---|---|---|
| server_name | serverName | fluent-bit | |
| app_name | applicationName | fluent-bit | |
| app_instance | applicationInstance | fluent-bit | |
| app_version | applicationVersion | 1.0 | |
| category | category | TraceLog | |
| severity | severity | informational | |
| service_name | service_name | fluent-bit | |
| originating_user | originating_user | fluent-bit | |
| event_id | event_id | 1 | |
| transaction_id | transaction_id | random UUID | if original input is not a valid UUID a new one will be generated |
| trace_id | trace_id | ||
| span_id | span_id | ||
| logdata_message | logData.Message | field hash | will replace the default field hash dump went present |
Fields mapped to a HSDP logging resource field will be removed from the log message dump
The below filter definition shows an example of assigning fields
[filter]
Name record_modifier
Match *
Record server_name ${HOSTNAME}
Record service_name Awesome_Tool
[filter]
Name modify
Match *
Copy container_name app_name
Copy container_name service_name
Copy component_name component
Copy container_id app_instance
Remaining fields will be rendered to a JSON hash and assigned to
logData.Message
docker build -t fluent-bit-out-hsdp .
docker run --rm \
-p 127.0.0.1:24224:24224 \
-e HSDP_PRODUCT_KEY=product-key-here \
-e HSDP_REGION=us-east \
-e HSDP_ENVIRONMENT=client-test \
-e [email protected] \
-e HSDP_SERVICE_PRIVATE_KEY="$(cat service_private_key.pem)" \
-it philipssoftware/fluent-bit-out-hsdp:latest
Once the above is running you can start other Docker containers and use fluentd log driver to start logging to HSDP logging:
docker run --rm -it --log-driver fluentd alpine echo "hello world"
Andy Lo-A-Foe [email protected]
License is MIT
Content type
Image
Digest
sha256:4ff77769c…
Size
42.4 MB
Last updated
about 2 years ago
docker pull philipssoftware/fluent-bit-out-hsdp:v2.6.0