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.