- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 main.go 中创建新的 relic 事务,并且必须将它传递给处理程序,然后传递给 Controller 等等。有没有办法可以全局定义它,然后可以在任何处理程序、 Controller 或数据库事务中访问它?
import(
"github.com/gin-gonic/gin"
newrelic "github.com/newrelic/go-agent"
)
// main.go
func newrelicHandler() (gin.HandlerFunc, newrelic.Application) {
newrelicConfig := newrelic.NewConfig("NEW_RELIC_APP_NAME", "NEW_RELIC_APP_KEY")
app, err := newrelic.NewApplication(newrelicConfig)
if err != nil {
return func(c *gin.Context) {
c.Next()
}, app
}
return func(c *gin.Context) {
txn := app.StartTransaction(c.Request.URL.Path, c.Writer, c.Request)
c.Set("newRelicTransaction", txn)
apm, ok := c.Get("newRelicTransaction")
defer txn.End()
c.Next()
}, app
}
func main() {
r := gin.New()
x, app := newrelicHandler()
r.Use(x)
}
// test/handler.go
func (t *TestHandler) Display(c *gin.Context) {
apmTxn, ok := c.Get("newRelicTransaction")
test, err := t.testCtrl.Display(apmTxn)
if err != nil {
return err
}
c.JSON(http.StatusOK, gin.H{"message": "success"})
}
// test/controller.go
func (t *TestCtrl) Display(txn interface{}) {
apmTxn, ok := txn.(newrelic.Transaction)
if !ok {
fmt.Println("ERR")
}
segment := newrelic.StartSegment(apmTxn, "SomeSegmentName")
// get data
segment.End()
return
}
最佳答案
避免使用全局上下文,而是在入口点创建一个,然后将其作为参数传递给任何需要它的函数。
您可以使用 nrgin
Gin 框架提供的包。
而在 main()
功能
newrelic.NewApplication(cfg)
nrgin.Middleware(app)
传入 newrelic 实例的函数。这将添加 Gin 事务上下文键 - newRelicTransaction
到上下文。 router.Use(nrgin.Middleware(app))
context.Context
类型参数的其他函数。自
gin.Context
只是实现
context
Go的界面。
import "github.com/newrelic/go-agent/_integrations/nrgin/v1"
func main() {
cfg := newrelic.NewConfig("Gin App", mustGetEnv("NEW_RELIC_LICENSE_KEY"))
app, err := newrelic.NewApplication(cfg)
if nil != err {
fmt.Println(err)
}
router := gin.Default()
router.Use(nrgin.Middleware(app))
router.GET("/example-get", GetController)
router.Run(":80")
}
func GetController(c *gin.Context) {
if txn := nrgin.Transaction(c); nil != txn {
txn.SetName("custom-name")
}
databaseGet(c)
c.Writer.WriteString("example response...")
}
func databaseGet(c context.Context) {
if txn := nrgin.Transaction(c); nil != txn {
txn.SetName("custom-name")
}
c.Writer.WriteString("example response...")
}
关于go - 如何在golang中为new relic(Golang New relic integration)创建通用或全局上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69523822/
我正在 main.go 中创建新的 relic 事务,并且必须将它传递给处理程序,然后传递给 Controller 等等。有没有办法可以全局定义它,然后可以在任何处理程序、 Controller
在我的服务器上的 /var/log/newrelic/php_agent.log 中,我看到这样的行: 2013-08-30 16:05:01.444 (15615/child) warning: t
New Relic有一个Java代理,它可以作为依赖项添加到应用程序中。我相信,该代理作为正在运行的JVM的一部分进行检测。检测的数据每隔一分钟从Java代理发送到New Relic服务器。。如果JV
我想要实现的目标: 我想发送使我的页面完全交互所需的时间 描述: 我使用 requirejs 作为我的 javascript 的依赖管理器,所以基本上我想发送直到我的页面脚本完全执行所花费的时间 示例
Node.js 中的 New Relic 存在问题。它似乎干扰了我的 continuation-local-storage 实现,我的意思是它似乎正在杀死我的 cls 上下文。 现在,一切都完美运行,
New Relic 如何通过简单的安装进入我的应用程序?它如何知道所有方法、请求等? 它适用于 RoR、PHP 等。 谁能解释一下它背后的技术?我有兴趣利用我的 Rails 应用程序,但我想像 New
我在 New Relic 上有一个私有(private)帐户,该帐户用于监控我们公司的内部应用程序。我也是我们公司帐户的管理员,有两个订阅计划不同的子帐户。我需要将应用程序和服务器从我的私有(priv
我正在使用新的遗留标准来防止我的 heroku 应用程序闲置。似乎每分钟左右都会发出 ping 信号。这会以任何显着的方式减慢我的应用程序吗?有没有办法减少 ping 的发生频率?寻找像 heroku
我正在使用 New Relic 插件(memcached、mongodb 等)监控一些服务。他们向我显示该服务的统计数据,但当服务中断时,New Relic 不会发出任何警报。服务统计数据中只有零。如
我目前已经将 New Relic 服务绑定(bind)到在 Bluemix 中的 Liberty 下运行的 Java 应用程序。 我们使用蓝绿色部署方法来最大限度地减少推送新版本时的停机时间,因此应用
我们在生产环境中使用 newrelic_rpm。 我将日志级别更改为调试。 每当代理向服务器发送数据时,它会显示: [11/08/11 13:58:09 +0530 mubarocks.local (
我正在使用 Nancy 的自定义代理设置,如 here 所述对于 Azure 中托管的网站。通常情况下,一切正常,但我的服务返回一些我不希望在 New Relic 中报告的 4xx 错误。不幸的是,我
我正在使用 WSRequest 类向我的 Play 网络应用程序中的外部网络服务发出请求。 这是我用来进行 SOAP 调用的一小段代码: WSRequest req = WS.url("htt
我已经在两台服务器上安装了 New Relic,两台服务器都工作正常。 我已经安装了 MySQL 插件,两者的方式完全相同,但只有 1 个出现在 New Relic 中。 据我所知,两者的配置是相同的
我想在最重要的应用程序中使用新的遗留 APM。为了监控应用程序的性能,我在 api/post.go 文件中的 createpost api 请求处理程序上方添加了代码(如 new relic 中所述)
我正在使用 Go 的 newrelic SDK 端口在 NR 中创建自定义指标。我能够创建一个新的指标来衡量我的应用程序的吞吐量,我正在尝试创建一个平均响应时间的指标。 我已经添加了必要的代码来报告(
我可以从 New Relic 监控使用 Apache 提供的静态页面吗? 也许我应该包括一个模块? 最佳答案 New Relic 现在有插件。一位出版商已经为 Apache 发布了一个插件。 . 如果
我们已成功迁移所有 PHP 和 Ruby 应用程序,以使用 New Relic RPM 进行应用程序性能测量和服务器监控。我们对结果非常满意,这使我们能够提高平台数字时间的整体性能。我们仍然有很多 P
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
https://docs.newrelic.com/docs/mobile-monitoring/new-relic-mobile-ios/configuration/upload-dsyms-bit
我是一名优秀的程序员,十分优秀!