Source File
observability.go
Belonging Package
contrib.go.opencensus.io/integrations/ocsql
package ocsql
import (
)
GoSQLStatus, _ = tag.NewKey("go_sql_status")
valueOK = tag.Insert(GoSQLStatus, "OK")
valueErr = tag.Insert(GoSQLStatus, "ERROR")
)
var (
MeasureLatencyMs = stats.Float64("go.sql/latency", "The latency of calls in milliseconds", stats.UnitMilliseconds)
MeasureOpenConnections = stats.Int64("go.sql/connections/open", "Count of open connections in the pool", stats.UnitDimensionless)
MeasureIdleConnections = stats.Int64("go.sql/connections/idle", "Count of idle connections in the pool", stats.UnitDimensionless)
MeasureActiveConnections = stats.Int64("go.sql/connections/active", "Count of active connections in the pool", stats.UnitDimensionless)
MeasureWaitCount = stats.Int64("go.sql/connections/wait_count", "The total number of connections waited for", stats.UnitDimensionless)
MeasureWaitDuration = stats.Float64("go.sql/connections/wait_duration", "The total time blocked waiting for a new connection", stats.UnitMilliseconds)
MeasureIdleClosed = stats.Int64("go.sql/connections/idle_closed", "The total number of connections closed due to SetMaxIdleConns", stats.UnitDimensionless)
MeasureLifetimeClosed = stats.Int64("go.sql/connections/lifetime_closed", "The total number of connections closed due to SetConnMaxLifetime", stats.UnitDimensionless)
)
var (
DefaultMillisecondsDistribution = view.Distribution(
0.0,
0.001,
0.005,
0.01,
0.05,
0.1,
0.5,
1.0,
1.5,
2.0,
2.5,
5.0,
10.0,
25.0,
50.0,
100.0,
200.0,
400.0,
600.0,
800.0,
1000.0,
1500.0,
2000.0,
2500.0,
5000.0,
10000.0,
20000.0,
40000.0,
100000.0,
200000.0,
500000.0)
)
var (
SQLClientLatencyView = &view.View{
Name: "go.sql/client/latency",
Description: "The distribution of latencies of various calls in milliseconds",
Measure: MeasureLatencyMs,
Aggregation: DefaultMillisecondsDistribution,
TagKeys: []tag.Key{GoSQLMethod, GoSQLError, GoSQLStatus},
}
SQLClientCallsView = &view.View{
Name: "go.sql/client/calls",
Description: "The number of various calls of methods",
Measure: MeasureLatencyMs,
Aggregation: view.Count(),
TagKeys: []tag.Key{GoSQLMethod, GoSQLError, GoSQLStatus},
}
SQLClientOpenConnectionsView = &view.View{
Name: "go.sql/db/connections/open",
Description: "The number of open connections",
Measure: MeasureOpenConnections,
Aggregation: view.LastValue(),
}
SQLClientIdleConnectionsView = &view.View{
Name: "go.sql/db/connections/idle",
Description: "The number of idle connections",
Measure: MeasureIdleConnections,
Aggregation: view.LastValue(),
}
SQLClientActiveConnectionsView = &view.View{
Name: "go.sql/db/connections/active",
Description: "The number of active connections",
Measure: MeasureActiveConnections,
Aggregation: view.LastValue(),
}
SQLClientWaitCountView = &view.View{
Name: "go.sql/db/connections/wait_count",
Description: "The total number of connections waited for",
Measure: MeasureWaitCount,
Aggregation: view.LastValue(),
}
SQLClientWaitDurationView = &view.View{
Name: "go.sql/db/connections/wait_duration",
Description: "The total time blocked waiting for a new connection",
Measure: MeasureWaitDuration,
Aggregation: view.LastValue(),
}
SQLClientIdleClosedView = &view.View{
Name: "go.sql/db/connections/idle_closed_count",
Description: "The total number of connections closed due to SetMaxIdleConns",
Measure: MeasureIdleClosed,
Aggregation: view.LastValue(),
}
SQLClientLifetimeClosedView = &view.View{
Name: "go.sql/db/connections/lifetime_closed_count",
Description: "The total number of connections closed due to SetConnMaxLifetime",
Measure: MeasureLifetimeClosed,
Aggregation: view.LastValue(),
}
DefaultViews = []*view.View{
SQLClientLatencyView, SQLClientCallsView, SQLClientOpenConnectionsView,
SQLClientIdleConnectionsView, SQLClientActiveConnectionsView,
SQLClientWaitCountView, SQLClientWaitDurationView,
SQLClientIdleClosedView, SQLClientLifetimeClosedView,
}
)
func () {
if := view.Register(DefaultViews...); != nil {
panic()
}
}
func ( context.Context, string) func( error) {
var []tag.Mutator
:= time.Now()
return func( error) {
:= float64(time.Since().Nanoseconds()) / 1e6
if != nil {
= []tag.Mutator{
tag.Insert(GoSQLMethod, ), valueErr, tag.Insert(GoSQLError, .Error()),
}
} else {
= []tag.Mutator{
tag.Insert(GoSQLMethod, ), valueOK,
}
}
_ = stats.RecordWithTags(, , MeasureLatencyMs.M())
}
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |