github.com/waldiirawan/apm-agent-go/v2@v2.2.2/docs/supported-tech.asciidoc (about) 1 [[supported-tech]] 2 == Supported Technologies 3 4 This page describes the technologies supported by the Elastic APM Go agent. 5 6 If your favorite technology is not supported yet, you can vote for it by 7 participating in our https://docs.google.com/forms/d/e/1FAIpQLScbW7D8m-otPO7cxqeg7XstWR8vMnxG6brnXLs_TFVSTHuHvg/viewform?usp=sf_link[survey], or joining the conversation in the https://discuss.elastic.co/c/apm[Discuss forum]. 8 We will use the results of the survey and Discuss topics to add support 9 for the most requested technologies. 10 11 If you would like to get more involved, take a look at the <<contributing, contributing guide>>. 12 13 [float] 14 [[supported-tech-go]] 15 === Go 16 17 The Elastic APM Go agent naturally requires Go. We will support, at a minimum, 18 the last two major Go releases as described by 19 https://golang.org/doc/devel/release.html#policy[Go's Release Policy]. Older 20 versions of Go will be supported on a best-effort basis. 21 22 We currently test the agent with all major versions of Go since 1.8. Some 23 integration modules may require a more recent version of Go due to third-party 24 dependencies. 25 26 [float] 27 [[supported-tech-web-frameworks]] 28 === Web Frameworks 29 30 We support several third-party web frameworks, as well as Go's standard `net/http` 31 package. Regardless of the framework, we create a transaction for each incoming 32 request, and name the transaction after the registered route. 33 34 [float] 35 ==== fasthttp 36 37 We support https://github.com/valyala/fasthttp[valyala/fasthttp], 38 https://github.com/valyala/fasthttp/releases/tag/v1.26.0[v1.26.0] and greater. 39 40 See <<builtin-modules-apmfasthttp, module/apmfasthttp>> for more information 41 about fasthttp instrumentation. 42 43 [float] 44 ==== httprouter 45 46 https://github.com/julienschmidt/httprouter[julienschmidt/httprouter] does 47 not use semantic versioning, but its API is relatively stable. Any recent 48 version should be compatible with the Elastic APM Go agent. 49 50 See <<builtin-modules-apmhttprouter, module/apmhttprouter>> for more 51 information about httprouter instrumentation. 52 53 [float] 54 ==== Echo 55 56 We support the https://echo.labstack.com/[Echo] web framework, 57 https://github.com/labstack/echo/releases/tag/3.3.5[v3.3.5] and greater. 58 59 We provide different packages for the Echo v3 and v4 versions: 60 `module/apmecho` for Echo v3.x, and `module/apmechov4` for Echo v4.x. 61 62 See <<builtin-modules-apmecho, module/apmecho>> for more information 63 about Echo instrumentation. 64 65 [float] 66 ==== Gin 67 68 We support the https://gin-gonic.com/[Gin] web framework, 69 https://github.com/gin-gonic/gin/releases/tag/v1.2[v1.2] and greater. 70 71 See <<builtin-modules-apmgin, module/apmgin>> for more information 72 about Gin instrumentation. 73 74 75 [float] 76 ==== Fiber 77 78 We support the https://gofiber.io/[Fiber] web framework, 79 https://github.com/gofiber/fiber/releases/tag/v2.18.0[v2.18.0] and greater. 80 81 We provide package only for the Fiber v2. 82 See <<builtin-modules-apmfiber, module/apmfiber>> for more information 83 about Fiber instrumentation. 84 85 [float] 86 ==== Beego 87 88 We support the https://beego.me/[Beego] web framework, 89 https://github.com/astaxie/beego/releases/tag/v1.10.0[v1.10.0] and greater. 90 91 See <<builtin-modules-apmbeego, module/apmbeego>> for more information 92 about Beego instrumentation. 93 94 [float] 95 ==== gorilla/mux 96 97 We support http://www.gorillatoolkit.org/pkg/mux[gorilla/mux] 98 https://github.com/gorilla/mux/releases/tag/v1.6.1[v1.6.1] and greater. 99 Older versions are not supported due to the use of gorilla.Middleware. 100 101 See <<builtin-modules-apmgorilla, module/apmgorilla>> for more information 102 about gorilla/mux instrumentation. 103 104 [float] 105 ==== go-restful 106 107 We support https://github.com/emicklei/go-restful[go-restful], 108 https://github.com/emicklei/go-restful/releases/tag/2.0.0[2.0.0] and greater. 109 110 See <<builtin-modules-apmrestful, module/apmrestful>> for more information 111 about go-restful instrumentation. 112 113 [float] 114 ==== chi 115 116 We support https://github.com/go-chi/chi[chi], 117 https://github.com/go-chi/chi/releases/tag/v4.0.0[v4.0.0] and greater. 118 119 See <<builtin-modules-apmchi, module/apmchi>> for more information 120 about chi instrumentation. 121 122 [float] 123 ==== negroni 124 125 We support https://github.com/urfave/negroni[negroni], 126 https://github.com/urfave/negroni/releases/tag/v1.0.0[v1.0.0] and greater. 127 128 See <<builtin-modules-apmnegroni, module/apmnegroni>> for more information 129 about negroni instrumentation. 130 131 [float] 132 [[supported-tech-databases]] 133 === Databases 134 135 [float] 136 ==== database/sql 137 138 We support tracing requests with any `database/sql` driver, provided 139 the driver is registered with the Elastic APM Go agent. Spans will be 140 created for each statemented executed. 141 142 When using one of the following drivers, the Elastic APM Go agent will 143 be able to parse the datasource name, and provide more context in the 144 spans it emits: 145 146 - https://github.com/lib/pq[lib/pq] (PostgreSQL) 147 - https://github.com/jackc/pgx[jackc/pgx] (PostgreSQL) 148 - https://github.com/go-sql-driver/mysql[go-sql-driver/mysql] 149 - https://github.com/go-sqlite3[mattn/go-sqlite3] 150 151 See <<builtin-modules-apmsql, module/apmsql>> for more information 152 about database/sql instrumentation. 153 154 [float] 155 ==== GORM 156 157 We support the http://gorm.io/[GORM] object-relational mapping library, 158 https://github.com/jinzhu/gorm/releases/tag/v1.9[v1.9] and greater. 159 Spans will be created for each create, query, update, and delete 160 operation. 161 162 As with `database/sql` support we provide additional support for the 163 postgres, mysql, and sqlite dialects. 164 165 We provide different packages for the Gorm v1 and v2 versions: 166 `module/apmgorm` for Gorm v1.x, and `module/apmgormv2` for Gorm v2.x. 167 168 See <<builtin-modules-apmgorm, module/apmgorm>> or <<builtin-modules-apmgorm, module/apmgormv2>> for more information 169 about GORM instrumentation. 170 171 [float] 172 ==== go-pg/pg 173 174 We support the https://github.com/go-pg/pg[go-pg/pg] PostgreSQL ORM, 175 https://github.com/go-pg/pg/releases/tag/v8.0.4[v8.0.4]. Spans will 176 be created for each database operation. 177 178 See <<builtin-modules-apmgopg, module/apmgopg>> for more information 179 about go-pg instrumentation. 180 181 [float] 182 ==== Cassandra (gocql) 183 184 https://gocql.github.io/[GoCQL] does not have a stable API, so we will 185 provide support for the most recent API, and older versions of the API 186 on a best-effort basis. Spans will be created for each query. When the 187 batch API is used, a span will be created for the batch, and a sub-span 188 is created for each query in the batch. 189 190 See <<builtin-modules-apmgocql, module/apmgocql>> for more information 191 about GoCQL instrumentation. 192 193 [float] 194 ==== Redis (gomodule/redigo) 195 196 We support https://github.com/gomodule/redigo[Redigo], 197 https://github.com/gomodule/redigo/tree/v2.0.0[v2.0.0] and greater. 198 We provide helper functions for reporting Redis commands as spans. 199 200 See <<builtin-modules-apmredigo, module/apmredigo>> for more information 201 about Redigo instrumentation. 202 203 [float] 204 ==== Redis (go-redis/redis) 205 206 We support https://github.com/go-redis/redis[go-redis], 207 https://github.com/go-redis/redis/tree/v6.15.3[v6.15.3]. 208 We provide helper functions for reporting Redis commands as spans. 209 210 See <<builtin-modules-apmgoredis, module/apmgoredis>> for more information 211 about go-redis instrumentation. 212 213 [float] 214 ==== Elasticsearch 215 216 We provide instrumentation for Elasticsearch clients. This is usable with 217 the https://github.com/elastic/go-elasticsearch[go-elasticsearch] and 218 https://github.com/olivere/elastic[olivere/elastic] clients, and should 219 also be usable with any other clients that provide a means of configuring 220 the underlying `net/http.RoundTripper`. 221 222 See <<builtin-modules-apmelasticsearch, module/apmelasticsearch>> for more 223 information about Elasticsearch client instrumentation. 224 225 [float] 226 ==== MongoDB 227 228 We provide instrumentation for the official 229 https://github.com/mongodb/mongo-go-driver[MongoDB Go Driver], 230 https://github.com/mongodb/mongo-go-driver/releases/tag/v1.0.0[v1.0.0] and 231 greater. Spans will be created for each MongoDB command executed within a 232 context containing a transaction. 233 234 See <<builtin-modules-apmmongo, module/apmmongo>> for more information about 235 the MongoDB Go Driver instrumentation. 236 237 [float] 238 ==== DynamoDB 239 240 We provide instrumentation for AWS DynamoDB. This is usable with 241 https://github.com/aws/aws-sdk-go[AWS SDK Go]. 242 243 See <<builtin-modules-apmawssdkgo, module/apmawssdkgo>> for more information 244 about AWS SDK Go instrumentation. 245 246 [float] 247 [[supported-tech-rpc]] 248 === RPC Frameworks 249 250 [float] 251 ==== gRPC 252 253 We support https://grpc.io/[gRPC] 254 https://github.com/grpc/grpc-go/releases/tag/v1.3.0[v1.3.0] and greater. 255 We provide unary and stream interceptors for both the client and server. 256 The server interceptor will create a transaction for each incoming request, 257 and the client interceptor will create a span for each outgoing request. 258 259 See <<builtin-modules-apmgrpc, module/apmgrpc>> for more information 260 about gRPC instrumentation. 261 262 [float] 263 [[supported-tech-services]] 264 === Service Frameworks 265 266 [float] 267 ==== Go kit 268 269 We support tracing https://gokit.io/[Go kit] clients and servers when 270 using the gRPC or HTTP transport, by way of <<builtin-modules-apmgrpc, module/apmgrpc>> 271 and <<builtin-modules-apmhttp, module/apmhttp>> respectively. 272 273 Code examples are available at https://pkg.go.dev/github.com/waldiirawan/apm-agent-go/module/apmgokit/v2 274 for getting started. 275 276 [float] 277 [[supported-tech-logging]] 278 === Logging frameworks 279 280 [float] 281 ==== Logrus 282 283 We support log correlation and exception tracking with 284 https://github.com/sirupsen/logrus/[Logrus], 285 https://github.com/sirupsen/logrus/releases/tag/v1.1.0[v1.1.0] and greater. 286 287 See <<builtin-modules-apmlogrus, module/apmlogrus>> for more information 288 about Logrus integration. 289 290 [float] 291 ==== Zap 292 293 We support log correlation and exception tracking with 294 https://github.com/uber-go/zap/[Zap], 295 https://github.com/uber-go/zap/releases/tag/v1.0.0[v1.0.0] and greater. 296 297 See <<builtin-modules-apmzap, module/apmzap>> for more information 298 about Zap integration. 299 300 [float] 301 ==== Zerolog 302 303 We support log correlation and exception tracking with 304 https://github.com/rs/zerolog/[Zerolog], 305 https://github.com/rs/zerolog/releases/tag/v1.12.0[v1.12.0] and greater. 306 307 See <<builtin-modules-apmzerolog, module/apmzerolog>> for more information 308 about Zerolog integration. 309 310 [float] 311 [[supported-tech-object-storage]] 312 === Object Storage 313 314 [float] 315 ==== Amazon S3 316 We provide instrumentation for AWS S3. This is usable with 317 https://github.com/aws/aws-sdk-go[AWS SDK Go]. 318 319 See <<builtin-modules-apmawssdkgo, module/apmawssdkgo>> for more information 320 about AWS SDK Go instrumentation. 321 322 [float] 323 ==== Azure Storage 324 We provide instrumentation for Azure Storage. This is usable with: 325 326 - github.com/Azure/azure-storage-blob-go/azblob[Azure Blob Storage] 327 - github.com/Azure/azure-storage-queue-go/azqueue[Azure Queue Storage] 328 - github.com/Azure/azure-storage-file-go/azfile[Azure File Storage] 329 330 See <<builtin-modules-apmazure, module/apmazure>> for more information 331 about Azure SDK Go instrumentation. 332 333 [float] 334 [[supported-tech-messaging-systems]] 335 === Messaging Systems 336 337 [float] 338 ==== Amazon SQS 339 We provide instrumentation for AWS SQS. This is usable with 340 https://github.com/aws/aws-sdk-go[AWS SDK Go]. 341 342 See <<builtin-modules-apmawssdkgo, module/apmawssdkgo>> for more information 343 about AWS SDK Go instrumentation. 344 345 [float] 346 ==== Amazon SNS 347 We provide instrumentation for AWS SNS. This is usable with 348 https://github.com/aws/aws-sdk-go[AWS SDK Go]. 349 350 See <<builtin-modules-apmawssdkgo, module/apmawssdkgo>> for more information 351 about AWS SDK Go instrumentation.