If you use the Axiom CLI, run
eval $(axiom config export -f) to configure your environment variables.
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 you don't want to configure your client using the environment,
// pass credentials explicitly:
// axiom.SetToken("xaat-xyz"),
)
if err != nil {
log.Fatal(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.Fatal(err)
}
res, err := client.Query(ctx, "['my-dataset'] | where foo == 'bar' | limit 100")
if err != nil {
log.Fatal(err)
} else if res.Status.RowsMatched == 0 {
log.Fatal("No matches found")
}
for row := range res.Tables[0].Rows() {
_, _ = fmt.Println(row)
}
}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.
For improved data locality, you can configure the client to use regional edge endpoints for ingest and query operations. All other API operations continue to use the main Axiom API endpoint.
// Using a regional edge domain
client, err := axiom.NewClient(
axiom.SetEdge("eu-central-1.aws.edge.axiom.co"),
)
// Or using an explicit edge URL
client, err := axiom.NewClient(
axiom.SetEdgeURL("https://custom-edge.example.com"),
)You can also configure via environment variables:
AXIOM_EDGE- Regional edge domain (e.g.,eu-central-1.aws.edge.axiom.co)AXIOM_EDGE_URL- Explicit edge URL (takes precedence overAXIOM_EDGE)
Note: Edge endpoints require API tokens (xaat-), not personal tokens.
go get github.com/axiomhq/axiom-goRead documentation on axiom.co/docs/guides/go.