Read this article on understand how to build a sample golang app using Gin and Gorm.
If you are using the without-instrumentation
branch to instrument the app following the blog post present here, after you are done with making the necessary changes in the main.go
file, run:
go mod tidy
to download the required packages and populate the go.sum file.
For SigNoz Cloud:
SERVICE_NAME=goApp INSECURE_MODE=false OTEL_EXPORTER_OTLP_HEADERS=signoz-access-token=<SIGNOZ-INGESTION-TOKEN> OTEL_EXPORTER_OTLP_ENDPOINT=ingest.{region}.signoz.cloud:443 go run main.go
- Update
<SIGNOZ-INGESTION-TOKEN>
with the ingestion token provided by SigNoz - Update
ingest.{region}.signoz.cloud:443
with the ingestion endpoint of your region. Refer to the table below for the same.
Region | Endpoint |
---|---|
US | ingest.us.signoz.cloud:443 |
IN | ingest.in.signoz.cloud:443 |
EU | ingest.eu.signoz.cloud:443 |
For SigNoz OSS:
SERVICE_NAME=goApp INSECURE_MODE=true OTEL_EXPORTER_OTLP_ENDPOINT=<IP of SigNoz backend>:4317 go run main.go
<IP of SigNoz backend:4317>
should be without http/https scheme. Eglocalhost:4317
.
This runs the gin application at port 8090
. Try accessing API at http://localhost:8090/books
Below are the apis available to play around. The API calls will generate telemetry data which will be sent to SigNoz which can be viewed at <IP of SigNoz backend>:3000
GET /books
GET /books/:id
POST /books
PATCH /books/:id
DELETE /books/:id
The OpenTelemetry registry is the best place to discover instrumentation packages. It will include packages outside of this project.
The following instrumentation packages are provided for popular Go packages and use-cases.
Instrumentation Package | Metrics | Traces |
---|---|---|
github.com/astaxie/beego | ✓ | ✓ |
github.com/aws/aws-sdk-go-v2 | ✓ | |
github.com/bradfitz/gomemcache | ✓ | |
github.com/emicklei/go-restful | ✓ | |
github.com/gin-gonic/gin | ✓ | |
github.com/go-kit/kit | ✓ | |
github.com/gocql/gocql | ✓ | ✓ |
github.com/gorilla/mux | ✓ | |
github.com/labstack/echo | ✓ | |
github.com/Shopify/sarama | ✓ | |
go.mongodb.org/mongo-driver | ✓ | |
google.golang.org/grpc | ✓ | |
gopkg.in/macaron.v1 | ✓ | |
host | ✓ | |
net/http | ✓ | ✓ |
net/http/httptrace | ✓ | |
runtime | ✓ |