> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SQL-Instrumentierung

## Einrichtung

Um Ihre SQL-Nutzung zu instrumentieren, müssen Sie die offiziellen OpenTelemetry-Instrumentierungspakete importieren:

<CodeGroup>
  ```go Go theme={null}
  import(
    "github.com/XSAM/otelsql"
    semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
  )
  ```
</CodeGroup>

Ihre DB-Verbindung muss mit dem Paket `otelsql` geöffnet werden. Außerdem ist es wichtig, die Datenbank mit der Funktion `QueryContext` abzufragen, um den aktuellen Kontext zu übergeben; auf diese Weise werden die Spans korrekt verschachtelt und strukturiert. Das folgende Beispiel zeigt, wie Sie Queries an eine MySQL-Datenbank im Kontext eines Web-Requests instrumentieren.

Weitere Informationen zur Verwendung und zur Unterstützung von SQL-Treibern finden Sie im [Paket-Repository](https://github.com/XSAM/otelsql).

<CodeGroup>
  ```go Go theme={null}
  func mysqlQuery(w http.ResponseWriter, r *http.Request) {
  	ctx := r.Context()

  	db, err := otelsql.Open(
  		"mysql",
  		"root:password@tcp(0.0.0.0:3306)/mydb",
  		otelsql.WithAttributes(semconv.DBSystemMySQL),
  	)
  	if err != nil {
  		panic(err)
  	}
  	defer db.Close()

  	rows, err := db.QueryContext(ctx, "select * from mysql.user")
  	if err != nil {
  		panic(err)
  	}
  	defer rows.Close()
  }
  ```
</CodeGroup>
