Merged
Conversation
The domain rows in the External APIs table are clickable (they open a detail drawer) but showed the default cursor, giving no visual affordance. Added cursor: pointer to the .expanded-clickable-row class that is already applied via onRow() in DomainList.tsx. Fixes SigNoz#9403
* feat: change the cursor to pointer on hovering domain rows * feat: external api -> domains table -> right drawer -> all the columns have same color * feat: hover style of the left tab when the right tab is active
Remove `conf/prometheus.yml` and `conf/cache-config.yml` which are legacy artifacts with zero references anywhere in the codebase.
…dler (SigNoz#10665) * feat(instrumentation): add OTel exception semantic convention log handler Add a loghandler.Wrapper that enriches error log records with OpenTelemetry exception semantic convention attributes (exception.type, exception.code, exception.message, exception.stacktrace). - Add errors.Attr() helper for standardized error logging under "exception" key - Add exception log handler that replaces raw error attrs with structured group - Wire exception handler into the instrumentation SDK logger chain - Remove LogValue() from errors.base as the handler now owns structuring * refactor: replace "error", err with errors.Attr(err) across codebase Migrate all slog error logging from ad-hoc "error", err key-value pairs to the standardized errors.Attr(err) helper, enabling the exception log handler to enrich these logs with OTel semantic convention attributes. * refactor: enforce attr-only slog style across codebase Change sloglint from kv-only to attr-only, requiring all slog calls to use typed attributes (slog.String, slog.Any, etc.) instead of key-value pairs. Convert all existing kv-style slog calls in non-excluded paths. * refactor: tighten slog.Any to specific types and standardize error attrs - Replace slog.Any with slog.String for string values (action, key, where_clause) - Replace slog.Any with slog.Uint64 for uint64 values (start, end, step, etc.) - Replace slog.Any("err", err) with errors.Attr(err) in dispatcher and segment analytics - Replace slog.Any("error", ctx.Err()) with errors.Attr in factory registry * fix(instrumentation): use Unwrapb message for exception.message Use the explicit error message (m) from Unwrapb instead of foundErr.Error(), which resolves to the inner cause's message for wrapped errors. * feat(errors): capture stacktrace at error creation time Store program counters ([]uintptr) in base errors at creation time using runtime.Callers, inspired by thanos-io/thanos/pkg/errors. The exception log handler reads the stacktrace from the error instead of capturing at log time, showing where the error originated. * fix(instrumentation): apply default log wrappers uniformly in NewLogger Move correlation, filtering, and exception wrappers into NewLogger so all call sites (including CLI loggers in cmd/) get them automatically. * refactor(instrumentation): remove variadic wrappers from NewLogger NewLogger no longer accepts arbitrary wrappers. The core wrappers (correlation, filtering, exception) are hardcoded, preventing callers from accidentally duplicating behavior. * refactor: migrate remaining "error", <var> to errors.Attr across legacy paths Replace all remaining "error", <variable> key-value pairs with errors.Attr(<variable>) in pkg/query-service/ and ee/query-service/ paths that were missed in the initial migration due to non-standard variable names (res.Err, filterErr, apiErrorObj.Err, etc). * refactor(instrumentation): use flat exception.* keys instead of nested group Use flat keys (exception.type, exception.code, exception.message, exception.stacktrace) instead of a nested slog.Group in the exception log handler.
…de.function, code.lineno (SigNoz#10667) Replace the nested `slog.Source` group with flat OTel semantic convention keys by adding a Source log handler wrapper that extracts source info from record.PC. Remove AddSource from the JSON handler since the wrapper handles it directly.
* feat(middleware): add panic recovery middleware with TypeFatal error type Add a global HTTP recovery middleware that catches panics, logs them with OTel exception semantic conventions via errors.Attr, and returns a safe user-facing error response. Introduce TypeFatal/CodeFatal for unrecoverable failures and WithStacktrace to attach pre-formatted stack traces to errors. Remove redundant per-handler panic recovery blocks in querier APIs. * style(errors): keep WithStacktrace call on same line in test * fix(middleware): replace fmt.Errorf with errors.New in recovery test * feat(middleware): add request context to panic recovery logs Capture request body before handler runs and include method, path, and body in panic recovery logs using OTel semconv attributes. Improve error message to direct users to GitHub issues or support.
* refactor(pprof): extract infrastructure provider * refactor(pprof): remove redundant exports * chore: address comments
* fix: prepend normalize pipeline * fix: don't save normalize pipeline in config
* feat: introduce user_role table * fix: golint and register migrations * fix: user types and order of update user * feat: add migration to drop role column from users table * fix: raw queries pointing to role column in users table * chore: remove storable user struct and minor other changes * chore: remove refs of calling vars as storable users * chore: user 0th role instead of highest * chore: address pr comments * chore: rename userrolestore to user_role_store * chore: return userroles with user in getter where possible * chore: move user module as user setter * chore: arrange getter and setter methods * fix: nil pointer for update user in integration test due to half payload being passed * chore: update openapi specs * fix: nil errors without making frontend changes * fix: empty array check everywhere for user roles array and minor other changes * fix: imports * fix: rebase changes * chore: renaming functions * chore: simplified getorcreateuser user setter method and call sites * fix: golint * fix: remove redundant authz migration, remove fk enforcement for drop migration * fix: add new event for user activation
* feat: adding cloud integration type for refactor * refactor: store interfaces to use local types and error * feat: adding sql store implementation * refactor: removing interface check * feat: adding updated types for cloud integration * refactor: using struct for map * refactor: update cloud integration types and module interface * fix: correct GetService signature and remove shadowed Data field * feat: implement cloud integration store * refactor: adding comments and removed wrong code * refactor: streamlining types * refactor: add comments for backward compatibility in PostableAgentCheckInRequest * refactor: update Dashboard struct comments and remove unused fields * refactor: split upsert store method * feat: adding integration test * refactor: clean up types * refactor: renaming service type to service id * refactor: using serviceID type * feat: adding method for service id creation * refactor: updating store methods * refactor: clean up * refactor: clean up * refactor: review comments * refactor: clean up * fix: update error code for service not found * refactor: returning error only for create methods * refactor: method chaining formatting
* fix: added download button in trace page * fix: update unit tests * fix: revert prepareQueryRangePayloadV5.ts * fix: addressed comments * fix: address commnets from aditya * fix: update tests
* chore: move dashboard provider from redux to zustand * chore: replace useDashboard with useDashboardStore (SigNoz#10629) * chore: derive dashboard locked state from global state (SigNoz#10645) * chore: remove usage of updatedTimeRef in dashboard provider (SigNoz#10551) * chore: removed updatedTimeRef from global store * chore: removed updatedTimeRef from global store * chore: remove dashboardQueryRangeCalled from global dashboard state (SigNoz#10650) * chore: remove dashboardQueryRangeCalled from global dashboard state * chore: cleanup dashboard page setup (SigNoz#10652) * chore: update tests from dashboard provider migration (SigNoz#10653) * chore: update tests from dashboard provider migration * chore: cleaner local storage variable update (SigNoz#10656)
Mistral AI, OpenClaw, Claude Agent SDK, and Render, update icon fetching documentation
…and /healthz (SigNoz#10671) * feat(factory): add service state tracking, AwaitHealthy, depends_on, and /healthz endpoint Add explicit lifecycle state tracking to factory.Registry services (starting/running/failed) modeled after Guava's ServiceManager. Services can declare dependencies via NewNamedService(..., dependsOn) which are validated for unknown refs and cycles at registry creation. AwaitHealthy blocks until all services reach running state. A /healthz endpoint is wired through signozapiserver returning 200/503 with per-service state. * feat(apiserver): move health endpoints to /api/v2/ and register readyz, livez * refactor(factory): use gonum for cycle detection, return error on cycles, fix test assertions Replace custom DFS cycle detection with gonum's topo.Sort + TarjanSCC. Dependency cycles now return an error from NewRegistry instead of being silently dropped. Use assert for final test assertions and require only for intermediate setup errors. * chore: go mod tidy * refactor(factory): decouple Handler from Registry, wire through Handlers struct Move Handler implementation to a private handler struct with NewHandler constructor instead of methods on *Registry. Route handler through the existing Handlers struct as RegistryHandler. Rename healthz.go to registry.go in signozapiserver. Fix handler_test.go for new param. * feat(factory): add ServiceWithHealthy interface, add Healthy to authz, user depends on authz Add ServiceWithHealthy interface embedding Service + Healthy. NamedService now delegates Healthy() to the underlying service, eliminating unwrapService. AuthZ interface requires Healthy(), implemented in both pkg and ee providers. User service declares dependency on authz via dependsOn. * test(integration): use /api/v2/healthz for readiness check, log 503 response body * fix(factory): replace fmt.Errorf with errors.Newf in tests to satisfy linter * feat: generate openapi spec * fix(integration): log errors at error level in healthz readiness check * test(integration): log and assert healthz response in test_setup * feat(user): implement ServiceWithHealthy for user service User service signals healthy after successful root user reconciliation or immediately when disabled. User Service interface now embeds factory.ServiceWithHealthy. * fix(factory): reflect service names as strings * fix(apiserver): document health 503 responses * feat: generate openapi spec
* feat: added trace export feat: added types for export feat: added support for complex queries fix: added correct open api spec fix: updated unit tests fix: type handling logic fix: improve order by feat: added integration tests fix: address comments * fix: address comments * fix: removed nits * fix: go fmt * fix: rebased main and ran generate cmd * fix: renamed method * fix: address comments * fix: lint error * fix: lint error * fix: ran yarn generate:api * fix: address comments * fix: address comments * fix: typo * fix: better names for functions * fix: added unit tests, renamed file, added validation * fix: update integration test * fix: removed get method for export * fix: yarn generate:api * chore: yarn generate:api * fix: rename file --------- Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
…ange override in list view (SigNoz#10637) * fix: updated implementation for using trace summary in list view * chore: move trace optimisation outside of statement builder * fix: lint issues * chore: update comments in integration tests * chore: remove unnecessary test * fix: py-fmt
* feat: adding cloud integration type for refactor * refactor: store interfaces to use local types and error * feat: adding sql store implementation * refactor: removing interface check * feat: adding updated types for cloud integration * refactor: using struct for map * refactor: update cloud integration types and module interface * fix: correct GetService signature and remove shadowed Data field * feat: implement cloud integration store * refactor: adding comments and removed wrong code * refactor: streamlining types * refactor: add comments for backward compatibility in PostableAgentCheckInRequest * refactor: update Dashboard struct comments and remove unused fields * refactor: split upsert store method * feat: adding integration test * refactor: clean up types * refactor: renaming service type to service id * refactor: using serviceID type * feat: adding method for service id creation * refactor: updating store methods * refactor: clean up * refactor: clean up * refactor: review comments * refactor: clean up * feat: adding handlers * fix: lint and ci issues * fix: lint issues * fix: update error code for service not found * feat: adding handler skeleton * chore: removing todo comment * feat: adding frontend openapi schema * refactor: making review changes * feat: regenerating openapi specs
…gNoz#10689) * fix(querier): return proper HTTP status for PromQL timeout errors PromQL queries hitting the context deadline were incorrectly returning 400 Bad Request with "invalid_input" because enhancePromQLError unconditionally wrapped all errors as TypeInvalidInput. Extract tryEnhancePromQLExecError to properly classify timeout, cancellation, and storage errors before falling through to parse error handling. Also make the PromQL engine timeout configurable via prometheus.timeout config (default 2m) instead of hardcoding it. * chore: refactor files * fix(prometheus): validate timeout config and fix test setups Add validation in prometheus.Config to reject zero timeout. Update all test files to explicitly set Timeout: 2 * time.Minute in prometheus.Config literals to avoid immediate query timeouts.
* fix: enrich unspecified fields * fix: return error in enrich function * chore: nit change asked
Co-authored-by: primus-bot[bot] <171087277+primus-bot[bot]@users.noreply.github.com>
* chore: add tests for trace waterfall * chore: remove unhelpful tests
* feat: user v2 apis * fix: openapi specs * chore: address review comments * fix: proper handling if invalid roles are passed * chore: address review comments * refactor: frontend to use deprecated apis after id rename * feat: separate apis for adding and deleting user role * fix: invalidate token when roles are updated * fix: openapi specs and frontend test * fix: openapi schema * fix: openapi spec and move to snakecasing for json
* fix: collapsed panels not expanding * fix: breaking logs when ordering by timestamp and not filtering on id
SigNoz#10720) * chore: reject empty aggregations in payload regardless of disabled status * chore: update tests * chore: count -> count()
* fix: all option in trace export * fix: remove the hack, user can select fields * fix: hide column selection for trace export
Co-authored-by: primus-bot[bot] <171087277+primus-bot[bot]@users.noreply.github.com> Co-authored-by: Priyanshu Shrivastava <priyanshu@signoz.io>
…oz#10748) * refactor: replace hardcoded 30m defaults with DEFAULT_TIME_RANGE * refactor: use DEFAULT_TIME_RANGE in home.tsx * revert: restore mock data before DEFAULT_TIME_RANGE changes
* chore(authz): bump up openfga version * chore(authz): fix tests * chore(authz): bump up openfga version * chore(authz): remove ee references
…pes (SigNoz#10766) * feat(audit): add Auditor interface and rename auditortypes to audittypes Add the Auditor interface in pkg/auditor/ as the contract between the HTTP handler layer and audit implementations (noop for community, OTLP for enterprise). Includes Config with buffer, batch, and flush settings following the provider pattern. Rename pkg/types/auditortypes/ to pkg/types/audittypes/ for consistency. closes SigNoz/platform-pod#1930 * refactor(audit): move endpoint config to OTLPHTTPConfig provider struct Move Endpoint out of top-level Config into a provider-specific OTLPHTTPConfig struct with full OTLP HTTP options (url_path, insecure, compression, timeout, headers, retry). Keep BufferSize, BatchSize, FlushInterval at top level as common settings across providers. closes SigNoz/platform-pod#1930 * feat(audit): add auditorbatcher for buffered event batching Add pkg/auditor/auditorbatcher/ with channel-based batching for audit events. Flushes when either batch size is reached or flush interval elapses (whichever comes first). Events are dropped when the buffer is full (fail-open). Follows the alertmanagerbatcher pattern. * refactor(audit): replace public channel with Receive method on batcher Make batchC private and expose Receive() <-chan []AuditEvent as the read-side API. Clearer contract: Add() to write, Receive() to read. * refactor(audit): rename batcher config fields to BufferSize and BatchSize Capacity → BufferSize, Size → BatchSize for clarity. * fix(audit): single-line slog call and fix log key to buffer_size * feat(audit): add OTel metrics to auditorbatcher Add telemetry via OTel MeterProvider with 4 instruments: - signoz.audit.events.emitted (counter) - signoz.audit.store.write_errors (counter, via RecordWriteError) - signoz.audit.events.dropped (counter) - signoz.audit.events.buffer_size (observable gauge) Batcher.New() now accepts metric.Meter and returns error. * refactor(audit): inject factory.ScopedProviderSettings into batcher Replace separate logger and meter params with ScopedProviderSettings, giving the batcher access to logger, meter, and tracer from one source. * feat(audit): add OTel tracing to batcher Add path Span auditorbatcher.Add with event_name attribute set at creation and audit.dropped set dynamically on buffer-full drop. * feat(audit): add export span to batcher Receive path Introduce Batch struct carrying context, events, and a trace span. Each flush starts an auditorbatcher.Export span with batch_size attribute. The consumer ends the span after export completes. * refactor(audit): replace Batch/Receive with ExportFunc callback Batcher now takes an ExportFunc at construction and manages spans internally. Removes Batch struct, Receive(), and RecordWriteError() from the public API. Span.End() is always called via defer, write errors and span status are recorded automatically on export failure. Uses errors.Attr for error logging, prefixes log keys with audit. * refactor(audit): rename auditorbatcher to auditorserver Rename package, file (batcher.go → server.go), type (Batcher → Server), and receiver (b → server) to reflect the full service role: buffering, batching, metrics, tracing, and export lifecycle management. * refactor(audit): rename telemetry to serverMetrics and document struct fields Rename type telemetry → serverMetrics and constructor newTelemetry → newServerMetrics. Add comments to all Server struct fields. * feat(audit): implement ServiceWithHealthy, fix race, add unit tests - Implement factory.ServiceWithHealthy on Server via healthyC channel - Fix data race: Start closes healthyC after goroutinesWg.Add(1), Stop waits on healthyC before closing stopC - Add 8 unit tests covering construction, start/stop lifecycle, batch-size flush, interval flush, buffer-full drop, drain on stop, export failure handling, and concurrent safety * fix(audit): fix lint issues in auditorserver and tests Use snake_case for slog keys, errors.New instead of fmt.Errorf, and check all Start/Stop return values in tests. * fix(audit): address PR review comments Use auditor:: prefix in validation error messages. Move fire-and-forget comment to the Audit method, remove interface-level comment.
* feat(audit): add noop auditor and embed ServiceWithHealthy in Auditor Embed factory.ServiceWithHealthy in the Auditor interface so all providers (noop and future OTLP HTTP) share a uniform lifecycle contract. Add pkg/auditor/noopauditor for the community edition that silently discards all events with zero allocations. * feat(audit): remove noopauditor test file
Co-authored-by: Nageshbansal <76246968+Nageshbansal@users.noreply.github.com>
* feat: enable JSON Path index * fix: contextual path index usage * test: fix unit tests
* fix: handle empty not() expression * fix: handle more cases * fix: short circuit conditions and updated unit tests * fix: revert commented code * fix: added more unit tests * fix: added integration tests * fix: make py-lint and make py-fmt * fix: moved from traces to logs for testing full text search * fix: simplify code * fix: added more unit tests * fix: addressed comments * fix: update comment Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com> * fix: update unit test Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com> * fix: update unit test Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com> * fix: instead of using true, using a skip literal * fix: unit test * fix: update integration test * fix: update unit for relevance * fix: lint error * fix: added a new literal for error condition, added more unit tests * fix: merge issues * fix: inline comments * fix: update unit tests merging from main * fix: make py-fmt and make py-lint * fix: type handling --------- Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
* chore: remove v1 metrics explorer code * chore: fix ci * chore: fix tests * chore: address review comments
* chore(lint): enable godot and staticcheck * chore(lint): merge main and fix new lint issues in main
…igNoz#10657) * fix(infra-monitoring): request loop when click to visualize volume * test(k8s-volume-list): fix tests broken due to nuqs
…g having wrong redirects (SigNoz#10738) * fix(private): issues with redirect when onboarding & workspace locked * test(app-routes): add tests for private route
…ort (SigNoz#10776) * feat(audit): add enterprise auditor with licensing gate and OTLP HTTP export Implements the enterprise auditor at ee/auditor/otlphttpauditor/. Composes auditorserver.Server for batching with licensing gate, OTel SDK LoggerProvider for InstrumentationScope, and otlploghttp exporter for OTLP HTTP transport. * fix(audit): address PR review — inline factory, move body+logrecord to audittypes - Inline NewFactory closure, remove newProviderFunc - Move buildBody to audittypes.BuildBody - Move eventToLogRecord to audittypes.ToLogRecord - go mod tidy for newly direct otel/log deps * fix(audit): address PR review round 2 - Make ToLogRecord a method on AuditEvent returning sdklog.Record - Fold buildBody into ToLogRecord as unexported helper - Remove accumulatingProcessor and LoggerProvider — export directly via otlploghttp.Exporter - Delete body.go and processor.go * fix(audit): address PR review round 3 - Merge export.go into provider.go - Add severity/severityText fields to Outcome struct - Rename buildBody to setBody method on AuditEvent - Add appendStringIfNotEmpty helper to reduce duplication * feat(audit): switch to plog + direct HTTP POST for OTLP export Replace otlploghttp.Exporter + sdklog.Record with plog data model, ProtoMarshaler, and direct HTTP POST. This properly sets InstrumentationScope.Name = "signoz.audit" and Resource attributes on the OTLP payload. * fix(audit): adopt collector otlphttpexporter pattern for HTTP export Model the send function after the OTel Collector's otlphttpexporter: - Bounded response body reads (64KB max) - Protobuf-encoded Status parsing from error responses - Proper response body draining on defer - Detailed error messages with endpoint URL and status details * refactor(audit): split export logic into export.go, add throttle retry - Move export, send, and HTTP response helpers to export.go - Add exporterhelper.NewThrottleRetry for 429/503 with Retry-After - Parse Retry-After as delay-seconds or HTTP-date per RFC 7231 - Keep provider.go focused on Auditor interface and lifecycle * feat(audit): add partial success handler and internal retry with backoff - Parse ExportLogsServiceResponse on 2xx for partial success, log warning if log records were rejected - Internal retry loop with exponential backoff for retryable status codes (429, 502, 503, 504) using RetryConfig from auditor config - Honour Retry-After header (delay-seconds and HTTP-date) - Store full auditor.Config on provider struct - Replace exporterhelper.NewThrottleRetry with local retryableError type consumed by the internal retry loop * fix(audit): fix lint — use pkg/errors, remove stdlib errors and fmt.Errorf * refactor(audit): use provider as receiver name instead of p * refactor(audit): clean up enterprise auditor implementation - Extract retry logic into retry.go - Move NewPLogsFromAuditEvents and ToLogRecord into event.go - Add ErrCodeAuditExportFailed to auditor package - Add version.Build to provider for service.version attribute - Simplify sendOnce, split response handling into onSuccess/onErr - Use PrincipalOrgID as valuer.UUID directly - Use OTLPHTTP.Endpoint as URL type - Remove gzip compression handling - Delete logrecord.go * refactor(audit): use pkg/http/client instead of bare http.Client Use the standard SigNoz HTTP client with OTel instrumentation. Disable heimdall retries (count=0) since we have our own OTLP-aware retry loop that understands Retry-After headers. * refactor(audit): use heimdall Retriable for retry instead of manual loop - Implement retrier with exponential backoff from auditor RetryConfig - Compute retry count from MaxElapsedTime and backoff intervals - Pass retrier and retry count to pkg/http/client via WithRetriable - Remove manual retry loop, retryableError type, and Retry-After parsing - Heimdall handles retries on >= 500 status codes automatically * refactor(audit): rename retry.go to retrier.go
* feat(serviceaccount): integrate service account * feat(serviceaccount): integrate service account with better types * feat(serviceaccount): fix lint and testing changes * feat(serviceaccount): update integration tests * feat(serviceaccount): fix formatting * feat(serviceaccount): fix openapi spec * feat(serviceaccount): update txlock to immediate to avoid busy snapshot errors * feat(serviceaccount): add restrictions for factor_api_key * feat(serviceaccount): add restrictions for factor_api_key * feat: enabled service account and deprecated API Keys (SigNoz#10715) * feat: enabled service account and deprecated API Keys * feat: deprecated API Keys * feat: service account spec updates and role management changes * feat: updated the error component for roles management * feat: updated test case * feat: updated the error component and added retries * feat: refactored code and added retry to happend 3 times total * feat: fixed feedbacks and added test case * feat: refactored code and removed retry * feat: updated the test cases --------- Co-authored-by: SagarRajput-7 <162284829+SagarRajput-7@users.noreply.github.com>
…apture (SigNoz#10791) * feat(audit): handler-level AuditDef and response-capturing wrapper Add declarative audit instrumentation to the handler package. Routes declare an AuditDef alongside OpenAPIDef; the handler automatically captures the response status/body and emits an audit event via auditor.Audit() after every request. * refactor(audit): move audit logic to middleware, merge with logging Move audit event emission from handler to middleware layer. The handler package keeps only the AuditDef struct and AuditDefProvider interface. The logging middleware now handles both request logging and audit event emission using a single response capture, avoiding double-wrapping. Rename badResponseLoggingWriter to responseCapture with body capture on all 4xx/5xx responses (previously only 400 and 5xx). * refactor(audit): rename Logging middleware to Audit, merge into single file Delete logging.go and merge its contents into audit.go. Rename Logging/NewLogging to Audit/NewAudit. The response.go file with responseCapture is unchanged. * refactor(audit): extract NewAuditEventFromHTTPRequest factory into audittypes Move event construction to audittypes.NewAuditEventFromHTTPRequest with an AuditEventContext struct for caller-provided fields. The audittypes layer reads only transport fields from *http.Request and has no mux, authtypes, or context dependencies. The middleware pre-extracts principal, trace, error, and route fields before calling the factory. * refactor(audit): move error parsing to render.ErrorFromBody and render.ErrorTypeFromStatusCode Add render.ErrorFromBody to extract errors.JSON from a JSON-encoded ErrorResponse body, and render.ErrorTypeFromStatusCode to reverse-map HTTP status codes to error type strings. The middleware now uses these instead of local duplicates. * refactor(audit): move AuditDef onto Handler interface, consolidate files Move AuditDef() onto the Handler interface directly. All Handler implementations now carry it: handler returns the configured def, healthOpenAPIHandler returns nil. Delete the separate AuditDefProvider interface and audit.go handler file. Move excludedRoutes check before audit emission so excluded routes skip both logging and audit. * feat(audit): add option.go with AuditDef, Option, and WithAuditDef * refactor(audit): decompose AuditEvent into attribute sub-structs, add tests Decompose flat AuditEvent fields into typed sub-structs (AuditEventAuditAttributes, PrincipalAttributes, ResourceAttributes, ErrorAttributes, TransportAttributes) each with a constructor and Put(pcommon.Map) method. Simplify NewAuditEventFromHTTPRequest to accept authtypes.Claims and oteltrace IDs directly. Simplify the middleware caller accordingly. Add unit tests for the factory, outcome boundary, and principal type derivation. * refactor(audit): shorten attribute struct names, drop error message Rename AuditEventAuditAttributes to AuditAttributes, AuditEventPrincipalAttributes to PrincipalAttributes, and likewise for Resource, Error, and Transport. The package prefix already disambiguates. Remove ErrorMessage from ErrorAttributes to avoid leaking sensitive or PII data into audit logs. Error type and code are sufficient for filtering; investigators can correlate via trace ID. * fix(audit): update auditorserver test and otlphttp provider for new struct layout Update newTestEvent in server_test.go to use nested AuditAttributes and ResourceAttributes. Update otlphttpauditor provider to access PrincipalOrgID via PrincipalAttributes. Fix godot lint on attribute section comments. * fix(audit): fix gjson path in ErrorCodeFromBody, add tests Fix ErrorCodeFromBody gjson path from "errors.code" to "error.code" to match the ErrorResponse JSON structure. Add unit tests for valid error response and invalid JSON cases. * fix(audit): add CodeUnset, use ErrorCodeFromBody in middleware Add errors.CodeUnset for responses missing an error code. Update the audit middleware to use render.ErrorCodeFromBody instead of the removed render.ErrorFromBody. * test(audit): add unit tests for responseCapture Test the four meaningful behaviors: success responses don't capture body, error responses capture body, large error bodies truncate at 4096 bytes, and 204 No Content suppresses writes entirely. * fix(audit): check rw.Write return values in response_test.go * style(audit): rename want prefix to expected in test fields * refactor(audit): replace Sprintf with strings.Builder in newBody Handle edge cases where principal email, ID, or resource ID may be empty. The builder conditionally includes each segment, avoiding empty parentheses or leading spaces in the audit body. Add test cases covering all meaningful combinations: success/failure with full/partial/empty principal, resource ID, and error details. * chore: fix formatting * chore: remove json tags * fix: rebase with main
* feat: return all spans for flamegraph under a limit * feat: increase fg limits and add timestamp boundaries * fix: set default value for ts boundary * fix: use correct value for boundary end ts * chore: change info log of flamegraph to debug
…ard (SigNoz#10778) When copying log attribute values that contain valid JSON objects or arrays, the value is now pretty-printed with 2-space indentation. This makes it easy to paste into JSON tools or editors. Non-JSON values (strings, numbers, booleans) are unaffected. Closes SigNoz#8208
* feat: adding aws service definitions in types * refactor: moving definitions to module fs
* chore: remove deprecated v3/v4 support in rules * chore: fix test * chore: fix logs * chore: fix logging * chore: fix ci * chore: address review comments
* fix: added validations for having expression * fix: added extra validation and unit tests * fix: added antlr based parsing for validation * fix: added more unit tests * fix: removed validation on having in range request validations * fix: generated lexer files and added more unit tests * fix: edge cases * fix: added cmnd to scripts for generating lexer * fix: use std libg sorting instead of selection sort * fix: support implicit and * fix: allow bare not in expression * fix: added suggestion for having expression * fix: typo * fix: added more unit tests, handle white space difference in aggregation exp and having exp * fix: added support for in and not, updated errors * fix: added support for brackets list * fix: lint error * fix: handle non spaced expression --------- Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
…igNoz#10737) * fix: warning instead of error for dormant metrics in query range API * fix: add missing else * fix: keep track of present aggregations * fix: note present aggregation after type is set * test: integration test fix and new test * chore: lint errors --------- Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
* feat: table migration * feat: ux and smoothness improved * feat: testcases and ux improve * feat: ux improve * feat: fixed settings * feat: fixed scroll issue on drag, ux issue on cols and made scrollbar same * feat: row merging header fix * feat: remove column and ux fixes * feat: scss prettier fix * feat: css and cols persistant issue * feat: cols persistant issue * feat: pr ready, styling folder and unwanted code removal * Feat/table enhancement (SigNoz#10773) * feat: add width for remaining space for col * feat: style fixes * feat: do not move state indicator in table * feat: minor changes * Feat/table enhancement (SigNoz#10795) * feat: add width for remaining space for col * feat: style fixes * feat: do not move state indicator in table * feat: minor changes * feat: memoise custom table row to reduce re-renders * feat: remove typography and add hover state to show actions * feat: add typography styles to p tag * feat: action btn style fix * feat: minor change --------- Co-authored-by: Aditya Singh <adityasinghssj1@gmail.com> Co-authored-by: Aditya Singh <aditya@signoz.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Related Issues / PR's
Screenshots
NA
Affected Areas and Manually Tested Areas