Skip to content

A log forwarder/multiplexer for Axiom and Honeycomb.

License

Notifications You must be signed in to change notification settings

axiomhq/axiom-honeycomb-proxy

Repository files navigation

axiom-honeycomb-proxy: Ship logs to Axiom and Honeycomb simultaneously axiom-honeycomb-proxy: Ship logs to Axiom and Honeycomb simultaneously

Documentation Go Workflow Latest Release License

Axiom unlocks observability at any scale.

  • Ingest with ease, store without limits: Axiom's next-generation datastore enables ingesting petabytes of data with ultimate efficiency. Ship logs from Kubernetes, AWS, Azure, Google Cloud, DigitalOcean, Nomad, and others.
  • Query everything, all the time: Whether DevOps, SecOps, or EverythingOps, query all your data no matter its age. No provisioning, no moving data from cold/archive to "hot", and no worrying about slow queries. All your data, all. the. time.
  • Powerful dashboards, for continuous observability: Build dashboards to collect related queries and present information that's quick and easy to digest for you and your team. Dashboards can be kept private or shared with others, and are the perfect way to bring together data from different sources.

For more information check out the official documentation and our community Discord.

Usage

There are multiple ways you can install Axiom Honeycomb Proxy:

  • With Homebrew: brew install axiomhq/tap/axiom
  • Download the pre-built binary from the GitHub Releases
  • Using Go: go install github.com/axiomhq/axiom-honeycomb-proxy/cmd/axiom@latest
  • Use the Docker image: docker run axiomhq/axiom-honeycomb-proxy

Create an api token in Settings > API Tokens with minimal privileges (ingest permission for the dataset(s) you want to ingest into) and export it as AXIOM_TOKEN.

Alternatively, if you use the Axiom CLI, run eval $(axiom config export -f) to configure your environment variables. Otherwise create a personal token in the Axiom settings and export it as AXIOM_TOKEN. Set AXIOM_ORG_ID to the organization ID from the settings page of the organization you want to access.

Run it: axiom-honeycomb-proxy or using Docker:

docker run -p8080:8080/tcp \
  -e=AXIOM_TOKEN=<YOUR_AXIOM_TOKEN> \
  axiomhq/axiom-honeycomb-proxy

Important: Honeycomb creates datasets when you push data to them. Axiom does not support this. Make sure you create the matching datasets in Axiom, first.

Point all Honeycomb related tools at the proxy deployment which accepts data on the following endpoints:

Single event requests

curl http://localhost:8080/honeycomb/v1/events/<DATASET> -X POST \
  -H "X-Honeycomb-Team: <YOUR-HONEYCOMB-KEY>" \
  -H "X-Honeycomb-Event-Time: 2018-02-09T02:01:23.115Z" \
  -d '{"method":"GET","endpoint":"/foo","shard":"users","dur_ms":32}'

Event batch requests

curl  http://localhost:8080/honeycomb/v1/batch/<DATASET> -X POST \
  -H "X-Honeycomb-Team: <YOUR-HONEYCOMB-KEY>" \
  -d '[
        {
          "time":"2018-02-09T02:01:23.115Z",
          "data":{"key1":"val1","key2":"val2"}
        },
        {
          "data":{"key3":"val3"}
        }
      ]'

License

Distributed under the MIT License.