> ## 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.

# Instrumentation SQL

## Configuration

Pour instrumenter votre utilisation de SQL, vous devrez importer les paquets d'instrumentation officiels OpenTelemetry :

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

Votre connexion à la base de données doit être ouverte à l'aide du paquet `otelsql`, il est également important d'interroger la base de données à l'aide de la fonction `QueryContext` pour passer le contexte actuel, de cette façon, les spans seront correctement imbriqués et structurés. L'exemple ci-dessous montre comment instrumenter les requêtes vers une base de données MySQL dans un contexte de requête web.

Pour plus d'informations sur l'utilisation et la prise en charge des pilotes SQL, consultez le [dépôt du paquet](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>
