Official Go bindings for the Axiom API
Axiom unlocks observability at any scale.
For more information check out the official documentation and our community Discord.
Install using go get
:
go get github.com/axiomhq/axiom-go/axiom
Import the package:
import "github.com/axiomhq/axiom-go/axiom"
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.
[!NOTE] The organization ID is the slug below your organizations full name in the Axiom settings which resembles the full name. It has a copy button next to it. Alternatively you can just extract it from your browsers address bar when browsing the Axiom App:
https://app.dev.axiomtestlabs.co/<your-org-id>/datasets
.
You can also configure the client using options
passed to the axiom.NewClient
function:
client, err := axiom.NewClient(
axiom.SetPersonalTokenConfig("AXIOM_TOKEN", "AXIOM_ORG_ID"),
)
[!NOTE] When only performing ingest or query operations, we recommend using an API token with minimal privileges, only! Create an API token with the appropriate scopes in the Axiom API tokens settings and export it as
AXIOM_TOKEN
.
Create and use a client like this:
package main
import (
"context"
"fmt"
"log"
"github.com/axiomhq/axiom-go/axiom"
"github.com/axiomhq/axiom-go/axiom/ingest"
)
func main() {
ctx := context.Background()
client, err := axiom.NewClient()
if err != nil {
log.Fatalln(err)
}
if _, err = client.IngestEvents(ctx, "my-dataset", []axiom.Event{
{ingest.TimestampField: time.Now(), "foo": "bar"},
{ingest.TimestampField: time.Now(), "bar": "foo"},
}); err != nil {
log.Fatalln(err)
}
res, err := client.Query(ctx, "['my-dataset'] | where foo == 'bar' | limit 100")
if err != nil {
log.Fatalln(err)
}
for _, match := range res.Matches {
fmt.Println(match.Data)
}
}
For further examples, head over to the examples directory.
If you want to use a logging package, check if there is already an adapter in the adapters directory. We happily accept contributions for new adapters.
Distributed under the MIT License.