mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-10 09:39:01 +08:00
feat: make SigNoz rpc aware (#1366)
* feat: make SigNoz rpc aware * chore: update the code/method logic
This commit is contained in:
parent
8d03569a0a
commit
c3d665e119
@ -14,7 +14,7 @@ function External({ getWidget }: ExternalProps): JSX.Element {
|
|||||||
const { resourceAttributePromQLQuery } = useSelector<AppState, MetricReducer>(
|
const { resourceAttributePromQLQuery } = useSelector<AppState, MetricReducer>(
|
||||||
(state) => state.metrics,
|
(state) => state.metrics,
|
||||||
);
|
);
|
||||||
const legend = '{{http_url}}';
|
const legend = '{{address}}';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -28,7 +28,7 @@ function External({ getWidget }: ExternalProps): JSX.Element {
|
|||||||
fullViewOptions={false}
|
fullViewOptions={false}
|
||||||
widget={getWidget([
|
widget={getWidget([
|
||||||
{
|
{
|
||||||
query: `max((sum(rate(signoz_external_call_latency_count{service_name="${servicename}", status_code="STATUS_CODE_ERROR"${resourceAttributePromQLQuery}}[5m]) OR rate(signoz_external_call_latency_count{service_name="${servicename}", http_status_code=~"5.."${resourceAttributePromQLQuery}}[5m]) OR vector(0)) by (http_url))*100/sum(rate(signoz_external_call_latency_count{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (http_url)) < 1000 OR vector(0)`,
|
query: `max((sum(rate(signoz_external_call_latency_count{service_name="${servicename}", status_code="STATUS_CODE_ERROR"${resourceAttributePromQLQuery}}[5m]) OR vector(0)) by (address))*100/sum(rate(signoz_external_call_latency_count{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (address)) < 1000 OR vector(0)`,
|
||||||
legend: 'External Call Error Percentage',
|
legend: 'External Call Error Percentage',
|
||||||
},
|
},
|
||||||
])}
|
])}
|
||||||
@ -68,7 +68,7 @@ function External({ getWidget }: ExternalProps): JSX.Element {
|
|||||||
fullViewOptions={false}
|
fullViewOptions={false}
|
||||||
widget={getWidget([
|
widget={getWidget([
|
||||||
{
|
{
|
||||||
query: `sum(rate(signoz_external_call_latency_count{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (http_url)`,
|
query: `sum(rate(signoz_external_call_latency_count{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (address)`,
|
||||||
legend,
|
legend,
|
||||||
},
|
},
|
||||||
])}
|
])}
|
||||||
@ -87,7 +87,7 @@ function External({ getWidget }: ExternalProps): JSX.Element {
|
|||||||
fullViewOptions={false}
|
fullViewOptions={false}
|
||||||
widget={getWidget([
|
widget={getWidget([
|
||||||
{
|
{
|
||||||
query: `(sum(rate(signoz_external_call_latency_sum{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (http_url))/(sum(rate(signoz_external_call_latency_count{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (http_url))`,
|
query: `(sum(rate(signoz_external_call_latency_sum{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (address))/(sum(rate(signoz_external_call_latency_count{service_name="${servicename}"${resourceAttributePromQLQuery}}[5m])) by (address))`,
|
||||||
legend,
|
legend,
|
||||||
},
|
},
|
||||||
])}
|
])}
|
||||||
|
@ -9,7 +9,9 @@ export const AllTraceFilterEnum: TraceFilterEnum[] = [
|
|||||||
'serviceName',
|
'serviceName',
|
||||||
'operation',
|
'operation',
|
||||||
'component',
|
'component',
|
||||||
'httpCode',
|
'rpcMethod',
|
||||||
|
'responseStatusCode',
|
||||||
|
// 'httpCode',
|
||||||
'httpHost',
|
'httpHost',
|
||||||
'httpMethod',
|
'httpMethod',
|
||||||
'httpRoute',
|
'httpRoute',
|
||||||
|
@ -38,6 +38,14 @@ export const groupBy: Dropdown[] = [
|
|||||||
displayValue: 'HTTP status code',
|
displayValue: 'HTTP status code',
|
||||||
key: 'httpCode',
|
key: 'httpCode',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
displayValue: 'RPC Method',
|
||||||
|
key: 'rpcMethod',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayValue: 'Status Code',
|
||||||
|
key: 'responseStatusCode',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
displayValue: 'Database name',
|
displayValue: 'Database name',
|
||||||
key: 'dbName',
|
key: 'dbName',
|
||||||
|
@ -64,6 +64,8 @@ const initialValue: TraceReducer = {
|
|||||||
['httpMethod', INITIAL_FILTER_VALUE],
|
['httpMethod', INITIAL_FILTER_VALUE],
|
||||||
['httpUrl', INITIAL_FILTER_VALUE],
|
['httpUrl', INITIAL_FILTER_VALUE],
|
||||||
['operation', INITIAL_FILTER_VALUE],
|
['operation', INITIAL_FILTER_VALUE],
|
||||||
|
['rpcMethod', INITIAL_FILTER_VALUE],
|
||||||
|
['responseStatusCode', INITIAL_FILTER_VALUE],
|
||||||
['serviceName', INITIAL_FILTER_VALUE],
|
['serviceName', INITIAL_FILTER_VALUE],
|
||||||
['status', INITIAL_FILTER_VALUE],
|
['status', INITIAL_FILTER_VALUE],
|
||||||
]),
|
]),
|
||||||
|
@ -69,7 +69,9 @@ export type TraceFilterEnum =
|
|||||||
| 'httpUrl'
|
| 'httpUrl'
|
||||||
| 'operation'
|
| 'operation'
|
||||||
| 'serviceName'
|
| 'serviceName'
|
||||||
| 'status';
|
| 'status'
|
||||||
|
| 'responseStatusCode'
|
||||||
|
| 'rpcMethod';
|
||||||
|
|
||||||
export const AllPanelHeading: {
|
export const AllPanelHeading: {
|
||||||
key: TraceFilterEnum;
|
key: TraceFilterEnum;
|
||||||
@ -107,6 +109,14 @@ export const AllPanelHeading: {
|
|||||||
key: 'operation',
|
key: 'operation',
|
||||||
displayValue: 'Operation',
|
displayValue: 'Operation',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: 'responseStatusCode',
|
||||||
|
displayValue: 'Status Code',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'rpcMethod',
|
||||||
|
displayValue: 'RPC Method',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
key: 'serviceName',
|
key: 'serviceName',
|
||||||
displayValue: 'Service Name',
|
displayValue: 'Service Name',
|
||||||
|
@ -1348,6 +1348,12 @@ func (r *ClickHouseReader) GetSpanFilters(ctx context.Context, queryParams *mode
|
|||||||
if len(queryParams.Operation) > 0 {
|
if len(queryParams.Operation) > 0 {
|
||||||
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
||||||
}
|
}
|
||||||
|
if len(queryParams.RPCMethod) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.RPCMethod, constants.RPCMethod, &query, args)
|
||||||
|
}
|
||||||
|
if len(queryParams.ResponseStatusCode) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.ResponseStatusCode, constants.ResponseStatusCode, &query, args)
|
||||||
|
}
|
||||||
|
|
||||||
if len(queryParams.MinDuration) != 0 {
|
if len(queryParams.MinDuration) != 0 {
|
||||||
query = query + " AND durationNano >= @durationNanoMin"
|
query = query + " AND durationNano >= @durationNanoMin"
|
||||||
@ -1361,16 +1367,18 @@ func (r *ClickHouseReader) GetSpanFilters(ctx context.Context, queryParams *mode
|
|||||||
query = getStatusFilters(query, queryParams.Status, excludeMap)
|
query = getStatusFilters(query, queryParams.Status, excludeMap)
|
||||||
|
|
||||||
traceFilterReponse := model.SpanFiltersResponse{
|
traceFilterReponse := model.SpanFiltersResponse{
|
||||||
Status: map[string]uint64{},
|
Status: map[string]uint64{},
|
||||||
Duration: map[string]uint64{},
|
Duration: map[string]uint64{},
|
||||||
ServiceName: map[string]uint64{},
|
ServiceName: map[string]uint64{},
|
||||||
Operation: map[string]uint64{},
|
Operation: map[string]uint64{},
|
||||||
HttpCode: map[string]uint64{},
|
ResponseStatusCode: map[string]uint64{},
|
||||||
HttpMethod: map[string]uint64{},
|
RPCMethod: map[string]uint64{},
|
||||||
HttpUrl: map[string]uint64{},
|
HttpCode: map[string]uint64{},
|
||||||
HttpRoute: map[string]uint64{},
|
HttpMethod: map[string]uint64{},
|
||||||
HttpHost: map[string]uint64{},
|
HttpUrl: map[string]uint64{},
|
||||||
Component: map[string]uint64{},
|
HttpRoute: map[string]uint64{},
|
||||||
|
HttpHost: map[string]uint64{},
|
||||||
|
Component: map[string]uint64{},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, e := range queryParams.GetFilters {
|
for _, e := range queryParams.GetFilters {
|
||||||
@ -1571,6 +1579,42 @@ func (r *ClickHouseReader) GetSpanFilters(ctx context.Context, queryParams *mode
|
|||||||
if len(dBResponse2) > 0 {
|
if len(dBResponse2) > 0 {
|
||||||
traceFilterReponse.Duration["maxDuration"] = dBResponse2[0].NumTotal
|
traceFilterReponse.Duration["maxDuration"] = dBResponse2[0].NumTotal
|
||||||
}
|
}
|
||||||
|
case constants.RPCMethod:
|
||||||
|
finalQuery := fmt.Sprintf("SELECT rpcMethod, count() as count FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", r.traceDB, r.indexTable)
|
||||||
|
finalQuery += query
|
||||||
|
finalQuery += " GROUP BY rpcMethod"
|
||||||
|
var dBResponse []model.DBResponseRPCMethod
|
||||||
|
err := r.db.Select(ctx, &dBResponse, finalQuery, args...)
|
||||||
|
zap.S().Info(finalQuery)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
zap.S().Debug("Error in processing sql query: ", err)
|
||||||
|
return nil, &model.ApiError{Typ: model.ErrorExec, Err: fmt.Errorf("error in processing sql query: %s", err)}
|
||||||
|
}
|
||||||
|
for _, service := range dBResponse {
|
||||||
|
if service.RPCMethod != "" {
|
||||||
|
traceFilterReponse.RPCMethod[service.RPCMethod] = service.Count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case constants.ResponseStatusCode:
|
||||||
|
finalQuery := fmt.Sprintf("SELECT responseStatusCode, count() as count FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", r.traceDB, r.indexTable)
|
||||||
|
finalQuery += query
|
||||||
|
finalQuery += " GROUP BY responseStatusCode"
|
||||||
|
var dBResponse []model.DBResponseStatusCodeMethod
|
||||||
|
err := r.db.Select(ctx, &dBResponse, finalQuery, args...)
|
||||||
|
zap.S().Info(finalQuery)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
zap.S().Debug("Error in processing sql query: ", err)
|
||||||
|
return nil, &model.ApiError{Typ: model.ErrorExec, Err: fmt.Errorf("error in processing sql query: %s", err)}
|
||||||
|
}
|
||||||
|
for _, service := range dBResponse {
|
||||||
|
if service.ResponseStatusCode != "" {
|
||||||
|
traceFilterReponse.ResponseStatusCode[service.ResponseStatusCode] = service.Count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, &model.ApiError{Typ: model.ErrorBadData, Err: fmt.Errorf("filter type: %s not supported", e)}
|
return nil, &model.ApiError{Typ: model.ErrorBadData, Err: fmt.Errorf("filter type: %s not supported", e)}
|
||||||
}
|
}
|
||||||
@ -1639,6 +1683,14 @@ func (r *ClickHouseReader) GetFilteredSpans(ctx context.Context, queryParams *mo
|
|||||||
if len(queryParams.Operation) > 0 {
|
if len(queryParams.Operation) > 0 {
|
||||||
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
||||||
}
|
}
|
||||||
|
if len(queryParams.RPCMethod) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.RPCMethod, constants.RPCMethod, &query, args)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(queryParams.ResponseStatusCode) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.ResponseStatusCode, constants.ResponseStatusCode, &query, args)
|
||||||
|
}
|
||||||
|
|
||||||
if len(queryParams.MinDuration) != 0 {
|
if len(queryParams.MinDuration) != 0 {
|
||||||
query = query + " AND durationNano >= @durationNanoMin"
|
query = query + " AND durationNano >= @durationNanoMin"
|
||||||
args = append(args, clickhouse.Named("durationNanoMin", queryParams.MinDuration))
|
args = append(args, clickhouse.Named("durationNanoMin", queryParams.MinDuration))
|
||||||
@ -1698,17 +1750,17 @@ func (r *ClickHouseReader) GetFilteredSpans(ctx context.Context, queryParams *mo
|
|||||||
|
|
||||||
var getFilterSpansResponseItems []model.GetFilterSpansResponseItem
|
var getFilterSpansResponseItems []model.GetFilterSpansResponseItem
|
||||||
|
|
||||||
baseQuery := fmt.Sprintf("SELECT timestamp, spanID, traceID, serviceName, name, durationNano, httpCode, gRPCCode, gRPCMethod, httpMethod FROM %s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryTable)
|
baseQuery := fmt.Sprintf("SELECT timestamp, spanID, traceID, serviceName, name, durationNano, httpCode, gRPCCode, gRPCMethod, httpMethod, rpcMethod, responseStatusCode FROM %s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryTable)
|
||||||
baseQuery += query
|
baseQuery += query
|
||||||
err := r.db.Select(ctx, &getFilterSpansResponseItems, baseQuery, args...)
|
err := r.db.Select(ctx, &getFilterSpansResponseItems, baseQuery, args...)
|
||||||
// Fill status and method
|
// Fill status and method
|
||||||
for i, e := range getFilterSpansResponseItems {
|
for i, e := range getFilterSpansResponseItems {
|
||||||
if e.HttpCode == "" {
|
if e.GRPCode != "" {
|
||||||
getFilterSpansResponseItems[i].StatusCode = e.GRPCode
|
getFilterSpansResponseItems[i].StatusCode = e.GRPCode
|
||||||
} else {
|
} else {
|
||||||
getFilterSpansResponseItems[i].StatusCode = e.HttpCode
|
getFilterSpansResponseItems[i].StatusCode = e.HttpCode
|
||||||
}
|
}
|
||||||
if e.HttpMethod == "" {
|
if e.GRPMethod != "" {
|
||||||
getFilterSpansResponseItems[i].Method = e.GRPMethod
|
getFilterSpansResponseItems[i].Method = e.GRPMethod
|
||||||
} else {
|
} else {
|
||||||
getFilterSpansResponseItems[i].Method = e.HttpMethod
|
getFilterSpansResponseItems[i].Method = e.HttpMethod
|
||||||
@ -1821,6 +1873,12 @@ func (r *ClickHouseReader) GetTagFilters(ctx context.Context, queryParams *model
|
|||||||
if len(queryParams.Operation) > 0 {
|
if len(queryParams.Operation) > 0 {
|
||||||
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
||||||
}
|
}
|
||||||
|
if len(queryParams.RPCMethod) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.RPCMethod, constants.RPCMethod, &query, args)
|
||||||
|
}
|
||||||
|
if len(queryParams.ResponseStatusCode) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.ResponseStatusCode, constants.ResponseStatusCode, &query, args)
|
||||||
|
}
|
||||||
if len(queryParams.MinDuration) != 0 {
|
if len(queryParams.MinDuration) != 0 {
|
||||||
query = query + " AND durationNano >= @durationNanoMin"
|
query = query + " AND durationNano >= @durationNanoMin"
|
||||||
args = append(args, clickhouse.Named("durationNanoMin", queryParams.MinDuration))
|
args = append(args, clickhouse.Named("durationNanoMin", queryParams.MinDuration))
|
||||||
@ -2158,6 +2216,11 @@ func (r *ClickHouseReader) GetFilteredSpansAggregates(ctx context.Context, query
|
|||||||
query = fmt.Sprintf("SELECT toStartOfInterval(timestamp, INTERVAL %d minute) as time, dbSystem as groupBy, %s FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryParams.StepSeconds/60, aggregation_query, r.traceDB, r.indexTable)
|
query = fmt.Sprintf("SELECT toStartOfInterval(timestamp, INTERVAL %d minute) as time, dbSystem as groupBy, %s FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryParams.StepSeconds/60, aggregation_query, r.traceDB, r.indexTable)
|
||||||
case constants.Component:
|
case constants.Component:
|
||||||
query = fmt.Sprintf("SELECT toStartOfInterval(timestamp, INTERVAL %d minute) as time, component as groupBy, %s FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryParams.StepSeconds/60, aggregation_query, r.traceDB, r.indexTable)
|
query = fmt.Sprintf("SELECT toStartOfInterval(timestamp, INTERVAL %d minute) as time, component as groupBy, %s FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryParams.StepSeconds/60, aggregation_query, r.traceDB, r.indexTable)
|
||||||
|
case constants.RPCMethod:
|
||||||
|
query = fmt.Sprintf("SELECT toStartOfInterval(timestamp, INTERVAL %d minute) as time, rpcMethod as groupBy, %s FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryParams.StepSeconds/60, aggregation_query, r.traceDB, r.indexTable)
|
||||||
|
case constants.ResponseStatusCode:
|
||||||
|
query = fmt.Sprintf("SELECT toStartOfInterval(timestamp, INTERVAL %d minute) as time, responseStatusCode as groupBy, %s FROM %s.%s WHERE timestamp >= @timestampL AND timestamp <= @timestampU", queryParams.StepSeconds/60, aggregation_query, r.traceDB, r.indexTable)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, &model.ApiError{Typ: model.ErrorBadData, Err: fmt.Errorf("groupBy type: %s not supported", queryParams.GroupBy)}
|
return nil, &model.ApiError{Typ: model.ErrorBadData, Err: fmt.Errorf("groupBy type: %s not supported", queryParams.GroupBy)}
|
||||||
}
|
}
|
||||||
@ -2189,6 +2252,12 @@ func (r *ClickHouseReader) GetFilteredSpansAggregates(ctx context.Context, query
|
|||||||
if len(queryParams.Operation) > 0 {
|
if len(queryParams.Operation) > 0 {
|
||||||
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.Operation, constants.OperationDB, &query, args)
|
||||||
}
|
}
|
||||||
|
if len(queryParams.RPCMethod) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.RPCMethod, constants.RPCMethod, &query, args)
|
||||||
|
}
|
||||||
|
if len(queryParams.ResponseStatusCode) > 0 {
|
||||||
|
args = buildFilterArrayQuery(ctx, excludeMap, queryParams.ResponseStatusCode, constants.ResponseStatusCode, &query, args)
|
||||||
|
}
|
||||||
if len(queryParams.MinDuration) != 0 {
|
if len(queryParams.MinDuration) != 0 {
|
||||||
query = query + " AND durationNano >= @durationNanoMin"
|
query = query + " AND durationNano >= @durationNanoMin"
|
||||||
args = append(args, clickhouse.Named("durationNanoMin", queryParams.MinDuration))
|
args = append(args, clickhouse.Named("durationNanoMin", queryParams.MinDuration))
|
||||||
@ -2237,6 +2306,11 @@ func (r *ClickHouseReader) GetFilteredSpansAggregates(ctx context.Context, query
|
|||||||
query = query + " GROUP BY time, dbSystem as groupBy ORDER BY time"
|
query = query + " GROUP BY time, dbSystem as groupBy ORDER BY time"
|
||||||
case constants.Component:
|
case constants.Component:
|
||||||
query = query + " GROUP BY time, component as groupBy ORDER BY time"
|
query = query + " GROUP BY time, component as groupBy ORDER BY time"
|
||||||
|
case constants.RPCMethod:
|
||||||
|
query = query + " GROUP BY time, rpcMethod as groupBy ORDER BY time"
|
||||||
|
case constants.ResponseStatusCode:
|
||||||
|
query = query + " GROUP BY time, responseStatusCode as groupBy ORDER BY time"
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, &model.ApiError{Typ: model.ErrorBadData, Err: fmt.Errorf("groupBy type: %s not supported", queryParams.GroupBy)}
|
return nil, &model.ApiError{Typ: model.ErrorBadData, Err: fmt.Errorf("groupBy type: %s not supported", queryParams.GroupBy)}
|
||||||
}
|
}
|
||||||
|
@ -38,33 +38,35 @@ var AmChannelApiPath = GetOrDefaultEnv("ALERTMANAGER_API_CHANNEL_PATH", "v1/rout
|
|||||||
var RELATIONAL_DATASOURCE_PATH = GetOrDefaultEnv("SIGNOZ_LOCAL_DB_PATH", "/var/lib/signoz/signoz.db")
|
var RELATIONAL_DATASOURCE_PATH = GetOrDefaultEnv("SIGNOZ_LOCAL_DB_PATH", "/var/lib/signoz/signoz.db")
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ServiceName = "serviceName"
|
ServiceName = "serviceName"
|
||||||
HttpRoute = "httpRoute"
|
HttpRoute = "httpRoute"
|
||||||
HttpCode = "httpCode"
|
HttpCode = "httpCode"
|
||||||
HttpHost = "httpHost"
|
HttpHost = "httpHost"
|
||||||
HttpUrl = "httpUrl"
|
HttpUrl = "httpUrl"
|
||||||
HttpMethod = "httpMethod"
|
HttpMethod = "httpMethod"
|
||||||
Component = "component"
|
Component = "component"
|
||||||
OperationDB = "name"
|
OperationDB = "name"
|
||||||
OperationRequest = "operation"
|
OperationRequest = "operation"
|
||||||
Status = "status"
|
Status = "status"
|
||||||
Duration = "duration"
|
Duration = "duration"
|
||||||
DBName = "dbName"
|
DBName = "dbName"
|
||||||
DBOperation = "dbOperation"
|
DBOperation = "dbOperation"
|
||||||
DBSystem = "dbSystem"
|
DBSystem = "dbSystem"
|
||||||
MsgSystem = "msgSystem"
|
MsgSystem = "msgSystem"
|
||||||
MsgOperation = "msgOperation"
|
MsgOperation = "msgOperation"
|
||||||
Timestamp = "timestamp"
|
Timestamp = "timestamp"
|
||||||
Descending = "descending"
|
RPCMethod = "rpcMethod"
|
||||||
Ascending = "ascending"
|
ResponseStatusCode = "responseStatusCode"
|
||||||
ContextTimeout = 60 // seconds
|
Descending = "descending"
|
||||||
StatusPending = "pending"
|
Ascending = "ascending"
|
||||||
StatusFailed = "failed"
|
ContextTimeout = 60 // seconds
|
||||||
StatusSuccess = "success"
|
StatusPending = "pending"
|
||||||
ExceptionType = "exceptionType"
|
StatusFailed = "failed"
|
||||||
ExceptionCount = "exceptionCount"
|
StatusSuccess = "success"
|
||||||
LastSeen = "lastSeen"
|
ExceptionType = "exceptionType"
|
||||||
FirstSeen = "firstSeen"
|
ExceptionCount = "exceptionCount"
|
||||||
|
LastSeen = "lastSeen"
|
||||||
|
FirstSeen = "firstSeen"
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
SIGNOZ_METRIC_DBNAME = "signoz_metrics"
|
SIGNOZ_METRIC_DBNAME = "signoz_metrics"
|
||||||
|
@ -181,94 +181,102 @@ type TagQuery struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type GetFilteredSpansParams struct {
|
type GetFilteredSpansParams struct {
|
||||||
ServiceName []string `json:"serviceName"`
|
ServiceName []string `json:"serviceName"`
|
||||||
Operation []string `json:"operation"`
|
Operation []string `json:"operation"`
|
||||||
Kind string `json:"kind"`
|
Kind string `json:"kind"`
|
||||||
Status []string `json:"status"`
|
Status []string `json:"status"`
|
||||||
HttpRoute []string `json:"httpRoute"`
|
HttpRoute []string `json:"httpRoute"`
|
||||||
HttpCode []string `json:"httpCode"`
|
HttpCode []string `json:"httpCode"`
|
||||||
HttpUrl []string `json:"httpUrl"`
|
HttpUrl []string `json:"httpUrl"`
|
||||||
HttpHost []string `json:"httpHost"`
|
HttpHost []string `json:"httpHost"`
|
||||||
HttpMethod []string `json:"httpMethod"`
|
HttpMethod []string `json:"httpMethod"`
|
||||||
Component []string `json:"component"`
|
Component []string `json:"component"`
|
||||||
StartStr string `json:"start"`
|
RPCMethod []string `json:"rpcMethod"`
|
||||||
EndStr string `json:"end"`
|
ResponseStatusCode []string `json:"responseStatusCode"`
|
||||||
MinDuration string `json:"minDuration"`
|
StartStr string `json:"start"`
|
||||||
MaxDuration string `json:"maxDuration"`
|
EndStr string `json:"end"`
|
||||||
Limit int64 `json:"limit"`
|
MinDuration string `json:"minDuration"`
|
||||||
OrderParam string `json:"orderParam"`
|
MaxDuration string `json:"maxDuration"`
|
||||||
Order string `json:"order"`
|
Limit int64 `json:"limit"`
|
||||||
Offset int64 `json:"offset"`
|
OrderParam string `json:"orderParam"`
|
||||||
Tags []TagQuery `json:"tags"`
|
Order string `json:"order"`
|
||||||
Exclude []string `json:"exclude"`
|
Offset int64 `json:"offset"`
|
||||||
Start *time.Time
|
Tags []TagQuery `json:"tags"`
|
||||||
End *time.Time
|
Exclude []string `json:"exclude"`
|
||||||
|
Start *time.Time
|
||||||
|
End *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetFilteredSpanAggregatesParams struct {
|
type GetFilteredSpanAggregatesParams struct {
|
||||||
ServiceName []string `json:"serviceName"`
|
ServiceName []string `json:"serviceName"`
|
||||||
Operation []string `json:"operation"`
|
Operation []string `json:"operation"`
|
||||||
Kind string `json:"kind"`
|
Kind string `json:"kind"`
|
||||||
Status []string `json:"status"`
|
Status []string `json:"status"`
|
||||||
HttpRoute []string `json:"httpRoute"`
|
HttpRoute []string `json:"httpRoute"`
|
||||||
HttpCode []string `json:"httpCode"`
|
HttpCode []string `json:"httpCode"`
|
||||||
HttpUrl []string `json:"httpUrl"`
|
HttpUrl []string `json:"httpUrl"`
|
||||||
HttpHost []string `json:"httpHost"`
|
HttpHost []string `json:"httpHost"`
|
||||||
HttpMethod []string `json:"httpMethod"`
|
HttpMethod []string `json:"httpMethod"`
|
||||||
Component []string `json:"component"`
|
Component []string `json:"component"`
|
||||||
MinDuration string `json:"minDuration"`
|
RPCMethod []string `json:"rpcMethod"`
|
||||||
MaxDuration string `json:"maxDuration"`
|
ResponseStatusCode []string `json:"responseStatusCode"`
|
||||||
Tags []TagQuery `json:"tags"`
|
MinDuration string `json:"minDuration"`
|
||||||
StartStr string `json:"start"`
|
MaxDuration string `json:"maxDuration"`
|
||||||
EndStr string `json:"end"`
|
Tags []TagQuery `json:"tags"`
|
||||||
StepSeconds int `json:"step"`
|
StartStr string `json:"start"`
|
||||||
Dimension string `json:"dimension"`
|
EndStr string `json:"end"`
|
||||||
AggregationOption string `json:"aggregationOption"`
|
StepSeconds int `json:"step"`
|
||||||
GroupBy string `json:"groupBy"`
|
Dimension string `json:"dimension"`
|
||||||
Function string `json:"function"`
|
AggregationOption string `json:"aggregationOption"`
|
||||||
Exclude []string `json:"exclude"`
|
GroupBy string `json:"groupBy"`
|
||||||
Start *time.Time
|
Function string `json:"function"`
|
||||||
End *time.Time
|
Exclude []string `json:"exclude"`
|
||||||
|
Start *time.Time
|
||||||
|
End *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type SpanFilterParams struct {
|
type SpanFilterParams struct {
|
||||||
Status []string `json:"status"`
|
Status []string `json:"status"`
|
||||||
ServiceName []string `json:"serviceName"`
|
ServiceName []string `json:"serviceName"`
|
||||||
HttpRoute []string `json:"httpRoute"`
|
HttpRoute []string `json:"httpRoute"`
|
||||||
HttpCode []string `json:"httpCode"`
|
HttpCode []string `json:"httpCode"`
|
||||||
HttpUrl []string `json:"httpUrl"`
|
HttpUrl []string `json:"httpUrl"`
|
||||||
HttpHost []string `json:"httpHost"`
|
HttpHost []string `json:"httpHost"`
|
||||||
HttpMethod []string `json:"httpMethod"`
|
HttpMethod []string `json:"httpMethod"`
|
||||||
Component []string `json:"component"`
|
Component []string `json:"component"`
|
||||||
Operation []string `json:"operation"`
|
Operation []string `json:"operation"`
|
||||||
GetFilters []string `json:"getFilters"`
|
RPCMethod []string `json:"rpcMethod"`
|
||||||
Exclude []string `json:"exclude"`
|
ResponseStatusCode []string `json:"responseStatusCode"`
|
||||||
MinDuration string `json:"minDuration"`
|
GetFilters []string `json:"getFilters"`
|
||||||
MaxDuration string `json:"maxDuration"`
|
Exclude []string `json:"exclude"`
|
||||||
StartStr string `json:"start"`
|
MinDuration string `json:"minDuration"`
|
||||||
EndStr string `json:"end"`
|
MaxDuration string `json:"maxDuration"`
|
||||||
Start *time.Time
|
StartStr string `json:"start"`
|
||||||
End *time.Time
|
EndStr string `json:"end"`
|
||||||
|
Start *time.Time
|
||||||
|
End *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type TagFilterParams struct {
|
type TagFilterParams struct {
|
||||||
Status []string `json:"status"`
|
Status []string `json:"status"`
|
||||||
ServiceName []string `json:"serviceName"`
|
ServiceName []string `json:"serviceName"`
|
||||||
HttpRoute []string `json:"httpRoute"`
|
HttpRoute []string `json:"httpRoute"`
|
||||||
HttpCode []string `json:"httpCode"`
|
HttpCode []string `json:"httpCode"`
|
||||||
HttpUrl []string `json:"httpUrl"`
|
HttpUrl []string `json:"httpUrl"`
|
||||||
HttpHost []string `json:"httpHost"`
|
HttpHost []string `json:"httpHost"`
|
||||||
HttpMethod []string `json:"httpMethod"`
|
HttpMethod []string `json:"httpMethod"`
|
||||||
Component []string `json:"component"`
|
Component []string `json:"component"`
|
||||||
Operation []string `json:"operation"`
|
Operation []string `json:"operation"`
|
||||||
Exclude []string `json:"exclude"`
|
RPCMethod []string `json:"rpcMethod"`
|
||||||
MinDuration string `json:"minDuration"`
|
ResponseStatusCode []string `json:"responseStatusCode"`
|
||||||
MaxDuration string `json:"maxDuration"`
|
Exclude []string `json:"exclude"`
|
||||||
StartStr string `json:"start"`
|
MinDuration string `json:"minDuration"`
|
||||||
EndStr string `json:"end"`
|
MaxDuration string `json:"maxDuration"`
|
||||||
TagKey string `json:"tagKey"`
|
StartStr string `json:"start"`
|
||||||
Start *time.Time
|
EndStr string `json:"end"`
|
||||||
End *time.Time
|
TagKey string `json:"tagKey"`
|
||||||
|
Start *time.Time
|
||||||
|
End *time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type TTLParams struct {
|
type TTLParams struct {
|
||||||
|
@ -118,18 +118,20 @@ type SearchSpansResult struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type GetFilterSpansResponseItem struct {
|
type GetFilterSpansResponseItem struct {
|
||||||
Timestamp time.Time `ch:"timestamp" json:"timestamp"`
|
Timestamp time.Time `ch:"timestamp" json:"timestamp"`
|
||||||
SpanID string `ch:"spanID" json:"spanID"`
|
SpanID string `ch:"spanID" json:"spanID"`
|
||||||
TraceID string `ch:"traceID" json:"traceID"`
|
TraceID string `ch:"traceID" json:"traceID"`
|
||||||
ServiceName string `ch:"serviceName" json:"serviceName"`
|
ServiceName string `ch:"serviceName" json:"serviceName"`
|
||||||
Operation string `ch:"name" json:"operation"`
|
Operation string `ch:"name" json:"operation"`
|
||||||
DurationNano uint64 `ch:"durationNano" json:"durationNano"`
|
DurationNano uint64 `ch:"durationNano" json:"durationNano"`
|
||||||
HttpCode string `ch:"httpCode"`
|
HttpCode string `ch:"httpCode"`
|
||||||
HttpMethod string `ch:"httpMethod"`
|
HttpMethod string `ch:"httpMethod"`
|
||||||
GRPCode string `ch:"gRPCCode"`
|
GRPCode string `ch:"gRPCCode"`
|
||||||
GRPMethod string `ch:"gRPCMethod"`
|
GRPMethod string `ch:"gRPCMethod"`
|
||||||
StatusCode string `json:"statusCode"`
|
StatusCode string `json:"statusCode"`
|
||||||
Method string `json:"method"`
|
Method string `json:"method"`
|
||||||
|
ResponseStatusCode string `ch:"responseStatusCode"`
|
||||||
|
RPCMethod string `ch:"rpcMethod"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetFilterSpansResponse struct {
|
type GetFilterSpansResponse struct {
|
||||||
@ -303,6 +305,16 @@ type DBResponseHttpMethod struct {
|
|||||||
Count uint64 `ch:"count"`
|
Count uint64 `ch:"count"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DBResponseStatusCodeMethod struct {
|
||||||
|
ResponseStatusCode string `ch:"responseStatusCode"`
|
||||||
|
Count uint64 `ch:"count"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DBResponseRPCMethod struct {
|
||||||
|
RPCMethod string `ch:"rpcMethod"`
|
||||||
|
Count uint64 `ch:"count"`
|
||||||
|
}
|
||||||
|
|
||||||
type DBResponseHttpHost struct {
|
type DBResponseHttpHost struct {
|
||||||
HttpHost string `ch:"httpHost"`
|
HttpHost string `ch:"httpHost"`
|
||||||
Count uint64 `ch:"count"`
|
Count uint64 `ch:"count"`
|
||||||
@ -323,16 +335,18 @@ type DBResponseTotal struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type SpanFiltersResponse struct {
|
type SpanFiltersResponse struct {
|
||||||
ServiceName map[string]uint64 `json:"serviceName"`
|
ServiceName map[string]uint64 `json:"serviceName"`
|
||||||
Status map[string]uint64 `json:"status"`
|
Status map[string]uint64 `json:"status"`
|
||||||
Duration map[string]uint64 `json:"duration"`
|
Duration map[string]uint64 `json:"duration"`
|
||||||
Operation map[string]uint64 `json:"operation"`
|
Operation map[string]uint64 `json:"operation"`
|
||||||
HttpCode map[string]uint64 `json:"httpCode"`
|
HttpCode map[string]uint64 `json:"httpCode"`
|
||||||
HttpUrl map[string]uint64 `json:"httpUrl"`
|
ResponseStatusCode map[string]uint64 `json:"responseStatusCode"`
|
||||||
HttpMethod map[string]uint64 `json:"httpMethod"`
|
RPCMethod map[string]uint64 `json:"rpcMethod"`
|
||||||
HttpRoute map[string]uint64 `json:"httpRoute"`
|
HttpUrl map[string]uint64 `json:"httpUrl"`
|
||||||
HttpHost map[string]uint64 `json:"httpHost"`
|
HttpMethod map[string]uint64 `json:"httpMethod"`
|
||||||
Component map[string]uint64 `json:"component"`
|
HttpRoute map[string]uint64 `json:"httpRoute"`
|
||||||
|
HttpHost map[string]uint64 `json:"httpHost"`
|
||||||
|
Component map[string]uint64 `json:"component"`
|
||||||
}
|
}
|
||||||
type Error struct {
|
type Error struct {
|
||||||
ExceptionType string `json:"exceptionType" ch:"exceptionType"`
|
ExceptionType string `json:"exceptionType" ch:"exceptionType"`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user