debrand: SigNoz -> O11y across the tree (+ otel-collector v0.144.7, schema cutover migration) (#28)
* debrand: signoz/SigNoz/SIGNOZ -> o11y/O11y/O11Y across the tree Rename all SigNoz *branding* to O11y in file contents, file/dir names, package names, env vars, config keys, comments, docs, SDK code, and the ClickHouse schema identifiers the querier reads. Collector dependency: - Repoint github.com/hanzoai/signoz-otel-collector -> github.com/hanzoai/otel-collector and bump v0.144.6 -> v0.144.7 (go.mod + go.sum reconciled via go mod tidy). Internal package paths also debranded upstream: signozschemamigrator -> o11yschemamigrator, signozlogspipelineprocessor -> o11ylogspipelineprocessor. - Fix: v0.144.7 dropped otelconst.DistributedFieldKeysTable from the collector's public constants; pin FieldKeysTable = "distributed_field_keys" locally in pkg/telemetrymetadata/tables.go. Package/dir renames (package decl + all importers): pkg/apiserver/signozapiserver -> o11yapiserver, plus signozalertmanager, signozauthzapi, signozglobal, signozquerier, signozruler, and pkg/signoz -> pkg/o11y. Schema (read plane): signoz_traces/metrics/logs/metadata/analytics/meter and signoz_index_v3/index_v2/error_index_v2/spans (+ distributed_*) -> o11y_*. Data-preserving cutover migration added: deploy/clickhouse/migrations/0001_rename_signoz_to_o11y.sql (metadata-only RENAME DATABASE/TABLE, no drop/recreate). Preserved (attribution / external / wire contracts): - LICENSE + NOTICE verbatim (incl. "software from SigNoz", "Copyright ... SigNoz Inc."). - Upstream github.com/SigNoz/* repo URLs + @SigNoz/* CODEOWNERS teams. - Billing resource-attribute regex "signoz.workspace.*" (external wire contract). go build ./pkg/... ./cmd/... = 0; gofmt clean; renamed+schema pkg tests pass. * o11y: bump collector to v0.144.8 (o11y_* physical schema writer) + lockstep deploy plan Collector v0.144.8's schema-migrator + exporters now CREATE/WRITE the same o11y_* physical databases/tables the querier reads and the RENAME migration (0001_rename_signoz_to_o11y.sql) targets. Cross-checked byte-identical: writer DB set == migration target DB set (6); writer prefixed-table set == migration target table set (8); o11y querier reads and cloud reads are subsets of that set. Zero table-name mismatches between writer, readers, and migration. Collector go.mod unchanged between v0.144.7 and v0.144.8 (identical go.mod hash) — pure source rename, no module-graph change. Adds deploy/clickhouse/DEPLOY_signoz_to_o11y_cutover.md: the lockstep order (collector v0.144.8 -> RENAME migration -> o11y+cloud readers) with a fresh/scratch-ClickHouse pre-flight (create via migrator, emit trace+metric, query back) and rollback. Ships together or telemetry blackholes. go build ./pkg/... ./cmd/community = 0.
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: playwright-test-generator
|
||||
description: Use this agent to convert a SigNoz E2E test plan into Playwright spec files under `tests/e2e/tests/<feature>/`. Examples — <example>Context: A test plan exists and needs to be turned into runnable specs. user: 'Generate the dashboards list specs from the plan in tests/e2e/specs/dashboards-list-test-plan.md' assistant: 'Using the generator agent to drive each scenario in a real browser and write the corresponding Playwright tests.'</example>
|
||||
description: Use this agent to convert a O11y E2E test plan into Playwright spec files under `tests/e2e/tests/<feature>/`. Examples — <example>Context: A test plan exists and needs to be turned into runnable specs. user: 'Generate the dashboards list specs from the plan in tests/e2e/specs/dashboards-list-test-plan.md' assistant: 'Using the generator agent to drive each scenario in a real browser and write the corresponding Playwright tests.'</example>
|
||||
tools: Glob, Grep, Read, Bash, mcp__playwright-test__browser_click, mcp__playwright-test__browser_drag, mcp__playwright-test__browser_evaluate, mcp__playwright-test__browser_file_upload, mcp__playwright-test__browser_handle_dialog, mcp__playwright-test__browser_hover, mcp__playwright-test__browser_navigate, mcp__playwright-test__browser_press_key, mcp__playwright-test__browser_select_option, mcp__playwright-test__browser_snapshot, mcp__playwright-test__browser_type, mcp__playwright-test__browser_verify_element_visible, mcp__playwright-test__browser_verify_list_visible, mcp__playwright-test__browser_verify_text_visible, mcp__playwright-test__browser_verify_value, mcp__playwright-test__browser_wait_for, mcp__playwright-test__generator_read_log, mcp__playwright-test__generator_setup_page, mcp__playwright-test__generator_write_test
|
||||
model: sonnet
|
||||
color: blue
|
||||
---
|
||||
|
||||
You are the Playwright Test Generator for the SigNoz frontend. You take a plan written by `playwright-test-planner` and produce runnable Playwright specs that match the conventions documented in [docs/contributing/tests/e2e.md](../../docs/contributing/tests/e2e.md). **Read that doc first.** Adhere to it.
|
||||
You are the Playwright Test Generator for the O11y frontend. You take a plan written by `playwright-test-planner` and produce runnable Playwright specs that match the conventions documented in [docs/contributing/tests/e2e.md](../../docs/contributing/tests/e2e.md). **Read that doc first.** Adhere to it.
|
||||
|
||||
# Repo conventions you must follow
|
||||
|
||||
@@ -83,7 +83,7 @@ For a plan section:
|
||||
#### TC-01 page chrome and core controls render
|
||||
**Steps:**
|
||||
1. Navigate to `/dashboard`
|
||||
2. Verify the page title is "SigNoz | All Dashboards"
|
||||
2. Verify the page title is "O11y | All Dashboards"
|
||||
3. Verify the heading "Dashboards" is visible
|
||||
**Cleanup:** delete the seeded dashboard via API.
|
||||
```
|
||||
@@ -136,7 +136,7 @@ test.describe('Dashboards List Page', () => {
|
||||
|
||||
await gotoDashboardsList(page);
|
||||
|
||||
await expect(page).toHaveTitle('SigNoz | All Dashboards');
|
||||
await expect(page).toHaveTitle('O11y | All Dashboards');
|
||||
await expect(
|
||||
page.getByRole('heading', { name: 'Dashboards', level: 1 }),
|
||||
).toBeVisible();
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: playwright-test-healer
|
||||
description: Use this agent to debug and fix failing SigNoz E2E Playwright tests. Examples — <example>Context: A spec is red. user: 'tests/e2e/tests/dashboards/list.spec.ts is failing, fix it' assistant: 'Using the healer agent to debug each failing scenario and adjust the spec.'</example> <example>Context: After a frontend change a previously-green spec broke. user: 'TC-09 in alerts started failing' assistant: 'Launching the healer to investigate.'</example>
|
||||
description: Use this agent to debug and fix failing O11y E2E Playwright tests. Examples — <example>Context: A spec is red. user: 'tests/e2e/tests/dashboards/list.spec.ts is failing, fix it' assistant: 'Using the healer agent to debug each failing scenario and adjust the spec.'</example> <example>Context: After a frontend change a previously-green spec broke. user: 'TC-09 in alerts started failing' assistant: 'Launching the healer to investigate.'</example>
|
||||
tools: Glob, Grep, Read, Write, Edit, Bash, mcp__playwright-test__browser_console_messages, mcp__playwright-test__browser_evaluate, mcp__playwright-test__browser_generate_locator, mcp__playwright-test__browser_network_requests, mcp__playwright-test__browser_snapshot, mcp__playwright-test__test_debug, mcp__playwright-test__test_list, mcp__playwright-test__test_run
|
||||
model: sonnet
|
||||
color: red
|
||||
---
|
||||
|
||||
You are the Playwright Test Healer for the SigNoz E2E suite. You debug and fix red specs with a methodical approach. Read [docs/contributing/tests/e2e.md](../../docs/contributing/tests/e2e.md) before you start — it documents the harness and the conventions you must preserve.
|
||||
You are the Playwright Test Healer for the O11y E2E suite. You debug and fix red specs with a methodical approach. Read [docs/contributing/tests/e2e.md](../../docs/contributing/tests/e2e.md) before you start — it documents the harness and the conventions you must preserve.
|
||||
|
||||
# Preconditions
|
||||
|
||||
@@ -24,7 +24,7 @@ Don't try to start the stack yourself — it can take ~4 minutes on a cold build
|
||||
3. **Per failing test, debug.** Use `mcp__playwright-test__test_debug` to attach. When the test pauses on the error:
|
||||
- `browser_snapshot` to read the current accessibility tree.
|
||||
- `browser_console_messages` for client-side errors.
|
||||
- `browser_network_requests` for API failures (the SigNoz API requires `Authorization: Bearer <localStorage.AUTH_TOKEN>`; 401s usually mean the test bypassed the fixture).
|
||||
- `browser_network_requests` for API failures (the O11y API requires `Authorization: Bearer <localStorage.AUTH_TOKEN>`; 401s usually mean the test bypassed the fixture).
|
||||
- `browser_generate_locator` to suggest a stable locator if the failing one drifted.
|
||||
4. **Root-cause.** Distinguish between:
|
||||
- **Selector drift** — the app changed `data-testid` or text. Fix the locator. Prefer `data-testid` (grep `frontend/src/<feature-dir>/` for the new one).
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
name: playwright-test-planner
|
||||
description: Use this agent to create a comprehensive E2E test plan for a SigNoz frontend feature. Examples — <example>Context: A new feature has shipped and we need test coverage. user: 'Plan E2E tests for the alerts list page' assistant: 'I'll use the planner agent to read the relevant frontend source, navigate the page in a real browser, and produce a structured test plan.' <commentary>Test planning needs both source code understanding and live browser exploration — perfect for this agent.</commentary></example> <example>Context: User wants edge-case coverage on an existing feature. user: 'What scenarios are we missing for dashboard variables?' assistant: 'Launching the planner agent to map flows and identify gaps.'</example>
|
||||
description: Use this agent to create a comprehensive E2E test plan for a O11y frontend feature. Examples — <example>Context: A new feature has shipped and we need test coverage. user: 'Plan E2E tests for the alerts list page' assistant: 'I'll use the planner agent to read the relevant frontend source, navigate the page in a real browser, and produce a structured test plan.' <commentary>Test planning needs both source code understanding and live browser exploration — perfect for this agent.</commentary></example> <example>Context: User wants edge-case coverage on an existing feature. user: 'What scenarios are we missing for dashboard variables?' assistant: 'Launching the planner agent to map flows and identify gaps.'</example>
|
||||
tools: Glob, Grep, Read, Write, Bash, mcp__playwright-test__browser_click, mcp__playwright-test__browser_close, mcp__playwright-test__browser_console_messages, mcp__playwright-test__browser_drag, mcp__playwright-test__browser_evaluate, mcp__playwright-test__browser_file_upload, mcp__playwright-test__browser_handle_dialog, mcp__playwright-test__browser_hover, mcp__playwright-test__browser_navigate, mcp__playwright-test__browser_navigate_back, mcp__playwright-test__browser_network_requests, mcp__playwright-test__browser_press_key, mcp__playwright-test__browser_select_option, mcp__playwright-test__browser_snapshot, mcp__playwright-test__browser_take_screenshot, mcp__playwright-test__browser_type, mcp__playwright-test__browser_wait_for, mcp__playwright-test__planner_setup_page
|
||||
model: sonnet
|
||||
color: green
|
||||
---
|
||||
|
||||
You are an expert E2E test planner for the SigNoz frontend, working inside the SigNoz monorepo. Your test plans drive Playwright specs that run against the local pytest-bootstrapped backend. Read [docs/contributing/tests/e2e.md](../../docs/contributing/tests/e2e.md) before planning — it documents the harness, the `authedPage` fixture, the TC-NN naming convention, and the self-contained-state principle that every plan you write must respect.
|
||||
You are an expert E2E test planner for the O11y frontend, working inside the O11y monorepo. Your test plans drive Playwright specs that run against the local pytest-bootstrapped backend. Read [docs/contributing/tests/e2e.md](../../docs/contributing/tests/e2e.md) before planning — it documents the harness, the `authedPage` fixture, the TC-NN naming convention, and the self-contained-state principle that every plan you write must respect.
|
||||
|
||||
You will:
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ services:
|
||||
- CLICKHOUSE_SKIP_USER_SETUP=1
|
||||
networks:
|
||||
- default
|
||||
- signoz-devenv
|
||||
- o11y-devenv
|
||||
zookeeper:
|
||||
image: observe/zookeeper:3.7.1
|
||||
container_name: zookeeper
|
||||
@@ -88,8 +88,8 @@ services:
|
||||
restart: on-failure
|
||||
networks:
|
||||
- default
|
||||
- signoz-devenv
|
||||
- o11y-devenv
|
||||
|
||||
networks:
|
||||
signoz-devenv:
|
||||
name: signoz-devenv
|
||||
o11y-devenv:
|
||||
name: o11y-devenv
|
||||
|
||||
@@ -37,8 +37,8 @@ services:
|
||||
- "host.docker.internal:host-gateway"
|
||||
networks:
|
||||
- default
|
||||
- signoz-devenv
|
||||
- o11y-devenv
|
||||
|
||||
networks:
|
||||
signoz-devenv:
|
||||
name: signoz-devenv
|
||||
o11y-devenv:
|
||||
name: o11y-devenv
|
||||
@@ -23,7 +23,7 @@ assignees: ''
|
||||
3.
|
||||
|
||||
## Version information
|
||||
* **Signoz version**:
|
||||
* **O11y version**:
|
||||
* **Browser version**:
|
||||
* **Your OS and version**:
|
||||
* **Your CPU Architecture**(ARM/Intel):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<rect width="1280" height="640" fill="#0A0A0A"/>
|
||||
<svg x="96" y="215" width="210" height="210" viewBox="0 0 67 67"><path d="M22.21 67V44.6369H0V67H22.21Z" fill="#fff"/><path d="M66.7038 22.3184H22.2534L0.0878906 44.6367H44.4634L66.7038 22.3184Z" fill="#fff"/><path d="M22.21 0H0V22.3184H22.21V0Z" fill="#fff"/><path d="M66.7198 0H44.5098V22.3184H66.7198V0Z" fill="#fff"/><path d="M66.7198 67V44.6369H44.5098V67H66.7198Z" fill="#fff"/></svg>
|
||||
<text x="378" y="276" font-family="Inter,system-ui,-apple-system,sans-serif" font-size="78" font-weight="800" letter-spacing="-2" fill="#ffffff">o11y</text>
|
||||
<text x="378" y="322" font-family="Inter,system-ui,sans-serif" font-size="30" fill="#ffffff" opacity=".66">SigNoz is an open-source observability platform native to OpenTelemetry…</text>
|
||||
<text x="378" y="322" font-family="Inter,system-ui,sans-serif" font-size="30" fill="#ffffff" opacity=".66">O11y is an open-source observability platform native to OpenTelemetry…</text>
|
||||
<rect x="378" y="338" width="806" height="3" rx="1.5" fill="#ffffff" opacity=".9"/>
|
||||
<text x="378" y="390" font-family="Inter,system-ui,sans-serif" font-size="24" font-weight="600" fill="#ffffff" opacity=".5">github.com/hanzoai</text>
|
||||
<text x="1184" y="390" text-anchor="end" font-family="Inter,system-ui,sans-serif" font-size="24" font-weight="600" fill="#ffffff" opacity=".5">hanzo.ai</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
@@ -53,7 +53,7 @@ jobs:
|
||||
run: go build ./...
|
||||
|
||||
# TestEmailRejected asserts an emersion/go-smtp v0.24.0 error string that
|
||||
# upstream (wholesale-synced SigNoz) formats with quotes; skip only it.
|
||||
# upstream (wholesale-synced O11y) formats with quotes; skip only it.
|
||||
- name: go test
|
||||
working-directory: o11y
|
||||
run: go test -count=1 -skip '^TestEmailRejected$' ./...
|
||||
|
||||
@@ -40,11 +40,11 @@ frontend/src/constants/env.ts
|
||||
**/__debug_bin
|
||||
|
||||
.env
|
||||
pkg/query-service/signoz.db
|
||||
pkg/query-service/o11y.db
|
||||
|
||||
pkg/query-service/tests/test-deploy/data/
|
||||
|
||||
ee/query-service/signoz.db
|
||||
ee/query-service/o11y.db
|
||||
|
||||
ee/query-service/tests/test-deploy/data/
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ Currently, the Hanzo O11y Community Advocate Program is **invite-only**. We're s
|
||||
|
||||
We'll be working closely with our first advocates to shape the program details, benefits, and structure based on what works best for everyone involved.
|
||||
|
||||
If you're interested in learning more about the program or want to get more involved in the Hanzo O11y community, join our [Slack community](https://signoz-community.slack.com/) and let us know!
|
||||
If you're interested in learning more about the program or want to get more involved in the Hanzo O11y community, join our [Slack community](https://o11y-community.slack.com/) and let us know!
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -5,19 +5,19 @@ Thank you for your interest in contributing to our project! We greatly value fee
|
||||
## How can I contribute?
|
||||
|
||||
### Finding Issues to Work On
|
||||
- Check our [existing open issues](https://github.com/Hanzo O11y/signoz/issues?q=is%3Aopen+is%3Aissue)
|
||||
- Look for [good first issues](https://github.com/Hanzo O11y/signoz/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) to start with
|
||||
- Review [recently closed issues](https://github.com/Hanzo O11y/signoz/issues?q=is%3Aissue+is%3Aclosed) to avoid duplicates
|
||||
- Check our [existing open issues](https://github.com/Hanzo O11y/o11y/issues?q=is%3Aopen+is%3Aissue)
|
||||
- Look for [good first issues](https://github.com/Hanzo O11y/o11y/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) to start with
|
||||
- Review [recently closed issues](https://github.com/Hanzo O11y/o11y/issues?q=is%3Aissue+is%3Aclosed) to avoid duplicates
|
||||
|
||||
### Types of Contributions
|
||||
|
||||
1. **Report Bugs**: Use our [Bug Report template](https://github.com/Hanzo O11y/signoz/issues/new?assignees=&labels=&template=bug_report.md&title=)
|
||||
2. **Request Features**: Submit using [Feature Request template](https://github.com/Hanzo O11y/signoz/issues/new?assignees=&labels=&template=feature_request.md&title=)
|
||||
1. **Report Bugs**: Use our [Bug Report template](https://github.com/Hanzo O11y/o11y/issues/new?assignees=&labels=&template=bug_report.md&title=)
|
||||
2. **Request Features**: Submit using [Feature Request template](https://github.com/Hanzo O11y/o11y/issues/new?assignees=&labels=&template=feature_request.md&title=)
|
||||
3. **Improve Documentation**: Create an issue with the `documentation` label
|
||||
4. **Report Performance Issues**: Use our [Performance Issue template](https://github.com/Hanzo O11y/signoz/issues/new?assignees=&labels=&template=performance-issue-report.md&title=)
|
||||
5. **Request Dashboards**: Submit using [Dashboard Request template](https://github.com/Hanzo O11y/signoz/issues/new?assignees=&labels=dashboard-template&projects=&template=request_dashboard.md&title=%5BDashboard+Request%5D+)
|
||||
6. **Report Security Issues**: Follow our [Security Policy](https://github.com/Hanzo O11y/signoz/security/policy)
|
||||
7. **Join Discussions**: Participate in [project discussions](https://github.com/Hanzo O11y/signoz/discussions)
|
||||
4. **Report Performance Issues**: Use our [Performance Issue template](https://github.com/Hanzo O11y/o11y/issues/new?assignees=&labels=&template=performance-issue-report.md&title=)
|
||||
5. **Request Dashboards**: Submit using [Dashboard Request template](https://github.com/Hanzo O11y/o11y/issues/new?assignees=&labels=dashboard-template&projects=&template=request_dashboard.md&title=%5BDashboard+Request%5D+)
|
||||
6. **Report Security Issues**: Follow our [Security Policy](https://github.com/Hanzo O11y/o11y/security/policy)
|
||||
7. **Join Discussions**: Participate in [project discussions](https://github.com/Hanzo O11y/o11y/discussions)
|
||||
|
||||
### Creating Helpful Issues
|
||||
|
||||
@@ -71,8 +71,8 @@ Each repository has its own contributing guidelines. Please refer to the guideli
|
||||
## How can I get help?
|
||||
|
||||
Need assistance? Join our Slack community:
|
||||
- [`#contributing`](https://signoz-community.slack.com/archives/C01LWQ8KS7M)
|
||||
- [`#contributing-frontend`](https://signoz-community.slack.com/archives/C027134DM8B)
|
||||
- [`#contributing`](https://o11y-community.slack.com/archives/C01LWQ8KS7M)
|
||||
- [`#contributing-frontend`](https://o11y-community.slack.com/archives/C027134DM8B)
|
||||
|
||||
## Where do I go from here?
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# cloud-embed adapter, which `cmd/community` never pulls in.
|
||||
#
|
||||
# All external modules in cmd/community's graph are public (hanzoai/* forks of
|
||||
# signoz-otel-collector, govaluate, clickhouse-go-mock, expr), so the module
|
||||
# otel-collector, govaluate, clickhouse-go-mock, expr), so the module
|
||||
# fetch needs no private git auth — only GOPRIVATE + GOSUMDB=off.
|
||||
#
|
||||
# The browser SPA is served at the edge by hanzoai/static (house-native static
|
||||
@@ -62,11 +62,11 @@ RUN --mount=type=cache,target=/go/pkg/mod \
|
||||
FROM alpine:3.20
|
||||
LABEL org.opencontainers.image.source="https://github.com/hanzoai/o11y" \
|
||||
org.opencontainers.image.title="hanzo-o11y" \
|
||||
org.opencontainers.image.description="Hanzo O11y — OTLP-native observability (SigNoz fork), standalone community server" \
|
||||
org.opencontainers.image.description="Hanzo O11y — OTLP-native observability (O11y fork), standalone community server" \
|
||||
maintainer="hanzoai"
|
||||
|
||||
RUN apk add --no-cache ca-certificates && \
|
||||
mkdir -p /var/lib/signoz
|
||||
mkdir -p /var/lib/o11y
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# dashboard SPA at the edge, and the ingress routes o11y.hanzo.ai here while
|
||||
# /api/* goes to the backend (universe infra/k8s/o11y/ingress.yaml).
|
||||
#
|
||||
# CONTENT: built FROM SOURCE (frontend/) now that the @signozhq -> @hanzo/ui
|
||||
# CONTENT: built FROM SOURCE (frontend/) now that the @o11yhq -> @hanzo/ui
|
||||
# migration is complete, tsgo --noEmit is clean, and `pnpm build` is green. The
|
||||
# production build resolves the [[.BaseHref]]/[[.Settings]] Go-template placeholders
|
||||
# at build time (vite.config.ts) so index.html is placeholder-free; assets are
|
||||
|
||||
@@ -8,33 +8,33 @@
|
||||
</h1>
|
||||
|
||||
Hanzo's observability spine — OTLP in, Hanzo Datastore (ClickHouse OLAP) on disk,
|
||||
serving o11y.hanzo.ai. A clean full fork of **latest SigNoz** (synced to upstream
|
||||
serving o11y.hanzo.ai. A clean full fork of **latest O11y** (synced to upstream
|
||||
`main`), building green (`go build ./...` = 0), MIT-only (no `ee/`).
|
||||
|
||||
## Dependency ownership (fork boundary)
|
||||
|
||||
All SigNoz-branded platform deps are OWNED as public `hanzoai/*` forks — never
|
||||
All O11y-branded platform deps are OWNED as public `hanzoai/*` forks — never
|
||||
consumed as upstream-branded modules. Do NOT reintroduce `github.com/SigNoz/*`.
|
||||
|
||||
| upstream | fork | tag pinned | fork module path |
|
||||
|---|---|---|---|
|
||||
| SigNoz/signoz-otel-collector | hanzoai/signoz-otel-collector | v0.144.6 | `github.com/hanzoai/signoz-otel-collector` (renamed) |
|
||||
| SigNoz/signoz-otel-collector | hanzoai/otel-collector | v0.144.7 | `github.com/hanzoai/otel-collector` (renamed) |
|
||||
| SigNoz/clickhouse-go-mock | hanzoai/clickhouse-go-mock | v0.14.1 | `github.com/hanzoai/clickhouse-go-mock` (renamed) |
|
||||
| SigNoz/govaluate | hanzoai/govaluate | v0.1.0 | `github.com/hanzoai/govaluate` (renamed) |
|
||||
| SigNoz/expr | hanzoai/expr | v1.17.8 | `github.com/expr-lang/expr` (KEEP upstream path — consumed via `replace`) |
|
||||
| SigNoz/signoz | hanzoai/signoz | synced to upstream `main` (3e6339019) | owned base; `pkg/ cmd/` re-synced wholesale to latest, `ee/` stripped (MIT-only) |
|
||||
| SigNoz/signoz | hanzoai/o11y | synced to upstream `main` (3e6339019) | owned base; `pkg/ cmd/` re-synced wholesale to latest, `ee/` stripped (MIT-only) |
|
||||
|
||||
The vendored SigNoz source in `pkg/ ee/ cmd/` self-references as
|
||||
The vendored O11y source in `pkg/ ee/ cmd/` self-references as
|
||||
`github.com/hanzoai/o11y/...` (NOT `github.com/SigNoz/signoz/...`). Generic
|
||||
ecosystem libs (`golang.org/x`, `google.golang.org`, prometheus, otel, gin,
|
||||
cobra, `luxfi/*`) are NOT forked — only the SigNoz platform.
|
||||
cobra, `luxfi/*`) are NOT forked — only the O11y platform.
|
||||
|
||||
## Build
|
||||
|
||||
`go build ./...` = 0 on `main`. The tree is a clean fork of latest SigNoz — the
|
||||
`go build ./...` = 0 on `main`. The tree is a clean fork of latest O11y — the
|
||||
prior "missing 22 packages" gap was a version-skew artifact (a franken-fork mixing
|
||||
SigNoz eras); it dissolved when the whole `pkg/ cmd/` tree was re-synced to one
|
||||
consistent upstream version. Keep it that way: bump by re-syncing to a newer SigNoz
|
||||
O11y eras); it dissolved when the whole `pkg/ cmd/` tree was re-synced to one
|
||||
consistent upstream version. Keep it that way: bump by re-syncing to a newer O11y
|
||||
`main`, not by piecemeal-porting individual packages.
|
||||
|
||||
The real server binary is `./cmd/community` (NOT `./cmd/server`, which does not
|
||||
@@ -51,7 +51,7 @@ This replaces an unrelated upstream image that previously squatted the tags.
|
||||
no cloud sibling is checked out. (Cloud lives only in root `mount.go`, compiled by
|
||||
the `go build ./...` CI job — so `ci.yaml` still needs the sibling; the container
|
||||
does not.) A bare `go mod download` WOULD fail (cloud→../cloud); build the one pkg.
|
||||
- All external deps in its graph are PUBLIC hanzoai/* forks (signoz-otel-collector,
|
||||
- All external deps in its graph are PUBLIC hanzoai/* forks (otel-collector,
|
||||
govaluate, clickhouse-go-mock, expr) → no private git auth, just
|
||||
`GOPRIVATE=github.com/hanzoai/* GOSUMDB=off`. GHCR push uses `GH_PAT || GITHUB_TOKEN`
|
||||
(the package is linked to hanzoai/o11y, so GITHUB_TOKEN+`packages: write` suffices).
|
||||
@@ -60,19 +60,19 @@ This replaces an unrelated upstream image that previously squatted the tags.
|
||||
`frontend/` tree is NOT bundled — its `pnpm-lock.yaml` is STALE vs `package.json`
|
||||
(mid rolldown-vite/oxlint migration), fails `--frozen-lockfile`. TODO: regen lockfile.
|
||||
- Listens on `0.0.0.0:8080` (constants.HTTPHostPort); sqlstore default = sqlite at
|
||||
`/var/lib/signoz/signoz.db`; needs an external ClickHouse for telemetry.
|
||||
`/var/lib/o11y/o11y.db`; needs an external ClickHouse for telemetry.
|
||||
|
||||
Boot fix: `pkg/instrumentation/sdk.go` hard-pinned `semconv/v1.40.0.SchemaURL`,
|
||||
which contrib `NewSDK` merges against `resource.Default()` (schema 1.41.0, from the
|
||||
re-synced otel/sdk) — OTEL rejects differing non-empty schema URLs, so `signoz.New`
|
||||
re-synced otel/sdk) — OTEL rejects differing non-empty schema URLs, so `o11y.New`
|
||||
crashed at boot with "conflicting Schema URL". Now sourced from the detected resource
|
||||
(`resource.SchemaURL()`), version-agnostic. Verified: boots, runs migrations, serves :8080.
|
||||
|
||||
## Hanzo layer to re-apply on the green base
|
||||
|
||||
The re-sync reverted these Hanzo-original packages to SigNoz canonical to kill the
|
||||
The re-sync reverted these Hanzo-original packages to O11y canonical to kill the
|
||||
skew; re-layer them on top (they live in git history at `c9ab975`): `pkg/authz/iamauthz`
|
||||
(Hanzo IAM authz — REQUIRED per the house "always use Hanzo IAM" rule; SigNoz's
|
||||
(Hanzo IAM authz — REQUIRED per the house "always use Hanzo IAM" rule; O11y's
|
||||
OpenFGA is the current default and must be replaced), `pkg/zapreceiver` +
|
||||
`pkg/zapmetricreceiver` (ZAP-native OTLP receivers), `pkg/billing` + `pkg/types/billingtypes`.
|
||||
Preserved through the sync: module path, `mount.go` (the `cloud.Register`/zip mount
|
||||
@@ -110,7 +110,7 @@ now sets `SetupCompleted = true` unconditionally — no org/user counting, no ro
|
||||
gate. So `/api/v1/register` is inert ("self-registration is disabled") and the SPA
|
||||
never shows an onboarding wizard. Native login/session/invite endpoints remain
|
||||
compiled but are dead: no native users are ever created, so nothing can log in
|
||||
through them. `apikeyidentn` (service-account API keys, `SIGNOZ-API-KEY`) stays for
|
||||
through them. `apikeyidentn` (service-account API keys, `O11Y-API-KEY`) stays for
|
||||
machine/OTLP identity — that is not human auth.
|
||||
|
||||
**Security boundary (important):** trusting `X-Org-Id`/`X-User-Id` is safe **only
|
||||
@@ -124,14 +124,14 @@ data (llmobs observations/scores/sessions, dashboards, …) is scoped by
|
||||
`claims.OrgID`; ClickHouse telemetry is isolated only insofar as the emit path tags
|
||||
the same org id via resource attributes.
|
||||
|
||||
## Config env naming (debranded — no SIGNOZ/CLICKHOUSE)
|
||||
## Config env naming (debranded — no O11Y/CLICKHOUSE)
|
||||
|
||||
Operator-facing env vars and config keys are Hanzo-branded, never SigNoz/ClickHouse.
|
||||
Naming-only: the store is still ClickHouse wire-protocol under the hood — the
|
||||
`clickhouse-go` driver, `db.system=clickhouse` semconv, and the `clickhouse`
|
||||
telemetrystore provider registration all stay (implementation, not surface).
|
||||
|
||||
- **Env prefix `O11Y_`** (was `SIGNOZ_`): set once at `pkg/config/envprovider/provider.go`
|
||||
- **Env prefix `O11Y_`** (was `O11Y_`): set once at `pkg/config/envprovider/provider.go`
|
||||
(`prefix`). The koanf env provider derives every structured key from it. Single `_`
|
||||
is the `::` path delimiter, double `__` is a literal `_`.
|
||||
- **Store key segment `datastore`** (was `clickhouse`): the `mapstructure` tag on
|
||||
@@ -139,23 +139,23 @@ telemetrystore provider registration all stay (implementation, not surface).
|
||||
`Clickhouse` name — internal). YAML key `telemetrystore.datastore`. Provider
|
||||
selector value stays `clickhouse`.
|
||||
- **Canonical DSN key `O11Y_DATASTORE_DSN`** (flat — THE operator knob): wired as an
|
||||
override alias in `pkg/signoz/config.go` (`mergeAndEnsureBackwardCompatibility`),
|
||||
override alias in `pkg/o11y/config.go` (`mergeAndEnsureBackwardCompatibility`),
|
||||
mapping into `telemetrystore.datastore.dsn`. Value → Hanzo Datastore
|
||||
(`tcp://datastore.hanzo.svc:9000/?database=o11y`, set at deploy time). It takes
|
||||
precedence over the structured `O11Y_TELEMETRYSTORE_DATASTORE_DSN`, which stays as
|
||||
an internal fallback (don't document/set the long form). Keep operator knobs flat and
|
||||
short — no `O11Y_A_B_C_D` compounds where a flat alias reads better.
|
||||
- **Legacy override aliases** in `pkg/signoz/config.go` (`mergeAndEnsureBackwardCompatibility`)
|
||||
- **Legacy override aliases** in `pkg/o11y/config.go` (`mergeAndEnsureBackwardCompatibility`)
|
||||
debranded too: `O11Y_LOCAL_DB_PATH`, `DatastoreUrl`, `O11Y_SAAS_SEGMENT_KEY`,
|
||||
`O11Y_JWT_SECRET`; and headless web via `O11Y_WEB_ENABLED` / `O11Y_WEB_DIRECTORY`.
|
||||
- **Deliberately NOT renamed** (implementation / not app-config surface): the `clickhouse`
|
||||
provider value + `MustNewName("clickhouse")` registration, `clickhouse-go` driver + mock,
|
||||
SQL/table/DB names (`signoz_traces` etc.) and query-template vars
|
||||
(`SIGNOZ_START_TIME`/`SIGNOZ_END_TIME`), the ClickHouse **server** container in `deploy/`
|
||||
(service/volume names, its own `CLICKHOUSE_SKIP_USER_SETUP` env), the `SIGNOZ_E2E_*`
|
||||
SQL/table/DB names (`o11y_traces` etc.) and query-template vars
|
||||
(`O11Y_START_TIME`/`O11Y_END_TIME`), the ClickHouse **server** container in `deploy/`
|
||||
(service/volume names, its own `CLICKHOUSE_SKIP_USER_SETUP` env), the `O11Y_E2E_*`
|
||||
Playwright test-harness vars (separate `tests/e2e` subsystem). The
|
||||
`O11Y_OTEL_COLLECTOR_DATASTORE_*` keys in `deploy/` are consumed by the
|
||||
`hanzoai/signoz-otel-collector` fork — renamed here for consistency; that fork must
|
||||
`hanzoai/otel-collector` fork — renamed here for consistency; that fork must
|
||||
accept the `_DATASTORE_` segment (coordinated cross-repo rename).
|
||||
|
||||
## Native datastore metrics driver (`pkg/datastoremetrics`) — the fork unblock
|
||||
@@ -165,7 +165,7 @@ telemetrystore provider registration all stay (implementation, not surface).
|
||||
`time_series_v4` + `samples_v4` tables over **upstream** `clickhouse-go` v2 (via
|
||||
`telemetrystore.TelemetryStore.ClickhouseDB()`), reusing the `telemetrymetrics`
|
||||
table-name constants so a series written here is immediately queryable.
|
||||
- **Why it exists**: the stock `signozclickhousemetrics` exporter serialises OTLP
|
||||
- **Why it exists**: the stock `o11yclickhousemetrics` exporter serialises OTLP
|
||||
exponential histograms as a DDSketch into `exp_hist.sketch`, which needs the FORKED
|
||||
ch-go (`proto.DD/.Store/.IndexMapping`). That fork conflicts with the upstream ch-go
|
||||
the query plane pins — the reason metrics ingest could not move in-process. This driver
|
||||
@@ -181,7 +181,7 @@ telemetrystore provider registration all stay (implementation, not surface).
|
||||
- **Wire-in**: `datastoremetrics.NewWriter(store.ClickhouseDB())` +
|
||||
`zapmetricreceiver.New(Config{OnBatch: w.WriteMetrics})`. Consumed by `hanzoai/cloud`'s
|
||||
embedded o11y runtime (opt-in `O11Y_METRICS_ZAP_LISTEN`, fail-soft) so the standalone
|
||||
`signoz-otel-collector` metrics path can later repoint to cloud (verify-then-cutover).
|
||||
- **Boundary unchanged**: the physical `signoz_metrics.*_v4` names still live in
|
||||
`otel-collector` metrics path can later repoint to cloud (verify-then-cutover).
|
||||
- **Boundary unchanged**: the physical `o11y_metrics.*_v4` names still live in
|
||||
`telemetrymetrics` (the source of truth this driver reuses) — renaming them is a
|
||||
datastore migration, out of scope here.
|
||||
|
||||
@@ -63,7 +63,7 @@ devenv-postgres: ## Run postgres in devenv
|
||||
|
||||
.PHONY: devenv-otel-collector
|
||||
devenv-otel-collector: ## Run otel-collector in devenv (requires datastore to be running)
|
||||
@cd .devenv/docker/signoz-otel-collector; \
|
||||
@cd .devenv/docker/otel-collector; \
|
||||
docker compose -f compose.yaml up -d
|
||||
|
||||
.PHONY: devenv-up
|
||||
@@ -209,11 +209,11 @@ py-lint: ## Run ruff check across the shared tests project
|
||||
@cd tests && uv run ruff check --fix .
|
||||
|
||||
.PHONY: py-test-setup
|
||||
py-test-setup: ## Bring up the shared SigNoz backend used by integration and e2e tests
|
||||
py-test-setup: ## Bring up the shared O11y backend used by integration and e2e tests
|
||||
@cd tests && uv run pytest --basetemp=./tmp/ -vv --reuse --capture=no integration/bootstrap/setup.py::test_setup
|
||||
|
||||
.PHONY: py-test-teardown
|
||||
py-test-teardown: ## Tear down the shared SigNoz backend
|
||||
py-test-teardown: ## Tear down the shared O11y backend
|
||||
@cd tests && uv run pytest --basetemp=./tmp/ -vv --teardown --capture=no integration/bootstrap/setup.py::test_teardown
|
||||
|
||||
.PHONY: py-test
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<p align="center">
|
||||
<img src="https://res.cloudinary.com/dcv3epinx/image/upload/v1618904450/signoz-images/LogoGithub_sigfbu.svg" alt="Hanzo O11y-logo" width="240" />
|
||||
<img src="https://res.cloudinary.com/dcv3epinx/image/upload/v1618904450/o11y-images/LogoGithub_sigfbu.svg" alt="Hanzo O11y-logo" width="240" />
|
||||
|
||||
<p align="center">Überwache deine Anwendungen und behebe Probleme in deinen bereitgestellten Anwendungen. Hanzo O11y ist eine Open Source Alternative zu DataDog, New Relic, etc.</p>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Downloads" src="https://img.shields.io/docker/pulls/signoz/query-service?label=Downloads"> </a>
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/signoz/signoz"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,signoz,observability">
|
||||
<img alt="Downloads" src="https://img.shields.io/docker/pulls/o11y/query-service?label=Downloads"> </a>
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/o11y/o11y"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,o11y,observability">
|
||||
<img alt="tweet" src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"> </a>
|
||||
</p>
|
||||
|
||||
<h3 align="center">
|
||||
<a href="https://o11y.hanzo.ai/docs"><b>Dokumentation</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.md"><b>Readme auf Englisch </b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.zh-cn.md"><b>ReadMe auf Chinesisch</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.pt-br.md"><b>ReadMe auf Portugiesisch</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.md"><b>Readme auf Englisch </b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.zh-cn.md"><b>ReadMe auf Chinesisch</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.pt-br.md"><b>ReadMe auf Portugiesisch</b></a> •
|
||||
<a href="https://o11y.hanzo.ai/slack"><b>Slack Community</b></a> •
|
||||
<a href="https://twitter.com/Hanzo O11yHq"><b>Twitter</b></a>
|
||||
</h3>
|
||||
@@ -188,10 +188,10 @@ Du findest unsere Dokumentation unter https://o11y.hanzo.ai/docs/. Falls etwas u
|
||||
|
||||
Werde Teil der [slack community](https://o11y.hanzo.ai/slack) um mehr über verteilte Einzelschritt-Fehlersuche, Messung von Systemzuständen oder Hanzo O11y zu erfahren und sich mit anderen Nutzern und Mitwirkenden in Verbindung zu setzen.
|
||||
|
||||
Falls du irgendwelche Ideen, Fragen oder Feedback hast, kannst du sie gerne über unsere [Github Discussions](https://github.com/Hanzo O11y/signoz/discussions) mit uns teilen.
|
||||
Falls du irgendwelche Ideen, Fragen oder Feedback hast, kannst du sie gerne über unsere [Github Discussions](https://github.com/Hanzo O11y/o11y/discussions) mit uns teilen.
|
||||
|
||||
Wie immer, Dank an unsere großartigen Mitwirkenden!
|
||||
|
||||
<a href="https://github.com/signoz/signoz/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=signoz/signoz" />
|
||||
<a href="https://github.com/o11y/o11y/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=o11y/o11y" />
|
||||
</a>
|
||||
|
||||
@@ -51,17 +51,17 @@ Implements:
|
||||
<p align="center">All your logs, metrics, and traces in one place. Monitor your application, spot issues before they occur and troubleshoot downtime quickly with rich context. Hanzo O11y is a cost-effective open-source alternative to Datadog and New Relic. Visit <a href="https://o11y.hanzo.ai" target="_blank">o11y.hanzo.ai</a> for the full documentation, tutorials, and guide.</p>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/signoz/signoz"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,signoz,observability">
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/o11y/o11y"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,o11y,observability">
|
||||
<img alt="tweet" src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"> </a>
|
||||
</p>
|
||||
|
||||
|
||||
<h3 align="center">
|
||||
<a href="https://o11y.hanzo.ai/docs"><b>Documentation</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.zh-cn.md"><b>ReadMe in Chinese</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.de-de.md"><b>ReadMe in German</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.pt-br.md"><b>ReadMe in Portuguese</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.zh-cn.md"><b>ReadMe in Chinese</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.de-de.md"><b>ReadMe in German</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.pt-br.md"><b>ReadMe in Portuguese</b></a> •
|
||||
<a href="https://o11y.hanzo.ai/slack"><b>Slack Community</b></a> •
|
||||
<a href="https://twitter.com/Hanzo O11yHq"><b>Twitter</b></a>
|
||||
</h3>
|
||||
@@ -278,10 +278,10 @@ You can find docs at https://o11y.hanzo.ai/docs/. If you need any clarification
|
||||
|
||||
Join the [slack community](https://o11y.hanzo.ai/slack) to know more about distributed tracing, observability, or Hanzo O11y and to connect with other users and contributors.
|
||||
|
||||
If you have any ideas, questions, or any feedback, please share on our [Github Discussions](https://github.com/Hanzo O11y/signoz/discussions)
|
||||
If you have any ideas, questions, or any feedback, please share on our [Github Discussions](https://github.com/Hanzo O11y/o11y/discussions)
|
||||
|
||||
As always, thanks to our amazing contributors!
|
||||
|
||||
<a href="https://github.com/signoz/signoz/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=signoz/signoz" />
|
||||
<a href="https://github.com/o11y/o11y/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=o11y/o11y" />
|
||||
</a>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<p align="center">
|
||||
<img src="https://res.cloudinary.com/dcv3epinx/image/upload/v1618904450/signoz-images/LogoGithub_sigfbu.svg" alt="Hanzo O11y-logo" width="240" />
|
||||
<img src="https://res.cloudinary.com/dcv3epinx/image/upload/v1618904450/o11y-images/LogoGithub_sigfbu.svg" alt="Hanzo O11y-logo" width="240" />
|
||||
|
||||
<p align="center">Monitore seus aplicativos e solucione problemas em seus aplicativos implantados, uma alternativa de código aberto para soluções como DataDog, New Relic, entre outras.</p>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Downloads" src="https://img.shields.io/docker/pulls/signoz/frontend?label=Downloads"> </a>
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/signoz/signoz"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,signoz,observability">
|
||||
<img alt="Downloads" src="https://img.shields.io/docker/pulls/o11y/frontend?label=Downloads"> </a>
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/o11y/o11y"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,o11y,observability">
|
||||
<img alt="tweet" src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"> </a>
|
||||
</p>
|
||||
|
||||
@@ -29,11 +29,11 @@ Hanzo O11y auxilia os desenvolvedores a monitorarem aplicativos e solucionar pro
|
||||
👉 Execute agregações em dados de rastreamento para obter métricas de negócios relevantes.
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/Contributing.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/Contributing.svg" width="50px" />
|
||||
|
||||
## Junte-se à nossa comunidade no Slack
|
||||
|
||||
@@ -41,7 +41,7 @@ Venha dizer oi para nós no [Slack](https://o11y.hanzo.ai/slack) 👋
|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/Features.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/Features.svg" width="50px" />
|
||||
|
||||
## Funções:
|
||||
|
||||
@@ -54,7 +54,7 @@ Venha dizer oi para nós no [Slack](https://o11y.hanzo.ai/slack) 👋
|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/WhatsCool.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/WhatsCool.svg" width="50px" />
|
||||
|
||||
## Por que escolher Hanzo O11y?
|
||||
|
||||
@@ -77,7 +77,7 @@ Você pode encontrar a lista completa de linguagens aqui - https://opentelemetry
|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/Philosophy.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/Philosophy.svg" width="50px" />
|
||||
|
||||
## Iniciando
|
||||
|
||||
@@ -98,7 +98,7 @@ Siga as etapas listadas [aqui](https://o11y.hanzo.ai/docs/deployment/helm_chart)
|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/UseHanzo O11y.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/UseHanzo O11y.svg" width="50px" />
|
||||
|
||||
## Comparações com ferramentas similares
|
||||
|
||||
@@ -121,7 +121,7 @@ Além disso, Hanzo O11y tem alguns recursos mais avançados do que Jaeger:
|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/Contributors.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/Contributors.svg" width="50px" />
|
||||
|
||||
## Contribuindo
|
||||
|
||||
@@ -132,7 +132,7 @@ Não sabe como começar? Basta enviar um sinal para nós no canal `#contributing
|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/DevelopingLocally.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/DevelopingLocally.svg" width="50px" />
|
||||
|
||||
## Documentação
|
||||
|
||||
@@ -140,18 +140,18 @@ Você pode encontrar a documentação em https://o11y.hanzo.ai/docs/. Se você t
|
||||
|
||||
<br /><br />
|
||||
|
||||
<img align="left" src="https://signoz-public.s3.us-east-2.amazonaws.com/Contributing.svg" width="50px" />
|
||||
<img align="left" src="https://o11y-public.s3.us-east-2.amazonaws.com/Contributing.svg" width="50px" />
|
||||
|
||||
## Comunidade
|
||||
|
||||
Junte-se a [comunidade no Slack](https://o11y.hanzo.ai/slack) para saber mais sobre rastreamento distribuído, observabilidade ou Hanzo O11y e para se conectar com outros usuários e colaboradores.
|
||||
|
||||
Se você tiver alguma ideia, pergunta ou feedback, compartilhe em nosso [Github Discussões](https://github.com/Hanzo O11y/signoz/discussions)
|
||||
Se você tiver alguma ideia, pergunta ou feedback, compartilhe em nosso [Github Discussões](https://github.com/Hanzo O11y/o11y/discussions)
|
||||
|
||||
Como sempre, obrigado aos nossos incríveis colaboradores!
|
||||
|
||||
<a href="https://github.com/signoz/signoz/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=signoz/signoz" />
|
||||
<a href="https://github.com/o11y/o11y/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=o11y/o11y" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<img src="https://res.cloudinary.com/dcv3epinx/image/upload/v1618904450/signoz-images/LogoGithub_sigfbu.svg" alt="Hanzo O11y-logo" width="240" />
|
||||
<img src="https://res.cloudinary.com/dcv3epinx/image/upload/v1618904450/o11y-images/LogoGithub_sigfbu.svg" alt="Hanzo O11y-logo" width="240" />
|
||||
|
||||
<p align="center">监控你的应用,并且可排查已部署应用的问题,这是一个可替代 DataDog、NewRelic 的开源方案</p>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Downloads" src="https://img.shields.io/docker/pulls/signoz/query-service?label=Docker Downloads"> </a>
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/signoz/signoz"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,signoz,observability">
|
||||
<img alt="Downloads" src="https://img.shields.io/docker/pulls/o11y/query-service?label=Docker Downloads"> </a>
|
||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/o11y/o11y"> </a>
|
||||
<a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20Hanzo O11y,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&url=https://o11y.hanzo.ai/&via=Hanzo O11yHQ&hashtags=opensource,o11y,observability">
|
||||
<img alt="tweet" src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social"> </a>
|
||||
</p>
|
||||
|
||||
<h3 align="center">
|
||||
<a href="https://o11y.hanzo.ai/docs"><b>文档</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.zh-cn.md"><b>中文ReadMe</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.de-de.md"><b>德文ReadMe</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/signoz/blob/main/README.pt-br.md"><b>葡萄牙语ReadMe</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.zh-cn.md"><b>中文ReadMe</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.de-de.md"><b>德文ReadMe</b></a> •
|
||||
<a href="https://github.com/Hanzo O11y/o11y/blob/main/README.pt-br.md"><b>葡萄牙语ReadMe</b></a> •
|
||||
<a href="https://o11y.hanzo.ai/slack"><b>Slack 社区</b></a> •
|
||||
<a href="https://twitter.com/Hanzo O11yHq"><b>Twitter</b></a>
|
||||
</h3>
|
||||
@@ -199,10 +199,10 @@ Jaeger 仅仅是一个分布式追踪系统。 但是 Hanzo O11y 可以提供 me
|
||||
|
||||
加入 [slack 社区](https://o11y.hanzo.ai/slack) 去了解更多关于分布式追踪、可观测性系统 。或者与 Hanzo O11y 其他用户和贡献者交流。
|
||||
|
||||
如果你有任何想法、问题、或者任何反馈, 请通过 [Github Discussions](https://github.com/Hanzo O11y/signoz/discussions) 分享。
|
||||
如果你有任何想法、问题、或者任何反馈, 请通过 [Github Discussions](https://github.com/Hanzo O11y/o11y/discussions) 分享。
|
||||
|
||||
不管怎么样,感谢这个项目的所有贡献者!
|
||||
|
||||
<a href="https://github.com/signoz/signoz/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=signoz/signoz" />
|
||||
<a href="https://github.com/o11y/o11y/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=o11y/o11y" />
|
||||
</a>
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
|
||||
version: 2
|
||||
|
||||
project_name: signoz-community
|
||||
project_name: o11y-community
|
||||
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy
|
||||
|
||||
builds:
|
||||
- id: signoz
|
||||
binary: bin/signoz
|
||||
- id: o11y
|
||||
binary: bin/o11y
|
||||
main: ./cmd/community
|
||||
goos:
|
||||
- linux
|
||||
@@ -24,12 +24,12 @@ builds:
|
||||
- v8.0
|
||||
ldflags:
|
||||
- -s -w
|
||||
- -X github.com/SigNoz/signoz/pkg/version.version=v{{ .Version }}
|
||||
- -X github.com/SigNoz/signoz/pkg/version.variant=community
|
||||
- -X github.com/SigNoz/signoz/pkg/version.hash={{ .ShortCommit }}
|
||||
- -X github.com/SigNoz/signoz/pkg/version.time={{ .CommitTimestamp }}
|
||||
- -X github.com/SigNoz/signoz/pkg/version.branch={{ .Branch }}
|
||||
- -X github.com/SigNoz/signoz/pkg/analytics.key=9kRrJ7oPCGPEJLF6QjMPLt5bljFhRQBr
|
||||
- -X github.com/hanzoai/o11y/pkg/version.version=v{{ .Version }}
|
||||
- -X github.com/hanzoai/o11y/pkg/version.variant=community
|
||||
- -X github.com/hanzoai/o11y/pkg/version.hash={{ .ShortCommit }}
|
||||
- -X github.com/hanzoai/o11y/pkg/version.time={{ .CommitTimestamp }}
|
||||
- -X github.com/hanzoai/o11y/pkg/version.branch={{ .Branch }}
|
||||
- -X github.com/hanzoai/o11y/pkg/analytics.key=9kRrJ7oPCGPEJLF6QjMPLt5bljFhRQBr
|
||||
mod_timestamp: "{{ .CommitTimestamp }}"
|
||||
tags:
|
||||
- timetzdata
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FROM alpine:3.20.3
|
||||
LABEL maintainer="signoz"
|
||||
LABEL maintainer="o11y"
|
||||
WORKDIR /root
|
||||
|
||||
ARG OS="linux"
|
||||
@@ -10,10 +10,10 @@ RUN apk update && \
|
||||
rm -rf /var/cache/apk/*
|
||||
|
||||
|
||||
COPY ./target/${OS}-${TARGETARCH}/signoz-community /root/signoz
|
||||
COPY ./target/${OS}-${TARGETARCH}/o11y-community /root/o11y
|
||||
COPY ./templates /root/templates
|
||||
COPY frontend/build/ /etc/signoz/web/
|
||||
COPY frontend/build/ /etc/o11y/web/
|
||||
|
||||
RUN chmod 755 /root /root/signoz
|
||||
RUN chmod 755 /root /root/o11y
|
||||
|
||||
ENTRYPOINT ["./signoz", "server"]
|
||||
ENTRYPOINT ["./o11y", "server"]
|
||||
@@ -1,7 +1,7 @@
|
||||
ARG ALPINE_SHA="pass-a-valid-docker-sha-otherwise-this-will-fail"
|
||||
|
||||
FROM alpine@sha256:${ALPINE_SHA}
|
||||
LABEL maintainer="signoz"
|
||||
LABEL maintainer="o11y"
|
||||
WORKDIR /root
|
||||
|
||||
ARG OS="linux"
|
||||
@@ -11,10 +11,10 @@ RUN apk update && \
|
||||
apk add ca-certificates && \
|
||||
rm -rf /var/cache/apk/*
|
||||
|
||||
COPY ./target/${OS}-${ARCH}/signoz-community /root/signoz-community
|
||||
COPY ./target/${OS}-${ARCH}/o11y-community /root/o11y-community
|
||||
COPY ./templates /root/templates
|
||||
COPY frontend/build/ /etc/signoz/web/
|
||||
COPY frontend/build/ /etc/o11y/web/
|
||||
|
||||
RUN chmod 755 /root /root/signoz-community
|
||||
RUN chmod 755 /root /root/o11y-community
|
||||
|
||||
ENTRYPOINT ["./signoz-community", "server"]
|
||||
ENTRYPOINT ["./o11y-community", "server"]
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"github.com/hanzoai/o11y/cmd"
|
||||
"github.com/hanzoai/o11y/pkg/community"
|
||||
"github.com/hanzoai/o11y/pkg/errors"
|
||||
"github.com/hanzoai/o11y/pkg/signoz"
|
||||
"github.com/hanzoai/o11y/pkg/o11y"
|
||||
"github.com/hanzoai/o11y/pkg/version"
|
||||
)
|
||||
|
||||
@@ -18,10 +18,10 @@ func registerServer(parentCmd *cobra.Command, logger *slog.Logger) {
|
||||
|
||||
serverCmd := &cobra.Command{
|
||||
Use: "server",
|
||||
Short: "Run the SigNoz server",
|
||||
Short: "Run the O11y server",
|
||||
FParseErrWhitelist: cobra.FParseErrWhitelist{UnknownFlags: true},
|
||||
RunE: func(currCmd *cobra.Command, args []string) error {
|
||||
config, err := cmd.NewSigNozConfig(currCmd.Context(), logger, configFiles)
|
||||
config, err := cmd.NewO11yConfig(currCmd.Context(), logger, configFiles)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -34,7 +34,7 @@ func registerServer(parentCmd *cobra.Command, logger *slog.Logger) {
|
||||
parentCmd.AddCommand(serverCmd)
|
||||
}
|
||||
|
||||
func runServer(ctx context.Context, config signoz.Config, logger *slog.Logger) error {
|
||||
func runServer(ctx context.Context, config o11y.Config, logger *slog.Logger) error {
|
||||
// print the version
|
||||
version.Info.PrettyPrint(config.Version)
|
||||
|
||||
@@ -42,9 +42,9 @@ func runServer(ctx context.Context, config signoz.Config, logger *slog.Logger) e
|
||||
// embed — same providers, same identity (iamidentn gateway-header auth), same
|
||||
// wiring. Standalone owns the process: bind listeners, run background
|
||||
// evaluation, block until shutdown.
|
||||
server, signoz, err := community.NewServer(ctx, config)
|
||||
server, o11y, err := community.NewServer(ctx, config)
|
||||
if err != nil {
|
||||
logger.ErrorContext(ctx, "failed to create signoz server", errors.Attr(err))
|
||||
logger.ErrorContext(ctx, "failed to create o11y server", errors.Attr(err))
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -53,10 +53,10 @@ func runServer(ctx context.Context, config signoz.Config, logger *slog.Logger) e
|
||||
return err
|
||||
}
|
||||
|
||||
signoz.Start(ctx)
|
||||
o11y.Start(ctx)
|
||||
|
||||
if err := signoz.Wait(ctx); err != nil {
|
||||
logger.ErrorContext(ctx, "failed to start signoz", errors.Attr(err))
|
||||
if err := o11y.Wait(ctx); err != nil {
|
||||
logger.ErrorContext(ctx, "failed to start o11y", errors.Attr(err))
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -65,8 +65,8 @@ func runServer(ctx context.Context, config signoz.Config, logger *slog.Logger) e
|
||||
return err
|
||||
}
|
||||
|
||||
if err := signoz.Stop(ctx); err != nil {
|
||||
logger.ErrorContext(ctx, "failed to stop signoz", errors.Attr(err))
|
||||
if err := o11y.Stop(ctx); err != nil {
|
||||
logger.ErrorContext(ctx, "failed to stop o11y", errors.Attr(err))
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -5,14 +5,14 @@ import (
|
||||
"log/slog"
|
||||
|
||||
"github.com/hanzoai/o11y/pkg/community"
|
||||
"github.com/hanzoai/o11y/pkg/signoz"
|
||||
"github.com/hanzoai/o11y/pkg/o11y"
|
||||
)
|
||||
|
||||
// NewSigNozConfig resolves the SigNoz config from the given YAML files plus the
|
||||
// NewO11yConfig resolves the O11y config from the given YAML files plus the
|
||||
// process environment. It delegates to community.NewConfig — the ONE config path
|
||||
// shared by the standalone binary and the hanzoai/cloud embed — so both read
|
||||
// configuration (and the Hanzo operator-facing aliases like O11Y_DATASTORE_DSN)
|
||||
// identically.
|
||||
func NewSigNozConfig(ctx context.Context, logger *slog.Logger, configFiles []string) (signoz.Config, error) {
|
||||
func NewO11yConfig(ctx context.Context, logger *slog.Logger, configFiles []string) (o11y.Config, error) {
|
||||
return community.NewConfig(ctx, logger, configFiles)
|
||||
}
|
||||
|
||||
@@ -11,14 +11,14 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNewSigNozConfig_NoConfigFiles(t *testing.T) {
|
||||
func TestNewO11yConfig_NoConfigFiles(t *testing.T) {
|
||||
logger := slog.New(slog.DiscardHandler)
|
||||
config, err := NewSigNozConfig(context.Background(), logger, nil)
|
||||
config, err := NewO11yConfig(context.Background(), logger, nil)
|
||||
require.NoError(t, err)
|
||||
assert.NotZero(t, config)
|
||||
}
|
||||
|
||||
func TestNewSigNozConfig_SingleConfigFile(t *testing.T) {
|
||||
func TestNewO11yConfig_SingleConfigFile(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
configPath := filepath.Join(dir, "config.yaml")
|
||||
err := os.WriteFile(configPath, []byte(`
|
||||
@@ -28,12 +28,12 @@ cache:
|
||||
require.NoError(t, err)
|
||||
|
||||
logger := slog.New(slog.DiscardHandler)
|
||||
config, err := NewSigNozConfig(context.Background(), logger, []string{configPath})
|
||||
config, err := NewO11yConfig(context.Background(), logger, []string{configPath})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "redis", config.Cache.Provider)
|
||||
}
|
||||
|
||||
func TestNewSigNozConfig_MultipleConfigFiles_LaterOverridesEarlier(t *testing.T) {
|
||||
func TestNewO11yConfig_MultipleConfigFiles_LaterOverridesEarlier(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
|
||||
basePath := filepath.Join(dir, "base.yaml")
|
||||
@@ -53,7 +53,7 @@ cache:
|
||||
require.NoError(t, err)
|
||||
|
||||
logger := slog.New(slog.DiscardHandler)
|
||||
config, err := NewSigNozConfig(context.Background(), logger, []string{basePath, overridePath})
|
||||
config, err := NewO11yConfig(context.Background(), logger, []string{basePath, overridePath})
|
||||
require.NoError(t, err)
|
||||
// Later file overrides earlier
|
||||
assert.Equal(t, "redis", config.Cache.Provider)
|
||||
@@ -61,7 +61,7 @@ cache:
|
||||
assert.Equal(t, "sqlite", config.SQLStore.Provider)
|
||||
}
|
||||
|
||||
func TestNewSigNozConfig_EnvOverridesConfigFile(t *testing.T) {
|
||||
func TestNewO11yConfig_EnvOverridesConfigFile(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
configPath := filepath.Join(dir, "config.yaml")
|
||||
err := os.WriteFile(configPath, []byte(`
|
||||
@@ -73,14 +73,14 @@ cache:
|
||||
t.Setenv("O11Y_CACHE_PROVIDER", "fromenv")
|
||||
|
||||
logger := slog.New(slog.DiscardHandler)
|
||||
config, err := NewSigNozConfig(context.Background(), logger, []string{configPath})
|
||||
config, err := NewO11yConfig(context.Background(), logger, []string{configPath})
|
||||
require.NoError(t, err)
|
||||
// Env should override file
|
||||
assert.Equal(t, "fromenv", config.Cache.Provider)
|
||||
}
|
||||
|
||||
func TestNewSigNozConfig_NonexistentFile(t *testing.T) {
|
||||
func TestNewO11yConfig_NonexistentFile(t *testing.T) {
|
||||
logger := slog.New(slog.DiscardHandler)
|
||||
_, err := NewSigNozConfig(context.Background(), logger, []string{"/nonexistent/config.yaml"})
|
||||
_, err := NewO11yConfig(context.Background(), logger, []string{"/nonexistent/config.yaml"})
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
|
||||
"github.com/hanzoai/o11y/pkg/factory"
|
||||
"github.com/hanzoai/o11y/pkg/instrumentation"
|
||||
"github.com/hanzoai/o11y/pkg/signoz"
|
||||
"github.com/hanzoai/o11y/pkg/o11y"
|
||||
"github.com/hanzoai/o11y/pkg/sqlmigration"
|
||||
"github.com/hanzoai/o11y/pkg/sqlmigrator"
|
||||
"github.com/hanzoai/o11y/pkg/sqlschema"
|
||||
@@ -70,7 +70,7 @@ func registerSyncUp(parentCmd *cobra.Command, logger *slog.Logger, sqlstoreProvi
|
||||
Short: "Runs 'up' migrations for the metastore. Up migrations are used to apply new migrations to the metastore",
|
||||
FParseErrWhitelist: cobra.FParseErrWhitelist{UnknownFlags: true},
|
||||
RunE: func(currCmd *cobra.Command, args []string) error {
|
||||
config, err := NewSigNozConfig(currCmd.Context(), logger, configFiles)
|
||||
config, err := NewO11yConfig(currCmd.Context(), logger, configFiles)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -91,7 +91,7 @@ func registerSyncCheck(parentCmd *cobra.Command, logger *slog.Logger, sqlstorePr
|
||||
Short: "Runs a check for 'sync' migrations on the metastore. Returns a non-zero exit code if any migrations are pending.",
|
||||
FParseErrWhitelist: cobra.FParseErrWhitelist{UnknownFlags: true},
|
||||
RunE: func(currCmd *cobra.Command, args []string) error {
|
||||
config, err := NewSigNozConfig(currCmd.Context(), logger, configFiles)
|
||||
config, err := NewO11yConfig(currCmd.Context(), logger, configFiles)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -104,7 +104,7 @@ func registerSyncCheck(parentCmd *cobra.Command, logger *slog.Logger, sqlstorePr
|
||||
parentCmd.AddCommand(syncCheckCmd)
|
||||
}
|
||||
|
||||
func runSyncUp(ctx context.Context, config signoz.Config, sqlstoreProviderFactories SQLStoreProviderFactories, sqlschemaProviderFactories SQLSchemaProviderFactories) error {
|
||||
func runSyncUp(ctx context.Context, config o11y.Config, sqlstoreProviderFactories SQLStoreProviderFactories, sqlschemaProviderFactories SQLSchemaProviderFactories) error {
|
||||
migrator, err := newSyncMigrator(ctx, config, sqlstoreProviderFactories, sqlschemaProviderFactories)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -113,7 +113,7 @@ func runSyncUp(ctx context.Context, config signoz.Config, sqlstoreProviderFactor
|
||||
return migrator.Migrate(ctx)
|
||||
}
|
||||
|
||||
func runSyncCheck(ctx context.Context, config signoz.Config, sqlstoreProviderFactories SQLStoreProviderFactories, sqlschemaProviderFactories SQLSchemaProviderFactories) error {
|
||||
func runSyncCheck(ctx context.Context, config o11y.Config, sqlstoreProviderFactories SQLStoreProviderFactories, sqlschemaProviderFactories SQLSchemaProviderFactories) error {
|
||||
migrator, err := newSyncMigrator(ctx, config, sqlstoreProviderFactories, sqlschemaProviderFactories)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -122,8 +122,8 @@ func runSyncCheck(ctx context.Context, config signoz.Config, sqlstoreProviderFac
|
||||
return migrator.Check(ctx)
|
||||
}
|
||||
|
||||
func newSyncMigrator(ctx context.Context, config signoz.Config, sqlstoreProviderFactories SQLStoreProviderFactories, sqlschemaProviderFactories SQLSchemaProviderFactories) (sqlmigrator.SQLMigrator, error) {
|
||||
instrumentation, err := instrumentation.New(ctx, config.Instrumentation, version.Info, "signoz")
|
||||
func newSyncMigrator(ctx context.Context, config o11y.Config, sqlstoreProviderFactories SQLStoreProviderFactories, sqlschemaProviderFactories SQLSchemaProviderFactories) (sqlmigrator.SQLMigrator, error) {
|
||||
instrumentation, err := instrumentation.New(ctx, config.Instrumentation, version.Info, "o11y")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -140,12 +140,12 @@ func newSyncMigrator(ctx context.Context, config signoz.Config, sqlstoreProvider
|
||||
return nil, err
|
||||
}
|
||||
|
||||
telemetrystore, err := factory.NewProviderFromNamedMap(ctx, providerSettings, config.TelemetryStore, signoz.NewTelemetryStoreProviderFactories(), config.TelemetryStore.Provider)
|
||||
telemetrystore, err := factory.NewProviderFromNamedMap(ctx, providerSettings, config.TelemetryStore, o11y.NewTelemetryStoreProviderFactories(), config.TelemetryStore.Provider)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sqlmigrations, err := sqlmigration.New(ctx, providerSettings, config.SQLMigration, signoz.NewSQLMigrationProviderFactories(sqlstore, sqlschema, telemetrystore, providerSettings))
|
||||
sqlmigrations, err := sqlmigration.New(ctx, providerSettings, config.SQLMigration, o11y.NewSQLMigrationProviderFactories(sqlstore, sqlschema, telemetrystore, providerSettings))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"log/slog"
|
||||
|
||||
"github.com/hanzoai/o11y/pkg/instrumentation"
|
||||
"github.com/hanzoai/o11y/pkg/signoz"
|
||||
"github.com/hanzoai/o11y/pkg/o11y"
|
||||
"github.com/hanzoai/o11y/pkg/version"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
func registerGenerateOpenAPI(parentCmd *cobra.Command) {
|
||||
openapiCmd := &cobra.Command{
|
||||
Use: "openapi",
|
||||
Short: "Generate OpenAPI schema for SigNoz",
|
||||
Short: "Generate OpenAPI schema for O11y",
|
||||
RunE: func(currCmd *cobra.Command, args []string) error {
|
||||
return runGenerateOpenAPI(currCmd.Context())
|
||||
},
|
||||
@@ -23,12 +23,12 @@ func registerGenerateOpenAPI(parentCmd *cobra.Command) {
|
||||
}
|
||||
|
||||
func runGenerateOpenAPI(ctx context.Context) error {
|
||||
instrumentation, err := instrumentation.New(ctx, instrumentation.Config{Logs: instrumentation.LogsConfig{Level: slog.LevelInfo}}, version.Info, "signoz")
|
||||
instrumentation, err := instrumentation.New(ctx, instrumentation.Config{Logs: instrumentation.LogsConfig{Level: slog.LevelInfo}}, version.Info, "o11y")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
openapi, err := signoz.NewOpenAPI(ctx, instrumentation)
|
||||
openapi, err := o11y.NewOpenAPI(ctx, instrumentation)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
)
|
||||
|
||||
var RootCmd = &cobra.Command{
|
||||
Use: "signoz",
|
||||
Use: "o11y",
|
||||
Short: "OpenTelemetry-Native Logs, Metrics and Traces in a single pane",
|
||||
Version: version.Info.Version(),
|
||||
SilenceUsage: true,
|
||||
|
||||
@@ -9,9 +9,9 @@ global:
|
||||
external_url: <unset>
|
||||
# the url where the Hanzo O11y backend receives telemetry data (traces, metrics, logs) from instrumented applications.
|
||||
ingestion_url: <unset>
|
||||
# the url of the SigNoz MCP server. when unset, the MCP settings page is hidden in the frontend.
|
||||
# the url of the O11y MCP server. when unset, the MCP settings page is hidden in the frontend.
|
||||
# mcp_url: <unset>
|
||||
# the url of the SigNoz AI Assistant server. when unset, the AI Assistant is hidden in the frontend.
|
||||
# the url of the O11y AI Assistant server. when unset, the AI Assistant is hidden in the frontend.
|
||||
# ai_assistant_url: <unset>
|
||||
|
||||
##################### Version #####################
|
||||
@@ -175,11 +175,11 @@ alertmanager:
|
||||
poll_interval: 1m
|
||||
# The URL under which Alertmanager is externally reachable (for example, if Alertmanager is served via a reverse proxy). Used for generating relative and absolute links back to Alertmanager itself.
|
||||
external_url: http://localhost:8080
|
||||
# The list of globs from which SigNoz's alertmanager notification templates are loaded (e.g. the email.signoz.html layout).
|
||||
# The list of globs from which O11y's alertmanager notification templates are loaded (e.g. the email.o11y.html layout).
|
||||
# This mirrors the upstream alertmanager `templates` config option. The upstream default templates (default.tmpl, email.tmpl)
|
||||
# are always loaded from the embedded alertmanager assets, so only SigNoz's own templates need to be listed here.
|
||||
# are always loaded from the embedded alertmanager assets, so only O11y's own templates need to be listed here.
|
||||
templates:
|
||||
- /opt/signoz/conf/templates/alertmanager/*.gotmpl
|
||||
- /opt/o11y/conf/templates/alertmanager/*.gotmpl
|
||||
# The global configuration for the alertmanager. All the exahustive fields can be found in the upstream: https://github.com/prometheus/alertmanager/blob/efa05feffd644ba4accb526e98a8c6545d26a783/config/config.go#L833
|
||||
global:
|
||||
# ResolveTimeout is the time after which an alert is declared resolved if it has not been updated.
|
||||
@@ -372,7 +372,7 @@ identn:
|
||||
enabled: true
|
||||
# headers to use for apikey identN resolver
|
||||
headers:
|
||||
- SIGNOZ-API-KEY
|
||||
- O11Y-API-KEY
|
||||
impersonation:
|
||||
# toggle impersonation identN, when enabled, all requests will impersonate the root user
|
||||
enabled: false
|
||||
@@ -381,7 +381,7 @@ identn:
|
||||
serviceaccount:
|
||||
email:
|
||||
# email domain for the service account principal
|
||||
domain: signozserviceaccount.com
|
||||
domain: o11yserviceaccount.com
|
||||
|
||||
analytics:
|
||||
# toggle service account analytics
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Deploy
|
||||
|
||||
Check that you have cloned [signoz/signoz](https://github.com/signoz/signoz)
|
||||
and currently are in `signoz/deploy` folder.
|
||||
Check that you have cloned [o11y/o11y](https://github.com/o11y/o11y)
|
||||
and currently are in `o11y/deploy` folder.
|
||||
|
||||
## Docker
|
||||
|
||||
@@ -52,7 +52,7 @@ To install Hanzo O11y using Docker Swarm, run the following command:
|
||||
|
||||
```sh
|
||||
cd deploy/docker-swarm
|
||||
docker stack deploy -c docker-compose.yaml signoz
|
||||
docker stack deploy -c docker-compose.yaml o11y
|
||||
```
|
||||
|
||||
Open http://localhost:8080 in your favourite browser.
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
# ClickHouse `signoz_*` → `o11y_*` schema cutover — lockstep deploy plan
|
||||
|
||||
The org-wide `signoz`→`o11y` rebrand renamed the **physical** ClickHouse
|
||||
databases and tables. The writer (collector), the data-preserving RENAME
|
||||
migration, and both readers (o11y querier + cloud) now all agree on `o11y_*`.
|
||||
|
||||
**These three MUST ship together. If the collector writes `o11y_*` before the
|
||||
migration renames the existing data, or the readers query `o11y_*` before either,
|
||||
telemetry blackholes** (new ingest lands in tables the readers don't query, or
|
||||
readers query tables that don't exist yet).
|
||||
|
||||
## The shared identifier set (writer == migration == readers)
|
||||
|
||||
Proven byte-identical between the schema-migrator DDL (writer) and the RENAME
|
||||
migration; both readers reference only names drawn from this set.
|
||||
|
||||
**Databases (6):** `o11y_traces` `o11y_metrics` `o11y_logs` `o11y_metadata`
|
||||
`o11y_analytics` `o11y_meter`
|
||||
|
||||
**Tables carrying the prefix (8, traces db):** `o11y_index_v3` /
|
||||
`distributed_o11y_index_v3`, `o11y_index_v2` / `distributed_o11y_index_v2`,
|
||||
`o11y_error_index_v2` / `distributed_o11y_error_index_v2`, `o11y_spans` /
|
||||
`distributed_o11y_spans`. (All other tables — `logs_v2`, `samples_v4`,
|
||||
`time_series_v4`, `distributed_tag_attributes_v2`, … — keep their names; only
|
||||
their containing database is renamed, moved wholesale by `RENAME DATABASE`.)
|
||||
|
||||
**Deliberately NOT renamed (wire contracts, unchanged on both sides):**
|
||||
spanmetrics/usage metric NAMES (`signoz_calls_total`, `signoz_latency*`,
|
||||
`signoz_*_count`/`_bytes`, `signoz_normalize_operator_logs_processed`,
|
||||
`signoz_metadata_exporter_json_logs_processed`), resource ATTRIBUTES
|
||||
(`signoz.gen_ai.*`), OTel component TYPE strings (`signozclickhousemetrics`,
|
||||
`signozclickhousemeter`, `signozlogspipeline`, `signozllmpricing`),
|
||||
query-time SQL aliases (`signoz_input_idx__`, `signoz_log_id__`).
|
||||
|
||||
## Component versions that must move together
|
||||
|
||||
| component | change | artifact |
|
||||
|---|---|---|
|
||||
| writer | schema-migrator + ClickHouse exporters emit `o11y_*` | `ghcr.io/hanzoai/otel-collector` **v0.144.8** (+ `o11y-schema-migrator`) |
|
||||
| migration | data-preserving `RENAME DATABASE`/`RENAME TABLE` | `deploy/clickhouse/migrations/0001_rename_signoz_to_o11y.sql` |
|
||||
| reader (o11y) | querier reads `o11y_*` | hanzoai/o11y#28 @ collector v0.144.8 |
|
||||
| reader (cloud) | direct ClickHouse reads `o11y_*` | hanzoai/cloud#202 @ collector v0.144.8 |
|
||||
|
||||
## Pre-flight — prove it on a FRESH/scratch ClickHouse (never prod)
|
||||
|
||||
Run end-to-end against a throwaway ClickHouse before touching prod:
|
||||
|
||||
1. **Create schema fresh** with the v0.144.8 schema-migrator → it creates the
|
||||
`o11y_*` databases + tables directly (no `signoz_*` ever exist).
|
||||
```
|
||||
docker run --rm --net <scratch-ch-net> ghcr.io/hanzoai/o11y-schema-migrator:v0.144.8 \
|
||||
sync --dsn 'tcp://<scratch-ch>:9000' --replication=false --up=
|
||||
```
|
||||
Verify: `SELECT name FROM system.databases WHERE name LIKE 'o11y_%'` returns 6;
|
||||
`SELECT count() FROM system.tables WHERE name LIKE '%o11y_index_v3%'` > 0;
|
||||
`SELECT count() FROM system.databases WHERE name LIKE 'signoz_%'` = **0**.
|
||||
2. **Emit a trace + a metric** through the v0.144.8 collector at the scratch DSN
|
||||
(OTLP/ZAP in). Confirm rows land: `SELECT count() FROM o11y_traces.distributed_o11y_index_v3`
|
||||
> 0 and `SELECT count() FROM o11y_metrics.distributed_samples_v4` > 0.
|
||||
3. **Query it back through o11y** (community server @ collector v0.144.8, pointed
|
||||
at scratch DSN): the trace is visible via the querier and cloud's
|
||||
`requestLogs`/`metricsRead` SQL (`FROM o11y_traces.distributed_o11y_index_v3`)
|
||||
returns the row. Green = writer↔reader agree on a fresh install.
|
||||
4. **Rehearse the RENAME on a signoz-seeded scratch DB**: create with the OLD
|
||||
v0.144.7 migrator (produces `signoz_*`), ingest a row, run
|
||||
`0001_rename_signoz_to_o11y.sql`, then confirm the row is still present under
|
||||
`o11y_*` and `system.databases` shows no `signoz_*`. Proves data is preserved
|
||||
in place (metadata-only rename, no copy).
|
||||
|
||||
## Prod cutover order (single maintenance window)
|
||||
|
||||
> Gated by the migration's own pre-check (`SELECT ... system.databases WHERE name
|
||||
> IN ('signoz_traces', …)`). Fresh installs already on `o11y_*` skip the migration.
|
||||
> Clustered deployments: append `ON CLUSTER '<cluster>'` to every RENAME (see the
|
||||
> migration header).
|
||||
|
||||
1. **Deploy the collector v0.144.8** (schema-migrator + collector). On an existing
|
||||
install the migrator is a no-op for already-present databases; the collector
|
||||
now WRITES `o11y_*`. Briefly, new ingest targets `o11y_*` while old data is
|
||||
still under `signoz_*` — this is why step 2 follows immediately.
|
||||
2. **Run the RENAME migration** `0001_rename_signoz_to_o11y.sql` once. It moves the
|
||||
existing `signoz_*` databases/tables (with all rows) to `o11y_*` — metadata-only,
|
||||
no drop, no copy. After this, historical + new data share the `o11y_*` names.
|
||||
3. **Deploy o11y + cloud** (both @ collector v0.144.8). They now READ `o11y_*`,
|
||||
matching what the collector writes and the migration produced.
|
||||
|
||||
Roll the window tight: the gap between (1) and (3) is the only interval where a
|
||||
stale reader (still on `signoz_*`) would see no data. Because the migration is a
|
||||
metadata rename, step 2 is near-instant, keeping the window minimal.
|
||||
|
||||
## Rollback
|
||||
|
||||
`RENAME` is reversible: `RENAME DATABASE o11y_traces TO signoz_traces; …` (invert
|
||||
every statement) restores the old names, and redeploying the prior collector
|
||||
v0.144.7 + prior o11y/cloud images resumes `signoz_*` reads/writes. No data is
|
||||
lost either direction because nothing is dropped.
|
||||
@@ -0,0 +1,78 @@
|
||||
-- 0001_rename_signoz_to_o11y.sql
|
||||
--
|
||||
-- Data-preserving ClickHouse cutover: rename the legacy `signoz_*` telemetry
|
||||
-- databases and their `signoz_`-prefixed tables to the debranded `o11y_*`
|
||||
-- identifiers that the o11y querier now reads (pkg/query-service, pkg/telemetry*).
|
||||
--
|
||||
-- WHY: the o11y read plane was debranded signoz_* -> o11y_* (databases, tables,
|
||||
-- and query template identifiers). For a live deployment to keep serving its
|
||||
-- existing telemetry after the upgrade, the physical ClickHouse objects must be
|
||||
-- renamed to match. This is a coordinated cutover with the otel-collector write
|
||||
-- side (see the CAVEAT below).
|
||||
--
|
||||
-- DATA-PRESERVING: every statement is a metadata-only `RENAME` (ClickHouse moves
|
||||
-- the table/database entry — it never copies or rewrites parts). There is NO
|
||||
-- DROP, NO CREATE ... AS, NO INSERT. Live telemetry is preserved in place.
|
||||
--
|
||||
-- GUARD / IDEMPOTENCY: ClickHouse `RENAME DATABASE|TABLE` has no `IF EXISTS`
|
||||
-- clause, so apply this script ONCE during the cutover window, gated by the
|
||||
-- pre-check below. The check makes it safe whether or not the objects exist
|
||||
-- (fresh installs that were provisioned directly as o11y_* are skipped; a
|
||||
-- half-applied run resumes because already-renamed objects fall out of the set).
|
||||
--
|
||||
-- -- run first; only proceed with the renames it reports as still `signoz_*`:
|
||||
-- SELECT name FROM system.databases
|
||||
-- WHERE name IN ('signoz_traces','signoz_metrics','signoz_logs',
|
||||
-- 'signoz_metadata','signoz_analytics','signoz_meter');
|
||||
-- SELECT database, name FROM system.tables
|
||||
-- WHERE database IN ('signoz_traces','o11y_traces')
|
||||
-- AND name LIKE 'signoz_%' OR name LIKE 'distributed_signoz_%';
|
||||
--
|
||||
-- CLUSTERED DEPLOYMENTS: append `ON CLUSTER '<cluster>'` (SigNoz/o11y default
|
||||
-- cluster name is `cluster`) to every statement so the rename is replicated to
|
||||
-- all shards/replicas, e.g. `RENAME DATABASE signoz_traces TO o11y_traces ON CLUSTER 'cluster';`.
|
||||
--
|
||||
-- =====================================================================
|
||||
-- 1) Databases — moves every table inside (samples_v4, time_series_v4,
|
||||
-- logs_v2, *_v4, usage, tag_attributes_v2, …) WITH its data.
|
||||
-- =====================================================================
|
||||
RENAME DATABASE signoz_traces TO o11y_traces;
|
||||
RENAME DATABASE signoz_metrics TO o11y_metrics;
|
||||
RENAME DATABASE signoz_logs TO o11y_logs;
|
||||
RENAME DATABASE signoz_metadata TO o11y_metadata;
|
||||
RENAME DATABASE signoz_analytics TO o11y_analytics;
|
||||
RENAME DATABASE signoz_meter TO o11y_meter;
|
||||
|
||||
-- =====================================================================
|
||||
-- 2) Tables whose NAME carries the signoz_ prefix (traces database only).
|
||||
-- They now live under o11y_traces (renamed in step 1); rename the table
|
||||
-- identifiers to the o11y_ names the querier references. Distributed and
|
||||
-- local (sharded) tables are renamed as matched pairs.
|
||||
-- =====================================================================
|
||||
RENAME TABLE o11y_traces.signoz_index_v3 TO o11y_traces.o11y_index_v3;
|
||||
RENAME TABLE o11y_traces.distributed_signoz_index_v3 TO o11y_traces.distributed_o11y_index_v3;
|
||||
RENAME TABLE o11y_traces.signoz_index_v2 TO o11y_traces.o11y_index_v2;
|
||||
RENAME TABLE o11y_traces.distributed_signoz_index_v2 TO o11y_traces.distributed_o11y_index_v2;
|
||||
RENAME TABLE o11y_traces.signoz_error_index_v2 TO o11y_traces.o11y_error_index_v2;
|
||||
RENAME TABLE o11y_traces.distributed_signoz_error_index_v2 TO o11y_traces.distributed_o11y_error_index_v2;
|
||||
RENAME TABLE o11y_traces.signoz_spans TO o11y_traces.o11y_spans;
|
||||
RENAME TABLE o11y_traces.distributed_signoz_spans TO o11y_traces.distributed_o11y_spans;
|
||||
|
||||
-- =====================================================================
|
||||
-- NOTE — COLUMNS: no data-preserving `ALTER TABLE … RENAME COLUMN` is required.
|
||||
-- The audit found NO stored column carrying a `signoz_` prefix; the `signoz_*`
|
||||
-- tokens that look column-shaped in the query layer are (a) SQL result aliases
|
||||
-- (e.g. signoz_input_idx__, signoz_log_id__) which are query-time only, and
|
||||
-- (b) span-metrics metric NAMES stored as row VALUES in the metrics `__name__`
|
||||
-- column (signoz_calls_total, signoz_latency_bucket/_count, signoz_db_calls_total).
|
||||
-- Those metric-name values are written by the collector spanmetrics connector,
|
||||
-- not schema, so they are cut over on the write side (+ optional value backfill)
|
||||
-- — outside DDL scope. If a backfill is desired it is a plain UPDATE on the
|
||||
-- metric-name column, still no drop.
|
||||
--
|
||||
-- CAVEAT (coordination) — as of otel-collector v0.144.7 the collector's SQL
|
||||
-- schema (cmd/o11yschemamigrator) still CREATES/writes the physical objects
|
||||
-- under the `signoz_*` names above (only its Go package paths were debranded).
|
||||
-- Apply this migration only in lockstep with a collector release whose schema
|
||||
-- migrator emits the `o11y_*` identifiers, otherwise new ingest lands in the old
|
||||
-- names. This file is the read-plane/data half of that coordinated rename.
|
||||
@@ -1,3 +1,3 @@
|
||||
This data directory is deprecated and will be removed in the future.
|
||||
Please use the migration script under `scripts/volume-migration` to migrate data from bind mounts to Docker volumes.
|
||||
The script also renames the project name to `signoz` and the network name to `signoz-net` (if not already in place).
|
||||
The script also renames the project name to `o11y` and the network name to `o11y-net` (if not already in place).
|
||||
|
||||
@@ -123,7 +123,7 @@ check_os() {
|
||||
}
|
||||
|
||||
|
||||
# This function checks if the relevant ports required by SigNoz are available or not
|
||||
# This function checks if the relevant ports required by O11y are available or not
|
||||
# The script should error out in case they aren't available
|
||||
check_ports_occupied() {
|
||||
local port_check_output
|
||||
@@ -144,8 +144,8 @@ check_ports_occupied() {
|
||||
send_event "port_not_available"
|
||||
|
||||
echo "+++++++++++ ERROR ++++++++++++++++++++++"
|
||||
echo "SigNoz requires ports 8080 & 4317 to be open. Please shut down any other service(s) that may be running on these ports."
|
||||
echo "You can run SigNoz on another port following this guide https://signoz.io/docs/install/troubleshooting/"
|
||||
echo "O11y requires ports 8080 & 4317 to be open. Please shut down any other service(s) that may be running on these ports."
|
||||
echo "You can run O11y on another port following this guide https://o11y.io/docs/install/troubleshooting/"
|
||||
echo "++++++++++++++++++++++++++++++++++++++++"
|
||||
echo ""
|
||||
exit 1
|
||||
@@ -272,8 +272,8 @@ bye() { # Prints a friendly good bye message and exits the script.
|
||||
echo -e "cd ${DOCKER_STANDALONE_DIR}"
|
||||
echo -e "$sudo_cmd $docker_compose_cmd ps -a"
|
||||
|
||||
echo "Please read our troubleshooting guide https://signoz.io/docs/install/troubleshooting/"
|
||||
echo "or reach us for support in #help channel in our Slack Community https://signoz.io/slack"
|
||||
echo "Please read our troubleshooting guide https://o11y.io/docs/install/troubleshooting/"
|
||||
echo "or reach us for support in #help channel in our Slack Community https://o11y.io/slack"
|
||||
echo "++++++++++++++++++++++++++++++++++++++++"
|
||||
|
||||
if [[ $email == "" ]]; then
|
||||
@@ -307,13 +307,13 @@ request_sudo() {
|
||||
fi
|
||||
|
||||
echo -e "Got it! Thanks!! 🙏\n"
|
||||
echo -e "Okay! We will bring up the SigNoz cluster from here 🚀\n"
|
||||
echo -e "Okay! We will bring up the O11y cluster from here 🚀\n"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo -e "👋 Thank you for trying out SigNoz! "
|
||||
echo -e "👋 Thank you for trying out O11y! "
|
||||
echo ""
|
||||
|
||||
sudo_cmd=""
|
||||
@@ -358,9 +358,9 @@ elif hash openssl 2>/dev/null; then
|
||||
fi
|
||||
|
||||
if [[ -z $digest_cmd ]]; then
|
||||
SIGNOZ_INSTALLATION_ID="$sysinfo"
|
||||
O11Y_INSTALLATION_ID="$sysinfo"
|
||||
else
|
||||
SIGNOZ_INSTALLATION_ID=$(echo "$sysinfo" | $digest_cmd | grep -E -o '[a-zA-Z0-9]{64}')
|
||||
O11Y_INSTALLATION_ID=$(echo "$sysinfo" | $digest_cmd | grep -E -o '[a-zA-Z0-9]{64}')
|
||||
fi
|
||||
|
||||
setup_type='clickhouse'
|
||||
@@ -421,7 +421,7 @@ send_event() {
|
||||
error='"error": "'"$error"'", '
|
||||
fi
|
||||
|
||||
DATA='{ "anonymousId": "'"$SIGNOZ_INSTALLATION_ID"'", "event": "'"$event"'", "properties": { "os": "'"$os"'", '"$error $others"' "setup_type": "'"$setup_type"'" } }'
|
||||
DATA='{ "anonymousId": "'"$O11Y_INSTALLATION_ID"'", "event": "'"$event"'", "properties": { "os": "'"$os"'", '"$error $others"' "setup_type": "'"$setup_type"'" } }'
|
||||
|
||||
if has_curl; then
|
||||
curl -sfL -d "$DATA" --header "$HEADER_1" --header "$HEADER_2" "$URL" > /dev/null 2>&1
|
||||
@@ -482,21 +482,21 @@ start_docker
|
||||
# Switch to the Docker Standalone directory
|
||||
pushd "${BASE_DIR}/${DOCKER_STANDALONE_DIR}" > /dev/null 2>&1
|
||||
|
||||
# check for open ports, if signoz is not installed
|
||||
# check for open ports, if o11y is not installed
|
||||
if is_command_present docker-compose; then
|
||||
if $sudo_cmd $docker_compose_cmd ps | grep "signoz" | grep -q "healthy" > /dev/null 2>&1; then
|
||||
echo "SigNoz already installed, skipping the occupied ports check"
|
||||
if $sudo_cmd $docker_compose_cmd ps | grep "o11y" | grep -q "healthy" > /dev/null 2>&1; then
|
||||
echo "O11y already installed, skipping the occupied ports check"
|
||||
else
|
||||
check_ports_occupied
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "\n🟡 Pulling the latest container images for SigNoz.\n"
|
||||
echo -e "\n🟡 Pulling the latest container images for O11y.\n"
|
||||
$sudo_cmd $docker_compose_cmd pull
|
||||
|
||||
echo ""
|
||||
echo "🟡 Starting the SigNoz containers. It may take a few minutes ..."
|
||||
echo "🟡 Starting the O11y containers. It may take a few minutes ..."
|
||||
echo
|
||||
# The $docker_compose_cmd command does some nasty stuff for the `--detach` functionality. So we add a `|| true` so that the
|
||||
# script doesn't exit because this command looks like it failed to do it's thing.
|
||||
@@ -519,8 +519,8 @@ if [[ $status_code -ne 200 ]]; then
|
||||
echo "$sudo_cmd $docker_compose_cmd down -v"
|
||||
echo ""
|
||||
|
||||
echo "Please read our troubleshooting guide https://signoz.io/docs/install/troubleshooting/"
|
||||
echo "or reach us on SigNoz for support https://signoz.io/slack"
|
||||
echo "Please read our troubleshooting guide https://o11y.io/docs/install/troubleshooting/"
|
||||
echo "or reach us on O11y for support https://o11y.io/slack"
|
||||
echo "++++++++++++++++++++++++++++++++++++++++"
|
||||
|
||||
send_event "installation_error_checks"
|
||||
@@ -533,12 +533,12 @@ else
|
||||
echo ""
|
||||
echo "🟢 Your installation is complete!"
|
||||
echo ""
|
||||
echo -e "🟢 SigNoz is running on http://localhost:8080"
|
||||
echo -e "🟢 O11y is running on http://localhost:8080"
|
||||
echo ""
|
||||
echo "ℹ️ By default, retention period is set to 15 days for logs and traces, and 30 days for metrics."
|
||||
echo -e "To change this, navigate to the General tab on the Settings page of SigNoz UI. For more details, refer to https://signoz.io/docs/userguide/retention-period \n"
|
||||
echo -e "To change this, navigate to the General tab on the Settings page of O11y UI. For more details, refer to https://o11y.io/docs/userguide/retention-period \n"
|
||||
|
||||
echo "ℹ️ To bring down SigNoz and clean volumes:"
|
||||
echo "ℹ️ To bring down O11y and clean volumes:"
|
||||
echo ""
|
||||
echo "cd ${DOCKER_STANDALONE_DIR}"
|
||||
echo "$sudo_cmd $docker_compose_cmd down -v"
|
||||
@@ -547,9 +547,9 @@ else
|
||||
echo "+++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
echo ""
|
||||
echo "👉 Need help in Getting Started?"
|
||||
echo -e "Join us on Slack https://signoz.io/slack"
|
||||
echo -e "Join us on Slack https://o11y.io/slack"
|
||||
echo ""
|
||||
echo -e "\n📨 Please share your email to receive support & updates about SigNoz!"
|
||||
echo -e "\n📨 Please share your email to receive support & updates about O11y!"
|
||||
read -rp 'Email: ' email
|
||||
|
||||
while [[ $email == "" ]]
|
||||
|
||||
@@ -40,7 +40,7 @@ matcher, notification, receiver, recurrence, route, schedule, template`.
|
||||
|
||||
## Why it's hard
|
||||
|
||||
1. **The schema IS the API.** SigNoz's frontend, our k8s CRDs, and any
|
||||
1. **The schema IS the API.** O11y's frontend, our k8s CRDs, and any
|
||||
external alert source all speak the Alertmanager YAML schema. Replacing
|
||||
the parser without preserving the schema breaks every consumer.
|
||||
2. **Routing is non-trivial.** Alertmanager's route tree (with `continue`,
|
||||
@@ -101,7 +101,7 @@ get reimplemented; routing tree stays Alertmanager's.
|
||||
### Option 4 — Accept the Alertmanager dep
|
||||
|
||||
The o11y team explicitly carves out alerting as the one place we
|
||||
intentionally use upstream Prometheus types, because SigNoz's contract
|
||||
intentionally use upstream Prometheus types, because O11y's contract
|
||||
*is* the Alertmanager schema. Every other Hanzo repo is now
|
||||
prometheus-free.
|
||||
|
||||
@@ -117,7 +117,7 @@ prometheus-free.
|
||||
The 24-repo client_golang → luxfi/metric migration that shipped alongside
|
||||
this RFC already removes Prometheus from 161 files. The remaining
|
||||
alertmanager dependency is *isolated to o11y's alerting plane* and is
|
||||
load-bearing for the SigNoz frontend's contract.
|
||||
load-bearing for the O11y frontend's contract.
|
||||
|
||||
A clean-room rewrite (Option 1) is the only path that ends with zero
|
||||
Prometheus in any Hanzo binary. But it's a 4-6 week initiative that
|
||||
@@ -143,8 +143,8 @@ Total: ~4-6 weeks calendar time for one engineer focused.
|
||||
1. Does anything outside o11y consume the Alertmanager config schema
|
||||
(e.g. k8s CRDs, alert-router)? If yes, schema changes are
|
||||
cross-repo and need their own coordination.
|
||||
2. Is the SigNoz frontend wired to send alerts to o11y via the
|
||||
Alertmanager v2 OpenAPI schema, or via SigNoz's own internal RPC?
|
||||
2. Is the O11y frontend wired to send alerts to o11y via the
|
||||
Alertmanager v2 OpenAPI schema, or via O11y's own internal RPC?
|
||||
If the former, the v2 wire format is part of the contract and we
|
||||
need a compatibility shim regardless of which option we pick.
|
||||
3. Do we actually use Alertmanager's inhibit rules in production? If
|
||||
|
||||
@@ -1015,13 +1015,13 @@ components:
|
||||
type: string
|
||||
ingestionUrl:
|
||||
type: string
|
||||
sigNozApiKey:
|
||||
o11yApiKey:
|
||||
type: string
|
||||
sigNozApiUrl:
|
||||
o11yApiUrl:
|
||||
type: string
|
||||
required:
|
||||
- sigNozApiUrl
|
||||
- sigNozApiKey
|
||||
- o11yApiUrl
|
||||
- o11yApiKey
|
||||
- ingestionUrl
|
||||
- ingestionKey
|
||||
type: object
|
||||
@@ -2434,9 +2434,9 @@ components:
|
||||
type: object
|
||||
DashboardtypesBuilderQuerySpec:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregation'
|
||||
- $ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregation'
|
||||
- $ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregation'
|
||||
- $ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregation'
|
||||
- $ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregation'
|
||||
- $ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregation'
|
||||
DashboardtypesComparisonOperator:
|
||||
enum:
|
||||
- above
|
||||
@@ -2529,13 +2529,13 @@ components:
|
||||
- $ref: '#/components/schemas/DashboardtypesDatasourcePluginVariantStruct'
|
||||
DashboardtypesDatasourcePluginKind:
|
||||
enum:
|
||||
- signoz/Datasource
|
||||
- o11y/Datasource
|
||||
type: string
|
||||
DashboardtypesDatasourcePluginVariantStruct:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/Datasource
|
||||
- o11y/Datasource
|
||||
type: string
|
||||
spec:
|
||||
nullable: true
|
||||
@@ -2744,28 +2744,28 @@ components:
|
||||
type: object
|
||||
DashboardtypesPanelPlugin:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTimeSeriesPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBarChartPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesNumberPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesPieChartPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTablePanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesHistogramPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesListPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTimeSeriesPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBarChartPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesNumberPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesPieChartPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTablePanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesHistogramPanelSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesListPanelSpec'
|
||||
DashboardtypesPanelPluginKind:
|
||||
enum:
|
||||
- signoz/TimeSeriesPanel
|
||||
- signoz/BarChartPanel
|
||||
- signoz/NumberPanel
|
||||
- signoz/PieChartPanel
|
||||
- signoz/TablePanel
|
||||
- signoz/HistogramPanel
|
||||
- signoz/ListPanel
|
||||
- o11y/TimeSeriesPanel
|
||||
- o11y/BarChartPanel
|
||||
- o11y/NumberPanel
|
||||
- o11y/PieChartPanel
|
||||
- o11y/TablePanel
|
||||
- o11y/HistogramPanel
|
||||
- o11y/ListPanel
|
||||
type: string
|
||||
DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBarChartPanelSpec:
|
||||
DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBarChartPanelSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/BarChartPanel
|
||||
- o11y/BarChartPanel
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesBarChartPanelSpec'
|
||||
@@ -2773,11 +2773,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesHistogramPanelSpec:
|
||||
DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesHistogramPanelSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/HistogramPanel
|
||||
- o11y/HistogramPanel
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesHistogramPanelSpec'
|
||||
@@ -2785,11 +2785,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesListPanelSpec:
|
||||
DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesListPanelSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/ListPanel
|
||||
- o11y/ListPanel
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesListPanelSpec'
|
||||
@@ -2797,11 +2797,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesNumberPanelSpec:
|
||||
DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesNumberPanelSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/NumberPanel
|
||||
- o11y/NumberPanel
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesNumberPanelSpec'
|
||||
@@ -2809,11 +2809,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesPieChartPanelSpec:
|
||||
DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesPieChartPanelSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/PieChartPanel
|
||||
- o11y/PieChartPanel
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesPieChartPanelSpec'
|
||||
@@ -2821,11 +2821,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTablePanelSpec:
|
||||
DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTablePanelSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/TablePanel
|
||||
- o11y/TablePanel
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesTablePanelSpec'
|
||||
@@ -2833,11 +2833,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTimeSeriesPanelSpec:
|
||||
DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTimeSeriesPanelSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/TimeSeriesPanel
|
||||
- o11y/TimeSeriesPanel
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesTimeSeriesPanelSpec'
|
||||
@@ -2916,26 +2916,26 @@ components:
|
||||
type: object
|
||||
DashboardtypesQueryPlugin:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBuilderQuerySpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQuery'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormula'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5PromQuery'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQuery'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperator'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBuilderQuerySpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQuery'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormula'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5PromQuery'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQuery'
|
||||
- $ref: '#/components/schemas/DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperator'
|
||||
DashboardtypesQueryPluginKind:
|
||||
enum:
|
||||
- signoz/BuilderQuery
|
||||
- signoz/CompositeQuery
|
||||
- signoz/Formula
|
||||
- signoz/PromQLQuery
|
||||
- signoz/ClickHouseSQL
|
||||
- signoz/TraceOperator
|
||||
- o11y/BuilderQuery
|
||||
- o11y/CompositeQuery
|
||||
- o11y/Formula
|
||||
- o11y/PromQLQuery
|
||||
- o11y/ClickHouseSQL
|
||||
- o11y/TraceOperator
|
||||
type: string
|
||||
DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBuilderQuerySpec:
|
||||
DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBuilderQuerySpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/BuilderQuery
|
||||
- o11y/BuilderQuery
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesBuilderQuerySpec'
|
||||
@@ -2943,11 +2943,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQuery:
|
||||
DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQuery:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/ClickHouseSQL
|
||||
- o11y/ClickHouseSQL
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5ClickHouseQuery'
|
||||
@@ -2955,11 +2955,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQuery:
|
||||
DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQuery:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/CompositeQuery
|
||||
- o11y/CompositeQuery
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5CompositeQuery'
|
||||
@@ -2967,11 +2967,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5PromQuery:
|
||||
DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5PromQuery:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/PromQLQuery
|
||||
- o11y/PromQLQuery
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5PromQuery'
|
||||
@@ -2979,11 +2979,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormula:
|
||||
DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormula:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/Formula
|
||||
- o11y/Formula
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderFormula'
|
||||
@@ -2991,11 +2991,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperator:
|
||||
DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperator:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/TraceOperator
|
||||
- o11y/TraceOperator
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderTraceOperator'
|
||||
@@ -3156,7 +3156,7 @@ components:
|
||||
type: object
|
||||
DashboardtypesVariable:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/DashboardtypesVariableEnvelopeGithubComSigNozSignozPkgTypesDashboardtypesListVariableSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesVariableEnvelopeGithubComO11yO11yPkgTypesDashboardtypesListVariableSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesVariableEnvelopeGithubComPersesPersesPkgModelApiV1DashboardTextVariableSpec'
|
||||
DashboardtypesVariableEnvelopeGithubComPersesPersesPkgModelApiV1DashboardTextVariableSpec:
|
||||
properties:
|
||||
@@ -3170,7 +3170,7 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesVariableEnvelopeGithubComSigNozSignozPkgTypesDashboardtypesListVariableSpec:
|
||||
DashboardtypesVariableEnvelopeGithubComO11yO11yPkgTypesDashboardtypesListVariableSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
@@ -3184,20 +3184,20 @@ components:
|
||||
type: object
|
||||
DashboardtypesVariablePlugin:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesDynamicVariableSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesQueryVariableSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesCustomVariableSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesDynamicVariableSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesQueryVariableSpec'
|
||||
- $ref: '#/components/schemas/DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesCustomVariableSpec'
|
||||
DashboardtypesVariablePluginKind:
|
||||
enum:
|
||||
- signoz/DynamicVariable
|
||||
- signoz/QueryVariable
|
||||
- signoz/CustomVariable
|
||||
- o11y/DynamicVariable
|
||||
- o11y/QueryVariable
|
||||
- o11y/CustomVariable
|
||||
type: string
|
||||
DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesCustomVariableSpec:
|
||||
DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesCustomVariableSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/CustomVariable
|
||||
- o11y/CustomVariable
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesCustomVariableSpec'
|
||||
@@ -3205,11 +3205,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesDynamicVariableSpec:
|
||||
DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesDynamicVariableSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/DynamicVariable
|
||||
- o11y/DynamicVariable
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesDynamicVariableSpec'
|
||||
@@ -3217,11 +3217,11 @@ components:
|
||||
- kind
|
||||
- spec
|
||||
type: object
|
||||
DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesQueryVariableSpec:
|
||||
DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesQueryVariableSpec:
|
||||
properties:
|
||||
kind:
|
||||
enum:
|
||||
- signoz/QueryVariable
|
||||
- o11y/QueryVariable
|
||||
type: string
|
||||
spec:
|
||||
$ref: '#/components/schemas/DashboardtypesQueryVariableSpec'
|
||||
@@ -5344,7 +5344,7 @@ components:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5OrderBy'
|
||||
type: array
|
||||
type: object
|
||||
Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregation:
|
||||
Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregation:
|
||||
properties:
|
||||
aggregations:
|
||||
items:
|
||||
@@ -5395,7 +5395,7 @@ components:
|
||||
stepInterval:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5Step'
|
||||
type: object
|
||||
Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregation:
|
||||
Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregation:
|
||||
properties:
|
||||
aggregations:
|
||||
items:
|
||||
@@ -5446,7 +5446,7 @@ components:
|
||||
stepInterval:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5Step'
|
||||
type: object
|
||||
Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregation:
|
||||
Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregation:
|
||||
properties:
|
||||
aggregations:
|
||||
items:
|
||||
@@ -5570,21 +5570,21 @@ components:
|
||||
Querybuildertypesv5QueryEnvelopeBuilderLog:
|
||||
properties:
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregation'
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregation'
|
||||
type:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryType'
|
||||
type: object
|
||||
Querybuildertypesv5QueryEnvelopeBuilderMetric:
|
||||
properties:
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregation'
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregation'
|
||||
type:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryType'
|
||||
type: object
|
||||
Querybuildertypesv5QueryEnvelopeBuilderTrace:
|
||||
properties:
|
||||
spec:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregation'
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregation'
|
||||
type:
|
||||
$ref: '#/components/schemas/Querybuildertypesv5QueryType'
|
||||
type: object
|
||||
@@ -7296,9 +7296,9 @@ components:
|
||||
type: http
|
||||
info:
|
||||
contact:
|
||||
email: support@signoz.io
|
||||
name: SigNoz Support
|
||||
url: https://signoz.io
|
||||
email: support@o11y.io
|
||||
name: O11y Support
|
||||
url: https://o11y.io
|
||||
description: OpenTelemetry-Native Logs, Metrics and Traces in a single pane
|
||||
title: Hanzo O11y
|
||||
version: ""
|
||||
@@ -14690,7 +14690,7 @@ paths:
|
||||
/api/v2/metrics/onboarding:
|
||||
get:
|
||||
deprecated: false
|
||||
description: Lightweight endpoint that checks if any non-SigNoz metrics have
|
||||
description: Lightweight endpoint that checks if any non-O11y metrics have
|
||||
been ingested, used for onboarding status detection
|
||||
operationId: GetMetricsOnboardingStatus
|
||||
responses:
|
||||
@@ -14731,7 +14731,7 @@ paths:
|
||||
- VIEWER
|
||||
- tokenizer:
|
||||
- VIEWER
|
||||
summary: Check if non-SigNoz metrics have been received
|
||||
summary: Check if non-O11y metrics have been received
|
||||
tags:
|
||||
- metrics
|
||||
/api/v2/metrics/stats:
|
||||
@@ -15285,7 +15285,7 @@ paths:
|
||||
metric_anomaly:
|
||||
description: Anomaly rules are not yet supported under schemaVersion
|
||||
v2alpha1, so this example uses the v1 shape. Wraps a builder query
|
||||
in the `anomaly` function with daily seasonality SigNoz compares
|
||||
in the `anomaly` function with daily seasonality O11y compares
|
||||
each point against the forecast for that time of day. Fires when
|
||||
the anomaly score stays below the threshold for the entire window;
|
||||
`requireMinPoints` guards against noisy intervals.
|
||||
@@ -15850,7 +15850,7 @@ paths:
|
||||
traces_threshold_latency:
|
||||
description: Builder query against the traces signal with p99(duration_nano).
|
||||
The series unit is ns (compositeQuery.unit), the target is in seconds
|
||||
(threshold.targetUnit) SigNoz converts before comparing. Canonical
|
||||
(threshold.targetUnit) O11y converts before comparing. Canonical
|
||||
shape when series and target live in different units.
|
||||
summary: Traces threshold p99 latency (ns → s conversion)
|
||||
value:
|
||||
@@ -16234,7 +16234,7 @@ paths:
|
||||
metric_anomaly:
|
||||
description: Anomaly rules are not yet supported under schemaVersion
|
||||
v2alpha1, so this example uses the v1 shape. Wraps a builder query
|
||||
in the `anomaly` function with daily seasonality SigNoz compares
|
||||
in the `anomaly` function with daily seasonality O11y compares
|
||||
each point against the forecast for that time of day. Fires when
|
||||
the anomaly score stays below the threshold for the entire window;
|
||||
`requireMinPoints` guards against noisy intervals.
|
||||
@@ -16799,7 +16799,7 @@ paths:
|
||||
traces_threshold_latency:
|
||||
description: Builder query against the traces signal with p99(duration_nano).
|
||||
The series unit is ns (compositeQuery.unit), the target is in seconds
|
||||
(threshold.targetUnit) SigNoz converts before comparing. Canonical
|
||||
(threshold.targetUnit) O11y converts before comparing. Canonical
|
||||
shape when series and target live in different units.
|
||||
summary: Traces threshold p99 latency (ns → s conversion)
|
||||
value:
|
||||
@@ -17086,7 +17086,7 @@ paths:
|
||||
metric_anomaly:
|
||||
description: Anomaly rules are not yet supported under schemaVersion
|
||||
v2alpha1, so this example uses the v1 shape. Wraps a builder query
|
||||
in the `anomaly` function with daily seasonality SigNoz compares
|
||||
in the `anomaly` function with daily seasonality O11y compares
|
||||
each point against the forecast for that time of day. Fires when
|
||||
the anomaly score stays below the threshold for the entire window;
|
||||
`requireMinPoints` guards against noisy intervals.
|
||||
@@ -17651,7 +17651,7 @@ paths:
|
||||
traces_threshold_latency:
|
||||
description: Builder query against the traces signal with p99(duration_nano).
|
||||
The series unit is ns (compositeQuery.unit), the target is in seconds
|
||||
(threshold.targetUnit) SigNoz converts before comparing. Canonical
|
||||
(threshold.targetUnit) O11y converts before comparing. Canonical
|
||||
shape when series and target live in different units.
|
||||
summary: Traces threshold p99 latency (ns → s conversion)
|
||||
value:
|
||||
@@ -18441,7 +18441,7 @@ paths:
|
||||
metric_anomaly:
|
||||
description: Anomaly rules are not yet supported under schemaVersion
|
||||
v2alpha1, so this example uses the v1 shape. Wraps a builder query
|
||||
in the `anomaly` function with daily seasonality SigNoz compares
|
||||
in the `anomaly` function with daily seasonality O11y compares
|
||||
each point against the forecast for that time of day. Fires when
|
||||
the anomaly score stays below the threshold for the entire window;
|
||||
`requireMinPoints` guards against noisy intervals.
|
||||
@@ -19006,7 +19006,7 @@ paths:
|
||||
traces_threshold_latency:
|
||||
description: Builder query against the traces signal with p99(duration_nano).
|
||||
The series unit is ns (compositeQuery.unit), the target is in seconds
|
||||
(threshold.targetUnit) SigNoz converts before comparing. Canonical
|
||||
(threshold.targetUnit) O11y converts before comparing. Canonical
|
||||
shape when series and target live in different units.
|
||||
summary: Traces threshold p99 latency (ns → s conversion)
|
||||
value:
|
||||
@@ -20623,15 +20623,15 @@ paths:
|
||||
tags:
|
||||
- querier
|
||||
servers:
|
||||
- description: The fully qualified URL to the SigNoz APIServer.
|
||||
- description: The fully qualified URL to the O11y APIServer.
|
||||
url: https://{host}:{port}{base_path}
|
||||
variables:
|
||||
base_path:
|
||||
default: /
|
||||
description: The base path of the SigNoz APIServer
|
||||
description: The base path of the O11y APIServer
|
||||
host:
|
||||
default: localhost
|
||||
description: The host of the SigNoz APIServer
|
||||
description: The host of the O11y APIServer
|
||||
port:
|
||||
default: "8080"
|
||||
description: The port of the SigNoz APIServer
|
||||
description: The port of the O11y APIServer
|
||||
|
||||
@@ -30,11 +30,11 @@ Before diving in, make sure you have these tools installed:
|
||||
1. Open your terminal
|
||||
2. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/Hanzo O11y/signoz.git
|
||||
git clone https://github.com/Hanzo O11y/o11y.git
|
||||
```
|
||||
3. Navigate to the project:
|
||||
```bash
|
||||
cd signoz
|
||||
cd o11y
|
||||
```
|
||||
|
||||
## How do I run it locally?
|
||||
@@ -59,7 +59,7 @@ This command:
|
||||
Next, start the OpenTelemetry Collector to receive telemetry data:
|
||||
|
||||
```bash
|
||||
make devenv-signoz-otel-collector
|
||||
make devenv-otel-collector
|
||||
```
|
||||
|
||||
This command:
|
||||
|
||||
@@ -77,8 +77,8 @@ Use the `Flagger` interface to evaluate feature flags. The interface provides ty
|
||||
|
||||
```go
|
||||
import (
|
||||
"github.com/Hanzo O11y/signoz/pkg/flagger"
|
||||
"github.com/Hanzo O11y/signoz/pkg/types/featuretypes"
|
||||
"github.com/Hanzo O11y/o11y/pkg/flagger"
|
||||
"github.com/Hanzo O11y/o11y/pkg/types/featuretypes"
|
||||
)
|
||||
|
||||
func DoSomething(ctx context.Context, flagger flagger.Flagger) error {
|
||||
|
||||
@@ -21,7 +21,7 @@ Each route wraps a module handler method with the following:
|
||||
- A generic HTTP `handler.Handler` (from `pkg/http/handler`)
|
||||
- An `OpenAPIDef` that describes the operation for OpenAPI generation
|
||||
|
||||
For example, in `pkg/apiserver/signozapiserver`:
|
||||
For example, in `pkg/apiserver/o11yapiserver`:
|
||||
|
||||
```go
|
||||
if err := router.Handle("/api/v1/invite", handler.New(
|
||||
@@ -57,7 +57,7 @@ When adding a new endpoint:
|
||||
|
||||
1. Add a method to the appropriate module `Handler` interface.
|
||||
2. Implement that method in the module.
|
||||
3. Register the method in `signozapiserver` with the correct route, HTTP method, auth, and `OpenAPIDef`.
|
||||
3. Register the method in `o11yapiserver` with the correct route, HTTP method, auth, and `OpenAPIDef`.
|
||||
|
||||
### 1. Extend an existing `Handler` interface or create a new one
|
||||
|
||||
@@ -109,9 +109,9 @@ func (h *handler) CreateThing(rw http.ResponseWriter, req *http.Request) {
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Register the handler in `signozapiserver`
|
||||
### 3. Register the handler in `o11yapiserver`
|
||||
|
||||
In `pkg/apiserver/signozapiserver`, add a route in the appropriate `add*Routes` function (`addUserRoutes`, `addSessionRoutes`, `addOrgRoutes`, etc.). The pattern is:
|
||||
In `pkg/apiserver/o11yapiserver`, add a route in the appropriate `add*Routes` function (`addUserRoutes`, `addSessionRoutes`, `addOrgRoutes`, etc.). The pattern is:
|
||||
|
||||
```go
|
||||
if err := router.Handle("/api/v1/things", handler.New(
|
||||
@@ -193,7 +193,7 @@ type OpenAPIExample struct {
|
||||
}
|
||||
```
|
||||
|
||||
For reference, see `pkg/apiserver/signozapiserver/querier.go` which defines examples inline for the `/api/v5/query_range` endpoint:
|
||||
For reference, see `pkg/apiserver/o11yapiserver/querier.go` which defines examples inline for the `/api/v5/query_range` endpoint:
|
||||
|
||||
```go
|
||||
if err := router.Handle("/api/v5/query_range", handler.New(provider.authZ.ViewAccess(provider.querierHandler.QueryRange), handler.OpenAPIDef{
|
||||
@@ -337,9 +337,9 @@ func (Step) JSONSchema() (jsonschema.Schema, error) {
|
||||
## What should I remember?
|
||||
|
||||
- **Keep handlers thin**: focus on HTTP concerns and delegate logic to modules/services.
|
||||
- **Always register routes through `signozapiserver`** using `handler.New` and a complete `OpenAPIDef`.
|
||||
- **Always register routes through `o11yapiserver`** using `handler.New` and a complete `OpenAPIDef`.
|
||||
- **Choose accurate request/response types** from the `types` packages so OpenAPI schemas are correct.
|
||||
- **Add `required:"true"`** on fields where the key must be present in the JSON (this is about key presence, not about the zero value).
|
||||
- **Add `nullable:"true"`** on fields that can be `null`. Pay special attention to slices and maps -- in Go these default to `nil` which serializes to `null`. If the field should always be an array, initialize it and do not mark it nullable.
|
||||
- **Implement `Enum()`** on every type that has a fixed set of acceptable values so the JSON schema generates proper `enum` constraints.
|
||||
- **Add request examples** via `RequestExamples` in `OpenAPIDef` for any non-trivial endpoint. See `pkg/apiserver/signozapiserver/querier.go` for reference.
|
||||
- **Add request examples** via `RequestExamples` in `OpenAPIDef` for any non-trivial endpoint. See `pkg/apiserver/o11yapiserver/querier.go` for reference.
|
||||
|
||||
@@ -81,8 +81,8 @@ import (
|
||||
"github.com/gorilla/mux"
|
||||
|
||||
// 3. Internal
|
||||
"github.com/Hanzo O11y/signoz/pkg/errors"
|
||||
"github.com/Hanzo O11y/signoz/pkg/types"
|
||||
"github.com/Hanzo O11y/o11y/pkg/errors"
|
||||
"github.com/Hanzo O11y/o11y/pkg/types"
|
||||
)
|
||||
```
|
||||
|
||||
|
||||
@@ -22,14 +22,14 @@ For example, the [prometheus](/pkg/prometheus) provider delivers a prometheus en
|
||||
|
||||
## How to wire it up?
|
||||
|
||||
The `pkg/signoz` package contains the inversion of control container responsible for wiring providers. It handles instantiation, configuration, and assembly of providers based on configuration metadata.
|
||||
The `pkg/o11y` package contains the inversion of control container responsible for wiring providers. It handles instantiation, configuration, and assembly of providers based on configuration metadata.
|
||||
|
||||
> 💡 **Note**: Coming from a Java background? Providers are similar to Spring beans.
|
||||
|
||||
Wiring up a provider involves three steps:
|
||||
|
||||
1. Wiring up the configuration
|
||||
Add your config from `pkg/<name>/config.go` to the `pkg/signoz/config.Config` struct and in new factories:
|
||||
Add your config from `pkg/<name>/config.go` to the `pkg/o11y/config.Config` struct and in new factories:
|
||||
|
||||
```go
|
||||
type Config struct {
|
||||
@@ -48,7 +48,7 @@ func NewConfig(ctx context.Context, resolverConfig config.ResolverConfig, ....)
|
||||
```
|
||||
|
||||
2. Wiring up the provider
|
||||
Add available provider implementations in `pkg/signoz/provider.go`:
|
||||
Add available provider implementations in `pkg/o11y/provider.go`:
|
||||
|
||||
```go
|
||||
func NewMyProviderFactories() factory.NamedMap[factory.ProviderFactory[myprovider.MyProvider, myprovider.Config]] {
|
||||
@@ -59,7 +59,7 @@ func NewMyProviderFactories() factory.NamedMap[factory.ProviderFactory[myprovide
|
||||
}
|
||||
```
|
||||
|
||||
3. Instantiate the provider by adding it to the `Hanzo O11y` struct in `pkg/signoz/signoz.go`:
|
||||
3. Instantiate the provider by adding it to the `Hanzo O11y` struct in `pkg/o11y/o11y.go`:
|
||||
|
||||
```go
|
||||
type Hanzo O11y struct {
|
||||
@@ -83,7 +83,7 @@ func New(...) (*Hanzo O11y, error) {
|
||||
To use a provider, import its interface. For example, to use the prometheus provider, import `pkg/prometheus/prometheus.go`:
|
||||
|
||||
```go
|
||||
import "github.com/Hanzo O11y/signoz/pkg/prometheus/prometheus"
|
||||
import "github.com/Hanzo O11y/o11y/pkg/prometheus/prometheus"
|
||||
|
||||
func CreateSomething(ctx context.Context, prometheus prometheus.Prometheus) {
|
||||
...
|
||||
|
||||
@@ -221,7 +221,7 @@ The implementation (e.g. `pkg/tokenizer/opaquetokenizer/provider.go`) implements
|
||||
|
||||
## How to wire it up
|
||||
|
||||
Wiring happens in `pkg/signoz/signoz.go`.
|
||||
Wiring happens in `pkg/o11y/o11y.go`.
|
||||
|
||||
### 1. Instantiate the service
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Types
|
||||
|
||||
Domain types in `pkg/types/<domain>/` live on three serialization boundaries — inbound HTTP, outbound HTTP, and SQL — on top of an in-memory domain representation. SigNoz's convention is **core-type-first**: every domain defines a single canonical type `X`, and specialized flavors (`PostableX`, `GettableX`, `UpdatableX`, `StorableX`) are introduced **only when they actually differ from `X`**. This guide spells out when each flavor is warranted and how they relate to each other.
|
||||
Domain types in `pkg/types/<domain>/` live on three serialization boundaries — inbound HTTP, outbound HTTP, and SQL — on top of an in-memory domain representation. O11y's convention is **core-type-first**: every domain defines a single canonical type `X`, and specialized flavors (`PostableX`, `GettableX`, `UpdatableX`, `StorableX`) are introduced **only when they actually differ from `X`**. This guide spells out when each flavor is warranted and how they relate to each other.
|
||||
|
||||
Before reading, make sure you have read [abstractions.md](abstractions.md) — the rules here build on its guidance that every new type must earn its place.
|
||||
|
||||
|
||||
@@ -306,7 +306,7 @@ import ec2Url from '@/assets/Logos/ec2.svg';
|
||||
2. Add your data source object to the `onboardingConfigWithLinks` array, referencing the imported variable for `imgUrl`
|
||||
3. Test the flow locally with `pnpm dev`
|
||||
4. Validation:
|
||||
- Navigate to the [onboarding page](http://localhost:3301/get-started-with-signoz-cloud) on your local machine
|
||||
- Navigate to the [onboarding page](http://localhost:3301/get-started-with-o11y-cloud) on your local machine
|
||||
- Data source appears in the list
|
||||
- Search keywords work correctly
|
||||
- All links redirect to the correct pages
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# E2E Tests
|
||||
|
||||
SigNoz uses end-to-end tests to verify the frontend works correctly against a real backend. These tests use Playwright to drive a real browser against a containerized SigNoz stack that pytest brings up — the same fixture graph integration tests use, with an extra HTTP seeder container for per-spec telemetry seeding.
|
||||
O11y uses end-to-end tests to verify the frontend works correctly against a real backend. These tests use Playwright to drive a real browser against a containerized O11y stack that pytest brings up — the same fixture graph integration tests use, with an extra HTTP seeder container for per-spec telemetry seeding.
|
||||
|
||||
## How to set up the E2E test environment?
|
||||
|
||||
@@ -30,7 +30,7 @@ yarn install:browsers # one-time Playwright browser install
|
||||
|
||||
### Starting the Test Environment
|
||||
|
||||
To spin up the backend stack (SigNoz, ClickHouse, Postgres, Zookeeper, Zeus mock, gateway mock, seeder, migrator-with-web) and keep it running:
|
||||
To spin up the backend stack (O11y, ClickHouse, Postgres, Zookeeper, Zeus mock, gateway mock, seeder, migrator-with-web) and keep it running:
|
||||
|
||||
```bash
|
||||
cd tests
|
||||
@@ -46,7 +46,7 @@ This command will:
|
||||
- Write backend coordinates to `tests/e2e/.env.local` (loaded by `playwright.config.ts` via dotenv)
|
||||
- Keep containers running via the `--reuse` flag
|
||||
|
||||
The `--with-web` flag builds the frontend into the SigNoz container — required for E2E. The build takes ~4 mins on a cold start.
|
||||
The `--with-web` flag builds the frontend into the O11y container — required for E2E. The build takes ~4 mins on a cold start.
|
||||
|
||||
### Stopping the Test Environment
|
||||
|
||||
@@ -60,7 +60,7 @@ uv run pytest --basetemp=./tmp/ -vv --teardown \
|
||||
|
||||
## Understanding the E2E Test Framework
|
||||
|
||||
Playwright drives a real browser (Chromium / Firefox / WebKit) against the running SigNoz frontend. The backend is brought up by the same pytest fixture graph integration tests use, so both suites share one source of truth for container lifecycle, license seeding, and test-user accounts.
|
||||
Playwright drives a real browser (Chromium / Firefox / WebKit) against the running O11y frontend. The backend is brought up by the same pytest fixture graph integration tests use, so both suites share one source of truth for container lifecycle, license seeding, and test-user accounts.
|
||||
|
||||
- **Why Playwright?** First-class TypeScript support, network interception, automatic wait-for-visibility, built-in trace viewer that captures every request/response the UI triggers — so specs rarely need separate API probes alongside UI clicks.
|
||||
- **Why pytest for lifecycle?** The integration suite already owns container bring-up. Reusing it keeps the E2E stack exactly in sync with the integration stack and avoids a parallel lifecycle framework.
|
||||
@@ -246,11 +246,11 @@ yarn report # open the last HTML report (artifacts/html)
|
||||
|
||||
### Staging fallback
|
||||
|
||||
Point `SIGNOZ_E2E_BASE_URL` at a remote env via `.env` — no local backend bring-up, no `.env.local` generated, Playwright hits the URL directly:
|
||||
Point `O11Y_E2E_BASE_URL` at a remote env via `.env` — no local backend bring-up, no `.env.local` generated, Playwright hits the URL directly:
|
||||
|
||||
```bash
|
||||
cd tests/e2e
|
||||
cp .env.example .env # fill SIGNOZ_E2E_USERNAME / PASSWORD
|
||||
cp .env.example .env # fill O11Y_E2E_USERNAME / PASSWORD
|
||||
yarn test:staging
|
||||
```
|
||||
|
||||
@@ -260,10 +260,10 @@ yarn test:staging
|
||||
|
||||
| Variable | Description |
|
||||
|---|---|
|
||||
| `SIGNOZ_E2E_BASE_URL` | Base URL the browser targets. Written by `bootstrap/setup.py` for local mode; set manually for staging. |
|
||||
| `SIGNOZ_E2E_USERNAME` | Admin email. Bootstrap writes `admin@integration.test`. |
|
||||
| `SIGNOZ_E2E_PASSWORD` | Admin password. Bootstrap writes the integration-test default. |
|
||||
| `SIGNOZ_E2E_SEEDER_URL` | Seeder HTTP base URL — hit by specs that need per-test telemetry. |
|
||||
| `O11Y_E2E_BASE_URL` | Base URL the browser targets. Written by `bootstrap/setup.py` for local mode; set manually for staging. |
|
||||
| `O11Y_E2E_USERNAME` | Admin email. Bootstrap writes `admin@integration.test`. |
|
||||
| `O11Y_E2E_PASSWORD` | Admin password. Bootstrap writes the integration-test default. |
|
||||
| `O11Y_E2E_SEEDER_URL` | Seeder HTTP base URL — hit by specs that need per-test telemetry. |
|
||||
|
||||
Loading order in `playwright.config.ts`: `.env` first (user-provided, staging), then `.env.local` with `override: true` (bootstrap-generated, local mode). Anything already set in `process.env` at yarn-test time wins because dotenv doesn't touch vars that are already present.
|
||||
|
||||
@@ -282,7 +282,7 @@ The same pytest flags integration tests expose work here, since E2E reuses the s
|
||||
|
||||
- `--reuse` — keep containers warm between runs (required for all iteration).
|
||||
- `--teardown` — tear everything down.
|
||||
- `--with-web` — build the frontend into the SigNoz container. **Required for E2E**; integration tests don't need it.
|
||||
- `--with-web` — build the frontend into the O11y container. **Required for E2E**; integration tests don't need it.
|
||||
- `--sqlstore-provider`, `--postgres-version`, `--clickhouse-version`, etc. — see `docs/contributing/integration.md`.
|
||||
|
||||
## What should I remember?
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Integration Tests
|
||||
|
||||
SigNoz uses integration tests to verify that different components work together correctly in a real environment. These tests run against actual services (ClickHouse, PostgreSQL, SigNoz, Zeus mock, Keycloak, etc.) spun up as containers, so suites exercise the same code paths production does.
|
||||
O11y uses integration tests to verify that different components work together correctly in a real environment. These tests run against actual services (ClickHouse, PostgreSQL, O11y, Zeus mock, Keycloak, etc.) spun up as containers, so suites exercise the same code paths production does.
|
||||
|
||||
## How to set up the integration test environment?
|
||||
|
||||
@@ -41,7 +41,7 @@ uv run pytest --basetemp=./tmp/ -vv --reuse integration/bootstrap/setup.py::test
|
||||
```
|
||||
|
||||
This command will:
|
||||
- Start all required services (ClickHouse, PostgreSQL, Zookeeper, SigNoz, Zeus mock, gateway mock)
|
||||
- Start all required services (ClickHouse, PostgreSQL, Zookeeper, O11y, Zeus mock, gateway mock)
|
||||
- Register an admin user
|
||||
- Keep containers running via the `--reuse` flag
|
||||
|
||||
@@ -81,7 +81,7 @@ tests/
|
||||
│ ├── http.py # WireMock helpers
|
||||
│ ├── keycloak.py # IdP container
|
||||
│ ├── postgres.py
|
||||
│ ├── signoz.py # SigNoz-backend container
|
||||
│ ├── o11y.py # O11y-backend container
|
||||
│ ├── sql.py
|
||||
│ ├── types.py
|
||||
│ └── ... # logs, metrics, traces, alerts, dashboards, ...
|
||||
@@ -110,7 +110,7 @@ Each test suite follows these principles:
|
||||
|
||||
### Test Suite Design
|
||||
|
||||
Test suites should target functional domains or subsystems within SigNoz. When designing a test suite, consider these principles:
|
||||
Test suites should target functional domains or subsystems within O11y. When designing a test suite, consider these principles:
|
||||
|
||||
- **Functional Cohesion**: Group tests around a specific capability or service boundary
|
||||
- **Data Flow**: Follow the path of data through related components
|
||||
@@ -131,15 +131,15 @@ from fixtures.logger import setup_logger
|
||||
logger = setup_logger(__name__)
|
||||
|
||||
|
||||
def test_version(signoz: types.SigNoz) -> None:
|
||||
def test_version(o11y: types.O11y) -> None:
|
||||
response = requests.get(
|
||||
signoz.self.host_configs["8080"].get("/api/v1/version"),
|
||||
o11y.self.host_configs["8080"].get("/api/v1/version"),
|
||||
timeout=2,
|
||||
)
|
||||
logger.info(response)
|
||||
```
|
||||
|
||||
We have written a simple test which calls the `version` endpoint of the SigNoz backend. **To run just this function, run the following command:**
|
||||
We have written a simple test which calls the `version` endpoint of the O11y backend. **To run just this function, run the following command:**
|
||||
|
||||
```bash
|
||||
cd tests
|
||||
@@ -160,10 +160,10 @@ from fixtures.logger import setup_logger
|
||||
logger = setup_logger(__name__)
|
||||
|
||||
|
||||
def test_user_registration(signoz: types.SigNoz) -> None:
|
||||
def test_user_registration(o11y: types.O11y) -> None:
|
||||
"""Test user registration functionality."""
|
||||
response = requests.post(
|
||||
signoz.self.host_configs["8080"].get("/api/v1/register"),
|
||||
o11y.self.host_configs["8080"].get("/api/v1/register"),
|
||||
json={
|
||||
"name": "testuser",
|
||||
"orgId": "",
|
||||
@@ -226,7 +226,7 @@ Tests can be configured using pytest options:
|
||||
- `--postgres-version` — PostgreSQL version (default: `15`)
|
||||
- `--clickhouse-version` — ClickHouse version (default: `25.5.6`)
|
||||
- `--zookeeper-version` — Zookeeper version (default: `3.7.1`)
|
||||
- `--schema-migrator-version` — SigNoz schema migrator version (default: `v0.144.2`)
|
||||
- `--schema-migrator-version` — O11y schema migrator version (default: `v0.144.2`)
|
||||
|
||||
Example:
|
||||
|
||||
@@ -243,9 +243,9 @@ uv run pytest --basetemp=./tmp/ -vv --reuse \
|
||||
- **Do not pre-emptively teardown before setup.** If the stack is partially up, `--reuse` picks up from wherever it is. `make py-test-teardown` then `make py-test-setup` wastes minutes.
|
||||
- **Follow the naming convention** with two-digit numeric prefixes (`01_`, `02_`) for ordered test execution within a suite.
|
||||
- **Use proper timeouts** in HTTP requests to avoid hanging tests (`timeout=5` is typical).
|
||||
- **Clean up test data** between tests in the same suite to avoid interference — or rely on a fresh SigNoz container if you need full isolation.
|
||||
- **Clean up test data** between tests in the same suite to avoid interference — or rely on a fresh O11y container if you need full isolation.
|
||||
- **Use descriptive test names** that clearly indicate what is being tested.
|
||||
- **Leverage fixtures** for common setup. The shared fixture package is at `tests/fixtures/` — reuse before adding new ones.
|
||||
- **Test both success and failure scenarios** (4xx / 5xx paths) to ensure robust functionality.
|
||||
- **Run `make py-fmt` and `make py-lint` before committing** Python changes — black + isort + autoflake + pylint.
|
||||
- **`--sqlite-mode=wal` does not work on macOS.** The integration test environment runs SigNoz inside a Linux container with the SQLite database file mounted from the macOS host. WAL mode requires shared memory between connections, and connections crossing the VM boundary (macOS host ↔ Linux container) cannot share the WAL index, resulting in `SQLITE_IOERR_SHORT_READ`. WAL mode is tested in CI on Linux only.
|
||||
- **`--sqlite-mode=wal` does not work on macOS.** The integration test environment runs O11y inside a Linux container with the SQLite database file mounted from the macOS host. WAL mode requires shared memory between connections, and connections crossing the VM boundary (macOS host ↔ Linux container) cannot share the WAL index, resulting in `SQLITE_IOERR_SHORT_READ`. WAL mode is tested in CI on Linux only.
|
||||
|
||||
@@ -6,17 +6,17 @@ This guide provides a step-by-step walkthrough for setting up the **OpenTelemetr
|
||||
<br/>
|
||||
|
||||
__Table of Contents__
|
||||
- [Send data to Hanzo O11y Self-hosted with Docker](#send-data-to-signoz-self-hosted-with-docker)
|
||||
- [Send data to Hanzo O11y Self-hosted with Docker](#send-data-to-o11y-self-hosted-with-docker)
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Clone the OpenTelemetry Demo App Repository](#clone-the-opentelemetry-demo-app-repository)
|
||||
- [Modify OpenTelemetry Collector Config](#modify-opentelemetry-collector-config)
|
||||
- [Start the OpenTelemetry Demo App](#start-the-opentelemetry-demo-app)
|
||||
- [Monitor with Hanzo O11y (Docker)](#monitor-with-signoz-docker)
|
||||
- [Send data to Hanzo O11y Self-hosted with Kubernetes](#send-data-to-signoz-self-hosted-with-kubernetes)
|
||||
- [Monitor with Hanzo O11y (Docker)](#monitor-with-o11y-docker)
|
||||
- [Send data to Hanzo O11y Self-hosted with Kubernetes](#send-data-to-o11y-self-hosted-with-kubernetes)
|
||||
- [Prerequisites](#prerequisites-1)
|
||||
- [Install Helm Repo and Charts](#install-helm-repo-and-charts)
|
||||
- [Start the OpenTelemetry Demo App](#start-the-opentelemetry-demo-app-1)
|
||||
- [Monitor with Hanzo O11y (Kubernetes)](#monitor-with-signoz-kubernetes)
|
||||
- [Monitor with Hanzo O11y (Kubernetes)](#monitor-with-o11y-kubernetes)
|
||||
- [What's next](#whats-next)
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ service:
|
||||
exporters: [otlp]
|
||||
```
|
||||
|
||||
The Hanzo O11y OTel collector [sigNoz's otel-collector service] listens at 4317 port on localhost. When the OTel demo app is running within a Docker container and needs to transmit telemetry data to Hanzo O11y, it cannot directly reference 'localhost' as this would refer to the container's own internal network. Instead, Docker provides a special DNS name, `host.docker.internal`, which resolves to the host machine's IP address from within containers. By configuring the OpenTelemetry Demo application to send data to `host.docker.internal:4317`, we establish a network path that allows the containerized application to transmit telemetry data across the container boundary to the Hanzo O11y OTel collector running on the host machine's port 4317.
|
||||
The Hanzo O11y OTel collector [o11y's otel-collector service] listens at 4317 port on localhost. When the OTel demo app is running within a Docker container and needs to transmit telemetry data to Hanzo O11y, it cannot directly reference 'localhost' as this would refer to the container's own internal network. Instead, Docker provides a special DNS name, `host.docker.internal`, which resolves to the host machine's IP address from within containers. By configuring the OpenTelemetry Demo application to send data to `host.docker.internal:4317`, we establish a network path that allows the containerized application to transmit telemetry data across the container boundary to the Hanzo O11y OTel collector running on the host machine's port 4317.
|
||||
|
||||
>
|
||||
> Note: When merging extra configuration values with the existing collector config (`src/otel-collector/otelcol-config.yml`), objects are merged and arrays are replaced resulting in previous pipeline configurations getting overridden.
|
||||
@@ -83,7 +83,7 @@ exporters:
|
||||
tls:
|
||||
insecure: false
|
||||
headers:
|
||||
signoz-access-token: <SIGNOZ-KEY>
|
||||
o11y-access-token: <O11Y-KEY>
|
||||
debug:
|
||||
verbosity: detailed
|
||||
|
||||
@@ -128,7 +128,7 @@ The result should look similar to this,
|
||||
Navigate to `http://localhost:8081/` where you can access OTel demo app UI. Generate some traffic to send to Hanzo O11y [Docker].
|
||||
|
||||
## Monitor with Hanzo O11y [Docker]
|
||||
Signoz exposes its UI at `http://localhost:8080/`. You should be able to see multiple services listed down as shown in the snapshot below.
|
||||
O11y exposes its UI at `http://localhost:8080/`. You should be able to see multiple services listed down as shown in the snapshot below.
|
||||
|
||||
|
||||

|
||||
@@ -173,7 +173,7 @@ default:
|
||||
- name: OTEL_RESOURCE_ATTRIBUTES
|
||||
value: 'service.name=$(OTEL_SERVICE_NAME),service.namespace=opentelemetry-demo'
|
||||
- name: OTEL_COLLECTOR_NAME
|
||||
value: signoz-otel-collector.<namespace>.svc.cluster.local
|
||||
value: otel-collector.<namespace>.svc.cluster.local
|
||||
```
|
||||
Replace namespace with your appropriate namespace. This file will replace the chart’s existing settings with our new ones, ensuring telemetry data is sent to Hanzo O11y [Kubernetes].
|
||||
|
||||
@@ -193,7 +193,7 @@ opentelemetry-collector:
|
||||
tls:
|
||||
insecure: false
|
||||
headers:
|
||||
signoz-access-token: <SIGNOZ-KEY>
|
||||
o11y-access-token: <O11Y-KEY>
|
||||
debug:
|
||||
verbosity: detailed
|
||||
service:
|
||||
@@ -238,7 +238,7 @@ Navigate to `http://localhost:8081/` where you can access OTel demo app UI. Gene
|
||||
|
||||
|
||||
## Monitor with Hanzo O11y [Kubernetes]
|
||||
Signoz exposes it's UI at `http://localhost:8080/`. You should be able to see multiple services listed down as shown in the snapshot below.
|
||||
O11y exposes it's UI at `http://localhost:8080/`. You should be able to see multiple services listed down as shown in the snapshot below.
|
||||
|
||||
|
||||

|
||||
@@ -253,4 +253,4 @@ This verifies that your OTel demo app is successfully sending telemetry data to
|
||||
|
||||
Don't forget to check our OpenTelemetry [track](https://o11y.hanzo.ai/resource-center/opentelemetry/), guaranteed to take you from a newbie to sensei in no time!
|
||||
|
||||
Also from a fellow OTel fan to another, we at [Hanzo O11y](https://o11y.hanzo.ai/) are building an open-source, OTel native, observability platform (one of its kind). So, show us love - star us on [GitHub](https://github.com/Hanzo O11y/signoz), nitpick our [docs](https://o11y.hanzo.ai/docs/introduction/), or just tell your app we’re the ones who’ll catch its crashes mid-flight and finally shush all the 3am panic calls!
|
||||
Also from a fellow OTel fan to another, we at [Hanzo O11y](https://o11y.hanzo.ai/) are building an open-source, OTel native, observability platform (one of its kind). So, show us love - star us on [GitHub](https://github.com/Hanzo O11y/o11y), nitpick our [docs](https://o11y.hanzo.ai/docs/introduction/), or just tell your app we’re the ones who’ll catch its crashes mid-flight and finally shush all the 3am panic calls!
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
description: Prefer SigNoz UI and icons across frontend code
|
||||
description: Prefer O11y UI and icons across frontend code
|
||||
globs: **/*.{ts,tsx,js,jsx}
|
||||
alwaysApply: true
|
||||
---
|
||||
@@ -16,4 +16,4 @@ For all frontend implementation work in this repository:
|
||||
## Migration guidance
|
||||
|
||||
- If touching a file that already uses non-`components/ui/icons` icons, prefer migrating that file to `components/ui/icons` as part of the same change when practical.
|
||||
- If a required component or icon is missing from SigNoz packages, call this out explicitly in the PR/summary before introducing alternatives.
|
||||
- If a required component or icon is missing from O11y packages, call this out explicitly in the PR/summary before introducing alternatives.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "./node_modules/oxlint/configuration_schema.json",
|
||||
"jsPlugins": [
|
||||
"./plugins/signoz.mjs",
|
||||
"./plugins/o11y.mjs",
|
||||
"eslint-plugin-sonarjs"
|
||||
],
|
||||
"plugins": [
|
||||
@@ -279,15 +279,15 @@
|
||||
// "react-hooks/unsupported-syntax": "warn",
|
||||
// "react-hooks/use-memo": "error",
|
||||
// "react-hooks/incompatible-library": "warn",
|
||||
"signoz/no-unsupported-asset-pattern": "error",
|
||||
"o11y/no-unsupported-asset-pattern": "error",
|
||||
// Prevents the wrong usage of assets to break custom base path installations
|
||||
"signoz/no-zustand-getstate-in-hooks": "error",
|
||||
"o11y/no-zustand-getstate-in-hooks": "error",
|
||||
// Prevents useStore.getState() - export standalone actions instead
|
||||
"signoz/no-navigator-clipboard": "error",
|
||||
"o11y/no-navigator-clipboard": "error",
|
||||
// Prevents navigator.clipboard - use useCopyToClipboard hook instead (disabled in tests via override)
|
||||
"signoz/no-raw-absolute-path": "error",
|
||||
"o11y/no-raw-absolute-path": "error",
|
||||
// Prevents window.open(path), window.location.origin + path, window.location.href = path
|
||||
"signoz/no-antd-components": "error",
|
||||
"o11y/no-antd-components": "error",
|
||||
// Prevents the usage of specific antd components in favor of our lib
|
||||
"no-restricted-globals": [
|
||||
"error",
|
||||
@@ -529,12 +529,12 @@
|
||||
"rules": {
|
||||
"import/first": "off",
|
||||
// Should ignore due to mocks
|
||||
"signoz/no-navigator-clipboard": "off",
|
||||
"o11y/no-navigator-clipboard": "off",
|
||||
// Tests can use navigator.clipboard directly,
|
||||
"signoz/no-raw-absolute-path":"off",
|
||||
"o11y/no-raw-absolute-path":"off",
|
||||
"no-restricted-globals": "off",
|
||||
// Tests need raw localStorage/sessionStorage to seed DOM state for isolation
|
||||
"signoz/no-zustand-getstate-in-hooks": "off",
|
||||
"o11y/no-zustand-getstate-in-hooks": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off", // Tests often need any for mocks/stubs
|
||||
"@typescript-eslint/explicit-module-boundary-types": "off", // Return types not required in tests
|
||||
"@typescript-eslint/explicit-function-return-type": "off" // Same as above rule, don't need to care about return type
|
||||
@@ -547,7 +547,7 @@
|
||||
"**/*Store.tsx"
|
||||
],
|
||||
"rules": {
|
||||
"signoz/no-zustand-getstate-in-hooks": "off"
|
||||
"o11y/no-zustand-getstate-in-hooks": "off"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
// Mirrors the logic in ThemeProvider (hooks/useDarkMode/index.tsx).
|
||||
(function () {
|
||||
try {
|
||||
// When served under a URL prefix (e.g. /signoz/), storage keys are scoped
|
||||
// When served under a URL prefix (e.g. /o11y/), storage keys are scoped
|
||||
// to that prefix by the React app (see utils/storage.ts getScopedKey).
|
||||
// Read the <base> tag — already populated by the Go template — to derive
|
||||
// the same prefix here, before any JS module has loaded.
|
||||
@@ -89,17 +89,17 @@
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
<script type="application/json" id="signoz-boot-settings">
|
||||
<script type="application/json" id="o11y-boot-settings">
|
||||
[[.Settings]]
|
||||
</script>
|
||||
<script>
|
||||
try {
|
||||
var _el = document.getElementById('signoz-boot-settings');
|
||||
window.signozBootData = {
|
||||
var _el = document.getElementById('o11y-boot-settings');
|
||||
window.o11yBootData = {
|
||||
settings: _el ? JSON.parse(_el.textContent) : null,
|
||||
};
|
||||
} catch (e) {
|
||||
window.signozBootData = { settings: null };
|
||||
window.o11yBootData = { settings: null };
|
||||
}
|
||||
</script>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
@@ -108,7 +108,7 @@
|
||||
<script>
|
||||
var PYLON_APP_ID = '<%- PYLON_APP_ID %>';
|
||||
var pylonSettings =
|
||||
((window.signozBootData || {}).settings || {}).pylon || {};
|
||||
((window.o11yBootData || {}).settings || {}).pylon || {};
|
||||
var pylonEnabled = pylonSettings.enabled !== false;
|
||||
if (PYLON_APP_ID && pylonEnabled) {
|
||||
(function () {
|
||||
@@ -147,7 +147,7 @@
|
||||
<script>
|
||||
var APPCUES_APP_ID = '<%- APPCUES_APP_ID %>';
|
||||
var appcuesSettings =
|
||||
((window.signozBootData || {}).settings || {}).appcues || {};
|
||||
((window.o11yBootData || {}).settings || {}).appcues || {};
|
||||
var appcuesEnabled = appcuesSettings.enabled !== false;
|
||||
if (APPCUES_APP_ID && appcuesEnabled) {
|
||||
(function (d, t) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Oxlint custom rules plugin for SigNoz.
|
||||
* Oxlint custom rules plugin for O11y.
|
||||
*
|
||||
* This plugin aggregates all custom SigNoz linting rules.
|
||||
* This plugin aggregates all custom O11y linting rules.
|
||||
* Individual rules are defined in the ./rules directory.
|
||||
*/
|
||||
|
||||
@@ -13,7 +13,7 @@ import noAntdComponents from './rules/no-antd-components.mjs';
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
name: 'signoz',
|
||||
name: 'o11y',
|
||||
},
|
||||
rules: {
|
||||
'no-zustand-getstate-in-hooks': noZustandGetStateInHooks,
|
||||
@@ -2,7 +2,7 @@
|
||||
* Rule: no-raw-absolute-path
|
||||
*
|
||||
* Catches patterns that break at runtime when the app is served from a
|
||||
* sub-path (e.g. /signoz/):
|
||||
* sub-path (e.g. /o11y/):
|
||||
*
|
||||
* 1. window.open(path, '_blank')
|
||||
* → use openInNewTab(path) which calls withBasePath internally
|
||||
|
||||
@@ -19,7 +19,7 @@ const allDeps = {
|
||||
};
|
||||
|
||||
// 4. Filter for @hanzo packages (design system + libs)
|
||||
const signozPackages = Object.keys(allDeps).filter((dep) =>
|
||||
const o11yPackages = Object.keys(allDeps).filter((dep) =>
|
||||
dep.startsWith('@hanzo/'),
|
||||
);
|
||||
|
||||
@@ -36,14 +36,14 @@ const fileContent = `// --------------------------------------------------------
|
||||
// PR for reference: https://github.com/hanzoai/o11y/pull/9694
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
${signozPackages.map((pkg) => `import '${pkg}';`).join('\n')}
|
||||
${o11yPackages.map((pkg) => `import '${pkg}';`).join('\n')}
|
||||
`;
|
||||
|
||||
// 6. Write the file
|
||||
try {
|
||||
fs.writeFileSync(registryPath, fileContent);
|
||||
console.log(
|
||||
`✅ Auto-import registry updated with ${signozPackages.length} @hanzo packages.`,
|
||||
`✅ Auto-import registry updated with ${o11yPackages.length} @hanzo packages.`,
|
||||
);
|
||||
} catch (err) {
|
||||
console.error('❌ Failed to update auto-import registry:', err);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
sonar.organization=signoz
|
||||
sonar.projectKey=SigNoz_signoz
|
||||
sonar.organization=o11y
|
||||
sonar.projectKey=O11y_o11y
|
||||
|
||||
# relative paths to source directories. More details and properties are described
|
||||
# in https://sonarcloud.io/documentation/project-administration/narrowing-the-focus/
|
||||
|
||||
@@ -82,7 +82,7 @@ function createMockUser(overrides: Partial<IUser> = {}): IUser {
|
||||
accessJwt: 'test-token',
|
||||
refreshJwt: 'test-refresh-token',
|
||||
id: 'user-id',
|
||||
email: 'test@signoz.io',
|
||||
email: 'test@o11y.io',
|
||||
displayName: 'Test User',
|
||||
createdAt: 1732544623,
|
||||
organization: 'Test Org',
|
||||
@@ -1017,7 +1017,7 @@ describe('PrivateRoute', () => {
|
||||
|
||||
describe('Onboarding Flow (Cloud Users)', () => {
|
||||
it('should redirect to onboarding when first user has not completed onboarding', async () => {
|
||||
// Set up exactly one user (not admin@signoz.cloud) to trigger first user check
|
||||
// Set up exactly one user (not admin@o11y.cloud) to trigger first user check
|
||||
mockUsersData = [{ email: 'test@example.com' }];
|
||||
|
||||
renderPrivateRoute({
|
||||
|
||||
@@ -292,7 +292,7 @@ function App(): JSX.Element {
|
||||
isChatSupportEnabled &&
|
||||
!showAddCreditCardModal &&
|
||||
(isCloudUser || isEnterpriseSelfHostedUser) &&
|
||||
(window.signozBootData?.settings?.pylon.enabled ?? true)
|
||||
(window.o11yBootData?.settings?.pylon.enabled ?? true)
|
||||
) {
|
||||
const email = user.email || '';
|
||||
const secret = process.env.PYLON_IDENTITY_SECRET || '';
|
||||
@@ -343,7 +343,7 @@ function App(): JSX.Element {
|
||||
|
||||
if (
|
||||
!isSentryInitialized &&
|
||||
(window.signozBootData?.settings?.sentry.enabled ?? true)
|
||||
(window.o11yBootData?.settings?.sentry.enabled ?? true)
|
||||
) {
|
||||
Sentry.init({
|
||||
dsn: process.env.SENTRY_DSN,
|
||||
|
||||
@@ -206,7 +206,7 @@ const createEventsResponse = ({
|
||||
body: eventBodies[reasonIndex],
|
||||
id,
|
||||
resources_string: {
|
||||
'k8s.cluster.name': 'signoz-test',
|
||||
'k8s.cluster.name': 'o11y-test',
|
||||
'k8s.node.name': '',
|
||||
'k8s.object.api_version': 'batch/v1',
|
||||
'k8s.object.fieldpath': '',
|
||||
@@ -214,7 +214,7 @@ const createEventsResponse = ({
|
||||
'k8s.object.name': `demo-object-${cumulativeIndex}`,
|
||||
'k8s.object.resource_version': `${462900 + cumulativeIndex}`,
|
||||
'k8s.object.uid': `object-uid-${cumulativeIndex}`,
|
||||
'signoz.component': 'otel-deployment',
|
||||
'o11y.component': 'otel-deployment',
|
||||
},
|
||||
scope_name:
|
||||
'github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8seventsreceiver',
|
||||
|
||||
@@ -6,24 +6,24 @@ import {
|
||||
interceptorsRequestResponse,
|
||||
interceptorsResponse,
|
||||
} from 'api';
|
||||
import { getSigNozInstanceUrl } from 'utils/signozInstanceUrl';
|
||||
import { getO11yInstanceUrl } from 'utils/o11yInstanceUrl';
|
||||
|
||||
/** Path-only base for the AI Assistant API. */
|
||||
export const AI_API_PATH = '/api/v1/assistant';
|
||||
|
||||
/** Header that tells the AI backend which SigNoz instance to query against. */
|
||||
export const SIGNOZ_URL_HEADER = 'X-SigNoz-URL';
|
||||
/** Header that tells the AI backend which O11y instance to query against. */
|
||||
export const O11Y_URL_HEADER = 'X-O11y-URL';
|
||||
|
||||
/**
|
||||
* Sets `X-SigNoz-URL` on every outgoing AI Assistant request. The backend
|
||||
* needs the originating SigNoz instance URL for multi-tenant deployments;
|
||||
* when omitted it falls back to its `SIGNOZ_API_URL` env var.
|
||||
* Sets `X-O11y-URL` on every outgoing AI Assistant request. The backend
|
||||
* needs the originating O11y instance URL for multi-tenant deployments;
|
||||
* when omitted it falls back to its `O11Y_API_URL` env var.
|
||||
*/
|
||||
export const interceptorsRequestSigNozUrl = (
|
||||
export const interceptorsRequestO11yUrl = (
|
||||
value: InternalAxiosRequestConfig,
|
||||
): InternalAxiosRequestConfig => {
|
||||
if (value.headers) {
|
||||
value.headers[SIGNOZ_URL_HEADER] = getSigNozInstanceUrl();
|
||||
value.headers[O11Y_URL_HEADER] = getO11yInstanceUrl();
|
||||
}
|
||||
return value;
|
||||
};
|
||||
@@ -60,7 +60,7 @@ export function getAIBaseUrl(): string {
|
||||
/**
|
||||
* Dedicated axios instance for the AI Assistant.
|
||||
*
|
||||
* Mirrors the request/response interceptor stack of the main SigNoz axios
|
||||
* Mirrors the request/response interceptor stack of the main O11y axios
|
||||
* instance — most importantly `interceptorRejected`, which transparently
|
||||
* rotates the access token via `/sessions/rotate` on a 401 and replays the
|
||||
* original request. That's why we don't need any AI-specific 401 handling
|
||||
@@ -74,7 +74,7 @@ export const AIAssistantInstance = axios.create({});
|
||||
|
||||
AIAssistantInstance.interceptors.request.use(interceptorsRequestResponse);
|
||||
AIAssistantInstance.interceptors.request.use(interceptorsRequestBasePath);
|
||||
AIAssistantInstance.interceptors.request.use(interceptorsRequestSigNozUrl);
|
||||
AIAssistantInstance.interceptors.request.use(interceptorsRequestO11yUrl);
|
||||
AIAssistantInstance.interceptors.response.use(
|
||||
interceptorsResponse,
|
||||
interceptorRejected,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* to resume, which each return a new executionId to open a fresh SSE stream.
|
||||
*
|
||||
* Types in this file re-use the OpenAPI-generated DTOs in
|
||||
* `src/api/ai-assistant/sigNozAIAssistantAPI.schemas.ts`.
|
||||
* `src/api/ai-assistant/o11yAIAssistantAPI.schemas.ts`.
|
||||
* Local types are defined only when the UI needs a different shape — for
|
||||
* example, the SSE event union adds a literal `type` discriminator that the
|
||||
* generated event DTOs leave loose.
|
||||
@@ -57,15 +57,15 @@ import type {
|
||||
ThreadSummaryDTO,
|
||||
ToolCallEventDTO,
|
||||
ToolResultEventDTO,
|
||||
} from './sigNozAIAssistantAPI.schemas';
|
||||
} from './o11yAIAssistantAPI.schemas';
|
||||
import { LOCALSTORAGE } from 'constants/localStorage';
|
||||
|
||||
import {
|
||||
AIAssistantInstance,
|
||||
getAIBaseUrl,
|
||||
SIGNOZ_URL_HEADER,
|
||||
O11Y_URL_HEADER,
|
||||
} from '../AIAPIInstance';
|
||||
import { getSigNozInstanceUrl } from 'utils/signozInstanceUrl';
|
||||
import { getO11yInstanceUrl } from 'utils/o11yInstanceUrl';
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SSE-only auth wrapper.
|
||||
@@ -134,7 +134,7 @@ async function fetchSSEWithAuth(
|
||||
): Promise<Response> {
|
||||
const send = async (token: string | null): Promise<Response> => {
|
||||
const headers: Record<string, string> = {
|
||||
[SIGNOZ_URL_HEADER]: getSigNozInstanceUrl(),
|
||||
[O11Y_URL_HEADER]: getO11yInstanceUrl(),
|
||||
};
|
||||
if (token) {
|
||||
headers.Authorization = `Bearer ${token}`;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/**
|
||||
* ! Do not edit manually
|
||||
* * The file has been auto-generated using Orval for SigNoz AI Assistant
|
||||
* * The file has been auto-generated using Orval for O11y AI Assistant
|
||||
* * regenerate with 'yarn generate:api'
|
||||
* SigNoz AI Assistant API
|
||||
* O11y AI Assistant API
|
||||
* OpenAPI spec version: 0.1.0
|
||||
*/
|
||||
import { useMutation, useQuery } from 'react-query';
|
||||
@@ -65,7 +65,7 @@ import type {
|
||||
UpdateThreadApiV1AssistantThreadsThreadIdPatchHeaders,
|
||||
UpdateThreadApiV1AssistantThreadsThreadIdPatchPathParameters,
|
||||
UpdateThreadRequestDTO,
|
||||
} from './sigNozAIAssistantAPI.schemas';
|
||||
} from './o11yAIAssistantAPI.schemas';
|
||||
|
||||
import {
|
||||
GeneratedAPIInstance,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/**
|
||||
* ! Do not edit manually
|
||||
* * The file has been auto-generated using Orval for SigNoz AI Assistant
|
||||
* * The file has been auto-generated using Orval for O11y AI Assistant
|
||||
* * regenerate with 'yarn generate:api'
|
||||
* SigNoz AI Assistant API
|
||||
* O11y AI Assistant API
|
||||
* OpenAPI spec version: 0.1.0
|
||||
*/
|
||||
/**
|
||||
@@ -500,7 +500,7 @@ export enum MessageActionKindDTO {
|
||||
apply_filter = 'apply_filter',
|
||||
}
|
||||
/**
|
||||
* Assistant action. Kind-specific requirements: rollback actions require actionMetadataId/resourceType/resourceId; follow_up requires input.intent; open_resource requires resourceType/resourceId; apply_filter requires signal and query; open_docs requires a SigNoz docs url.
|
||||
* Assistant action. Kind-specific requirements: rollback actions require actionMetadataId/resourceType/resourceId; follow_up requires input.intent; open_resource requires resourceType/resourceId; apply_filter requires signal and query; open_docs requires a O11y docs url.
|
||||
*/
|
||||
export interface MessageActionDTO {
|
||||
kind: MessageActionKindDTO;
|
||||
@@ -991,7 +991,7 @@ export type MessageActionEventDTOQuery = MessageActionEventDTOQueryAnyOf | null;
|
||||
export type MessageActionEventDTOUrl = string | null;
|
||||
|
||||
/**
|
||||
* Assistant action. Kind-specific requirements: rollback actions require actionMetadataId/resourceType/resourceId; follow_up requires input.intent; open_resource requires resourceType/resourceId; apply_filter requires signal and query; open_docs requires a SigNoz docs url.
|
||||
* Assistant action. Kind-specific requirements: rollback actions require actionMetadataId/resourceType/resourceId; follow_up requires input.intent; open_resource requires resourceType/resourceId; apply_filter requires signal and query; open_docs requires a O11y docs url.
|
||||
*/
|
||||
export interface MessageActionEventDTO {
|
||||
kind: MessageActionKindDTO;
|
||||
@@ -1171,13 +1171,13 @@ export interface UserMessageEventDTO {
|
||||
|
||||
export type CreateThreadApiV1AssistantThreadsPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type CreateThreadApiV1AssistantThreadsPostBody =
|
||||
@@ -1215,13 +1215,13 @@ export enum ListThreadsApiV1AssistantThreadsGetArchived {
|
||||
}
|
||||
export type ListThreadsApiV1AssistantThreadsGetHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type GetThreadApiV1AssistantThreadsThreadIdGetPathParameters = {
|
||||
@@ -1229,13 +1229,13 @@ export type GetThreadApiV1AssistantThreadsThreadIdGetPathParameters = {
|
||||
};
|
||||
export type GetThreadApiV1AssistantThreadsThreadIdGetHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type UpdateThreadApiV1AssistantThreadsThreadIdPatchPathParameters = {
|
||||
@@ -1243,13 +1243,13 @@ export type UpdateThreadApiV1AssistantThreadsThreadIdPatchPathParameters = {
|
||||
};
|
||||
export type UpdateThreadApiV1AssistantThreadsThreadIdPatchHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type CreateMessageApiV1AssistantThreadsThreadIdMessagesPostPathParameters =
|
||||
@@ -1258,13 +1258,13 @@ export type CreateMessageApiV1AssistantThreadsThreadIdMessagesPostPathParameters
|
||||
};
|
||||
export type CreateMessageApiV1AssistantThreadsThreadIdMessagesPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type RegenerateMessageApiV1AssistantMessagesMessageIdRegeneratePostPathParameters =
|
||||
@@ -1274,90 +1274,90 @@ export type RegenerateMessageApiV1AssistantMessagesMessageIdRegeneratePostPathPa
|
||||
export type RegenerateMessageApiV1AssistantMessagesMessageIdRegeneratePostHeaders =
|
||||
{
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type ApproveApiV1AssistantApprovePostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type RejectApiV1AssistantRejectPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type ClarifyApiV1AssistantClarifyPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type CancelApiV1AssistantCancelPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type UndoApiV1AssistantUndoPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type RevertApiV1AssistantRevertPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type RestoreApiV1AssistantRestorePostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type SubmitFeedbackApiV1AssistantMessagesMessageIdFeedbackPostPathParameters =
|
||||
@@ -1366,22 +1366,22 @@ export type SubmitFeedbackApiV1AssistantMessagesMessageIdFeedbackPostPathParamet
|
||||
};
|
||||
export type SubmitFeedbackApiV1AssistantMessagesMessageIdFeedbackPostHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
|
||||
export type GetUsageApiV1AssistantUsageGetHeaders = {
|
||||
/**
|
||||
* @description SigNoz auth token (Bearer or raw JWT)
|
||||
* @description O11y auth token (Bearer or raw JWT)
|
||||
*/
|
||||
authorization?: string | null;
|
||||
/**
|
||||
* @description SigNoz instance base URL for multi-tenant deployments. Falls back to SIGNOZ_API_URL env var when omitted.
|
||||
* @description O11y instance base URL for multi-tenant deployments. Falls back to O11Y_API_URL env var when omitted.
|
||||
*/
|
||||
'X-SigNoz-URL'?: string | null;
|
||||
'X-O11y-URL'?: string | null;
|
||||
};
|
||||
@@ -48,33 +48,33 @@ describe('get — root path "/"', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('get — prefixed path "/signoz/"', () => {
|
||||
describe('get — prefixed path "/o11y/"', () => {
|
||||
it('reads an already-scoped key directly', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
localStorage.setItem('/signoz/AUTH_TOKEN', 'scoped-tok');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
localStorage.setItem('/o11y/AUTH_TOKEN', 'scoped-tok');
|
||||
expect(get('AUTH_TOKEN')).toBe('scoped-tok');
|
||||
});
|
||||
|
||||
it('returns null when neither scoped nor bare key exists', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
expect(get('MISSING')).toBeNull();
|
||||
});
|
||||
|
||||
it('lazy-migrates bare key to scoped key on first read', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
localStorage.setItem('AUTH_TOKEN', 'old-tok');
|
||||
|
||||
const result = get('AUTH_TOKEN');
|
||||
|
||||
expect(result).toBe('old-tok');
|
||||
expect(localStorage.getItem('/signoz/AUTH_TOKEN')).toBe('old-tok');
|
||||
expect(localStorage.getItem('/o11y/AUTH_TOKEN')).toBe('old-tok');
|
||||
expect(localStorage.getItem('AUTH_TOKEN')).toBeNull();
|
||||
});
|
||||
|
||||
it('scoped key takes precedence over bare key', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
localStorage.setItem('AUTH_TOKEN', 'bare-tok');
|
||||
localStorage.setItem('/signoz/AUTH_TOKEN', 'scoped-tok');
|
||||
localStorage.setItem('/o11y/AUTH_TOKEN', 'scoped-tok');
|
||||
|
||||
expect(get('AUTH_TOKEN')).toBe('scoped-tok');
|
||||
// bare key left untouched — scoped already existed
|
||||
@@ -82,7 +82,7 @@ describe('get — prefixed path "/signoz/"', () => {
|
||||
});
|
||||
|
||||
it('subsequent reads after migration use scoped key (no double-write)', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
localStorage.setItem('THEME', 'dark');
|
||||
|
||||
get('THEME'); // triggers migration
|
||||
@@ -94,21 +94,21 @@ describe('get — prefixed path "/signoz/"', () => {
|
||||
});
|
||||
|
||||
describe('get — two-prefix isolation', () => {
|
||||
it('/signoz/ and /testing/ do not share migrated values', () => {
|
||||
it('/o11y/ and /testing/ do not share migrated values', () => {
|
||||
localStorage.setItem('THEME', 'light');
|
||||
|
||||
const base1 = document.createElement('base');
|
||||
base1.setAttribute('href', '/signoz/');
|
||||
base1.setAttribute('href', '/o11y/');
|
||||
document.head.append(base1);
|
||||
let getSignoz!: GetModule['default'];
|
||||
let getO11y!: GetModule['default'];
|
||||
jest.isolateModules(() => {
|
||||
// oxlint-disable-next-line typescript-eslint/no-require-imports, typescript-eslint/no-var-requires
|
||||
getSignoz = require('../get').default;
|
||||
getO11y = require('../get').default;
|
||||
});
|
||||
base1.remove();
|
||||
|
||||
// migrate bare → /signoz/THEME
|
||||
getSignoz('THEME');
|
||||
// migrate bare → /o11y/THEME
|
||||
getO11y('THEME');
|
||||
|
||||
const base2 = document.createElement('base');
|
||||
base2.setAttribute('href', '/testing/');
|
||||
@@ -122,7 +122,7 @@ describe('get — two-prefix isolation', () => {
|
||||
|
||||
// /testing/ prefix: bare key already gone, scoped key does not exist
|
||||
expect(getTesting('THEME')).toBeNull();
|
||||
expect(localStorage.getItem('/signoz/THEME')).toBe('light');
|
||||
expect(localStorage.getItem('/o11y/THEME')).toBe('light');
|
||||
expect(localStorage.getItem('/testing/THEME')).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -45,33 +45,33 @@ describe('get — root path "/"', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('get — prefixed path "/signoz/"', () => {
|
||||
describe('get — prefixed path "/o11y/"', () => {
|
||||
it('reads an already-scoped key directly', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
sessionStorage.setItem('/signoz/retry-lazy-refreshed', 'true');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
sessionStorage.setItem('/o11y/retry-lazy-refreshed', 'true');
|
||||
expect(get('retry-lazy-refreshed')).toBe('true');
|
||||
});
|
||||
|
||||
it('returns null when neither scoped nor bare key exists', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
expect(get('MISSING')).toBeNull();
|
||||
});
|
||||
|
||||
it('lazy-migrates bare key to scoped key on first read', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
sessionStorage.setItem('retry-lazy-refreshed', 'true');
|
||||
|
||||
const result = get('retry-lazy-refreshed');
|
||||
|
||||
expect(result).toBe('true');
|
||||
expect(sessionStorage.getItem('/signoz/retry-lazy-refreshed')).toBe('true');
|
||||
expect(sessionStorage.getItem('/o11y/retry-lazy-refreshed')).toBe('true');
|
||||
expect(sessionStorage.getItem('retry-lazy-refreshed')).toBeNull();
|
||||
});
|
||||
|
||||
it('scoped key takes precedence over bare key', () => {
|
||||
const { default: get } = loadGetModule('/signoz/');
|
||||
const { default: get } = loadGetModule('/o11y/');
|
||||
sessionStorage.setItem('retry-lazy-refreshed', 'bare');
|
||||
sessionStorage.setItem('/signoz/retry-lazy-refreshed', 'scoped');
|
||||
sessionStorage.setItem('/o11y/retry-lazy-refreshed', 'scoped');
|
||||
|
||||
expect(get('retry-lazy-refreshed')).toBe('scoped');
|
||||
expect(sessionStorage.getItem('retry-lazy-refreshed')).toBe('bare');
|
||||
|
||||
@@ -855,8 +855,8 @@ export const useInspectMetrics = <
|
||||
return useMutation(getInspectMetricsMutationOptions(options));
|
||||
};
|
||||
/**
|
||||
* Lightweight endpoint that checks if any non-SigNoz metrics have been ingested, used for onboarding status detection
|
||||
* @summary Check if non-SigNoz metrics have been received
|
||||
* Lightweight endpoint that checks if any non-O11y metrics have been ingested, used for onboarding status detection
|
||||
* @summary Check if non-O11y metrics have been received
|
||||
*/
|
||||
export const getMetricsOnboardingStatus = (signal?: AbortSignal) => {
|
||||
return GeneratedAPIInstance<GetMetricsOnboardingStatus200>({
|
||||
@@ -903,7 +903,7 @@ export type GetMetricsOnboardingStatusQueryError =
|
||||
ErrorType<RenderErrorResponseDTO>;
|
||||
|
||||
/**
|
||||
* @summary Check if non-SigNoz metrics have been received
|
||||
* @summary Check if non-O11y metrics have been received
|
||||
*/
|
||||
|
||||
export function useGetMetricsOnboardingStatus<
|
||||
@@ -926,7 +926,7 @@ export function useGetMetricsOnboardingStatus<
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Check if non-SigNoz metrics have been received
|
||||
* @summary Check if non-O11y metrics have been received
|
||||
*/
|
||||
export const invalidateGetMetricsOnboardingStatus = async (
|
||||
queryClient: QueryClient,
|
||||
|
||||
@@ -2655,11 +2655,11 @@ export interface CloudintegrationtypesCredentialsDTO {
|
||||
/**
|
||||
* @type string
|
||||
*/
|
||||
sigNozApiKey: string;
|
||||
o11yApiKey: string;
|
||||
/**
|
||||
* @type string
|
||||
*/
|
||||
sigNozApiUrl: string;
|
||||
o11yApiUrl: string;
|
||||
}
|
||||
|
||||
export interface CloudintegrationtypesDataCollectedDTO {
|
||||
@@ -3420,7 +3420,7 @@ export interface TelemetrytypesTelemetryFieldKeyDTO {
|
||||
export enum TelemetrytypesSourceDTO {
|
||||
meter = 'meter',
|
||||
}
|
||||
export interface Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregationDTO {
|
||||
export interface Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregationDTO {
|
||||
/**
|
||||
* @type array
|
||||
*/
|
||||
@@ -3538,7 +3538,7 @@ export interface Querybuildertypesv5MetricAggregationDTO {
|
||||
timeAggregation?: MetrictypesTimeAggregationDTO;
|
||||
}
|
||||
|
||||
export interface Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregationDTO {
|
||||
export interface Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregationDTO {
|
||||
/**
|
||||
* @type array
|
||||
*/
|
||||
@@ -3606,7 +3606,7 @@ export interface Querybuildertypesv5TraceAggregationDTO {
|
||||
expression?: string;
|
||||
}
|
||||
|
||||
export interface Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregationDTO {
|
||||
export interface Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregationDTO {
|
||||
/**
|
||||
* @type array
|
||||
*/
|
||||
@@ -3664,9 +3664,9 @@ export interface Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTyp
|
||||
}
|
||||
|
||||
export type DashboardtypesBuilderQuerySpecDTO =
|
||||
| Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregationDTO
|
||||
| Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregationDTO
|
||||
| Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregationDTO;
|
||||
| Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregationDTO
|
||||
| Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregationDTO
|
||||
| Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregationDTO;
|
||||
|
||||
export enum DashboardtypesComparisonOperatorDTO {
|
||||
above = 'above',
|
||||
@@ -3746,7 +3746,7 @@ export interface DashboardtypesDashboardDTO {
|
||||
}
|
||||
|
||||
export enum DashboardtypesDatasourcePluginVariantStructDTOKind {
|
||||
'signoz/Datasource' = 'signoz/Datasource',
|
||||
'o11y/Datasource' = 'o11y/Datasource',
|
||||
}
|
||||
export type DashboardtypesDatasourcePluginVariantStructDTOSpecAnyOf = {
|
||||
[key: string]: unknown;
|
||||
@@ -3760,7 +3760,7 @@ export type DashboardtypesDatasourcePluginVariantStructDTOSpec =
|
||||
|
||||
export interface DashboardtypesDatasourcePluginVariantStructDTO {
|
||||
/**
|
||||
* @enum signoz/Datasource
|
||||
* @enum o11y/Datasource
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesDatasourcePluginVariantStructDTOKind;
|
||||
@@ -3820,8 +3820,8 @@ export interface V1LinkDTO {
|
||||
url?: string;
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTimeSeriesPanelSpecDTOKind {
|
||||
'signoz/TimeSeriesPanel' = 'signoz/TimeSeriesPanel',
|
||||
export enum DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTimeSeriesPanelSpecDTOKind {
|
||||
'o11y/TimeSeriesPanel' = 'o11y/TimeSeriesPanel',
|
||||
}
|
||||
export enum DashboardtypesFillModeDTO {
|
||||
solid = 'solid',
|
||||
@@ -3880,29 +3880,29 @@ export interface DashboardtypesTimeSeriesPanelSpecDTO {
|
||||
visualization?: DashboardtypesTimeSeriesVisualizationDTO;
|
||||
}
|
||||
|
||||
export interface DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTimeSeriesPanelSpecDTO {
|
||||
export interface DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTimeSeriesPanelSpecDTO {
|
||||
/**
|
||||
* @enum signoz/TimeSeriesPanel
|
||||
* @enum o11y/TimeSeriesPanel
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTimeSeriesPanelSpecDTOKind;
|
||||
kind: DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTimeSeriesPanelSpecDTOKind;
|
||||
spec: DashboardtypesTimeSeriesPanelSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBarChartPanelSpecDTOKind {
|
||||
'signoz/BarChartPanel' = 'signoz/BarChartPanel',
|
||||
export enum DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBarChartPanelSpecDTOKind {
|
||||
'o11y/BarChartPanel' = 'o11y/BarChartPanel',
|
||||
}
|
||||
export interface DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBarChartPanelSpecDTO {
|
||||
export interface DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBarChartPanelSpecDTO {
|
||||
/**
|
||||
* @enum signoz/BarChartPanel
|
||||
* @enum o11y/BarChartPanel
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBarChartPanelSpecDTOKind;
|
||||
kind: DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBarChartPanelSpecDTOKind;
|
||||
spec: DashboardtypesBarChartPanelSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesNumberPanelSpecDTOKind {
|
||||
'signoz/NumberPanel' = 'signoz/NumberPanel',
|
||||
export enum DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesNumberPanelSpecDTOKind {
|
||||
'o11y/NumberPanel' = 'o11y/NumberPanel',
|
||||
}
|
||||
export interface DashboardtypesNumberPanelSpecDTO {
|
||||
formatting?: DashboardtypesPanelFormattingDTO;
|
||||
@@ -3913,17 +3913,17 @@ export interface DashboardtypesNumberPanelSpecDTO {
|
||||
visualization?: DashboardtypesBasicVisualizationDTO;
|
||||
}
|
||||
|
||||
export interface DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesNumberPanelSpecDTO {
|
||||
export interface DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesNumberPanelSpecDTO {
|
||||
/**
|
||||
* @enum signoz/NumberPanel
|
||||
* @enum o11y/NumberPanel
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesNumberPanelSpecDTOKind;
|
||||
kind: DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesNumberPanelSpecDTOKind;
|
||||
spec: DashboardtypesNumberPanelSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesPieChartPanelSpecDTOKind {
|
||||
'signoz/PieChartPanel' = 'signoz/PieChartPanel',
|
||||
export enum DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesPieChartPanelSpecDTOKind {
|
||||
'o11y/PieChartPanel' = 'o11y/PieChartPanel',
|
||||
}
|
||||
export interface DashboardtypesPieChartPanelSpecDTO {
|
||||
formatting?: DashboardtypesPanelFormattingDTO;
|
||||
@@ -3931,17 +3931,17 @@ export interface DashboardtypesPieChartPanelSpecDTO {
|
||||
visualization?: DashboardtypesBasicVisualizationDTO;
|
||||
}
|
||||
|
||||
export interface DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesPieChartPanelSpecDTO {
|
||||
export interface DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesPieChartPanelSpecDTO {
|
||||
/**
|
||||
* @enum signoz/PieChartPanel
|
||||
* @enum o11y/PieChartPanel
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesPieChartPanelSpecDTOKind;
|
||||
kind: DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesPieChartPanelSpecDTOKind;
|
||||
spec: DashboardtypesPieChartPanelSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTablePanelSpecDTOKind {
|
||||
'signoz/TablePanel' = 'signoz/TablePanel',
|
||||
export enum DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTablePanelSpecDTOKind {
|
||||
'o11y/TablePanel' = 'o11y/TablePanel',
|
||||
}
|
||||
export type DashboardtypesTableFormattingDTOColumnUnitsAnyOf = {
|
||||
[key: string]: string;
|
||||
@@ -3992,17 +3992,17 @@ export interface DashboardtypesTablePanelSpecDTO {
|
||||
visualization?: DashboardtypesBasicVisualizationDTO;
|
||||
}
|
||||
|
||||
export interface DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTablePanelSpecDTO {
|
||||
export interface DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTablePanelSpecDTO {
|
||||
/**
|
||||
* @enum signoz/TablePanel
|
||||
* @enum o11y/TablePanel
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTablePanelSpecDTOKind;
|
||||
kind: DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTablePanelSpecDTOKind;
|
||||
spec: DashboardtypesTablePanelSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesHistogramPanelSpecDTOKind {
|
||||
'signoz/HistogramPanel' = 'signoz/HistogramPanel',
|
||||
export enum DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesHistogramPanelSpecDTOKind {
|
||||
'o11y/HistogramPanel' = 'o11y/HistogramPanel',
|
||||
}
|
||||
export interface DashboardtypesHistogramBucketsDTO {
|
||||
/**
|
||||
@@ -4024,17 +4024,17 @@ export interface DashboardtypesHistogramPanelSpecDTO {
|
||||
legend?: DashboardtypesLegendDTO;
|
||||
}
|
||||
|
||||
export interface DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesHistogramPanelSpecDTO {
|
||||
export interface DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesHistogramPanelSpecDTO {
|
||||
/**
|
||||
* @enum signoz/HistogramPanel
|
||||
* @enum o11y/HistogramPanel
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesHistogramPanelSpecDTOKind;
|
||||
kind: DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesHistogramPanelSpecDTOKind;
|
||||
spec: DashboardtypesHistogramPanelSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesListPanelSpecDTOKind {
|
||||
'signoz/ListPanel' = 'signoz/ListPanel',
|
||||
export enum DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesListPanelSpecDTOKind {
|
||||
'o11y/ListPanel' = 'o11y/ListPanel',
|
||||
}
|
||||
export interface DashboardtypesListPanelSpecDTO {
|
||||
/**
|
||||
@@ -4043,38 +4043,38 @@ export interface DashboardtypesListPanelSpecDTO {
|
||||
selectFields?: TelemetrytypesTelemetryFieldKeyDTO[];
|
||||
}
|
||||
|
||||
export interface DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesListPanelSpecDTO {
|
||||
export interface DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesListPanelSpecDTO {
|
||||
/**
|
||||
* @enum signoz/ListPanel
|
||||
* @enum o11y/ListPanel
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesListPanelSpecDTOKind;
|
||||
kind: DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesListPanelSpecDTOKind;
|
||||
spec: DashboardtypesListPanelSpecDTO;
|
||||
}
|
||||
|
||||
export type DashboardtypesPanelPluginDTO =
|
||||
| DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTimeSeriesPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBarChartPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesNumberPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesPieChartPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesTablePanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesHistogramPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesListPanelSpecDTO;
|
||||
| DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTimeSeriesPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBarChartPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesNumberPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesPieChartPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesTablePanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesHistogramPanelSpecDTO
|
||||
| DashboardtypesPanelPluginVariantGithubComO11yO11yPkgTypesDashboardtypesListPanelSpecDTO;
|
||||
|
||||
export enum DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBuilderQuerySpecDTOKind {
|
||||
'signoz/BuilderQuery' = 'signoz/BuilderQuery',
|
||||
export enum DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBuilderQuerySpecDTOKind {
|
||||
'o11y/BuilderQuery' = 'o11y/BuilderQuery',
|
||||
}
|
||||
export interface DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBuilderQuerySpecDTO {
|
||||
export interface DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBuilderQuerySpecDTO {
|
||||
/**
|
||||
* @enum signoz/BuilderQuery
|
||||
* @enum o11y/BuilderQuery
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBuilderQuerySpecDTOKind;
|
||||
kind: DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBuilderQuerySpecDTOKind;
|
||||
spec: DashboardtypesBuilderQuerySpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTOKind {
|
||||
'signoz/CompositeQuery' = 'signoz/CompositeQuery',
|
||||
export enum DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTOKind {
|
||||
'o11y/CompositeQuery' = 'o11y/CompositeQuery',
|
||||
}
|
||||
export enum Querybuildertypesv5QueryTypeDTO {
|
||||
builder_query = 'builder_query',
|
||||
@@ -4084,17 +4084,17 @@ export enum Querybuildertypesv5QueryTypeDTO {
|
||||
promql = 'promql',
|
||||
}
|
||||
export interface Querybuildertypesv5QueryEnvelopeBuilderTraceDTO {
|
||||
spec?: Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregationDTO;
|
||||
spec?: Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5TraceAggregationDTO;
|
||||
type?: Querybuildertypesv5QueryTypeDTO;
|
||||
}
|
||||
|
||||
export interface Querybuildertypesv5QueryEnvelopeBuilderLogDTO {
|
||||
spec?: Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregationDTO;
|
||||
spec?: Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5LogAggregationDTO;
|
||||
type?: Querybuildertypesv5QueryTypeDTO;
|
||||
}
|
||||
|
||||
export interface Querybuildertypesv5QueryEnvelopeBuilderMetricDTO {
|
||||
spec?: Querybuildertypesv5QueryBuilderQueryGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregationDTO;
|
||||
spec?: Querybuildertypesv5QueryBuilderQueryGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5MetricAggregationDTO;
|
||||
type?: Querybuildertypesv5QueryTypeDTO;
|
||||
}
|
||||
|
||||
@@ -4291,70 +4291,70 @@ export interface Querybuildertypesv5CompositeQueryDTO {
|
||||
queries?: Querybuildertypesv5QueryEnvelopeDTO[] | null;
|
||||
}
|
||||
|
||||
export interface DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTO {
|
||||
export interface DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTO {
|
||||
/**
|
||||
* @enum signoz/CompositeQuery
|
||||
* @enum o11y/CompositeQuery
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTOKind;
|
||||
kind: DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTOKind;
|
||||
spec: Querybuildertypesv5CompositeQueryDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTOKind {
|
||||
'signoz/Formula' = 'signoz/Formula',
|
||||
export enum DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTOKind {
|
||||
'o11y/Formula' = 'o11y/Formula',
|
||||
}
|
||||
export interface DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTO {
|
||||
export interface DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTO {
|
||||
/**
|
||||
* @enum signoz/Formula
|
||||
* @enum o11y/Formula
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTOKind;
|
||||
kind: DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTOKind;
|
||||
spec: Querybuildertypesv5QueryBuilderFormulaDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTOKind {
|
||||
'signoz/PromQLQuery' = 'signoz/PromQLQuery',
|
||||
export enum DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTOKind {
|
||||
'o11y/PromQLQuery' = 'o11y/PromQLQuery',
|
||||
}
|
||||
export interface DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTO {
|
||||
export interface DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTO {
|
||||
/**
|
||||
* @enum signoz/PromQLQuery
|
||||
* @enum o11y/PromQLQuery
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTOKind;
|
||||
kind: DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTOKind;
|
||||
spec: Querybuildertypesv5PromQueryDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTOKind {
|
||||
'signoz/ClickHouseSQL' = 'signoz/ClickHouseSQL',
|
||||
export enum DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTOKind {
|
||||
'o11y/ClickHouseSQL' = 'o11y/ClickHouseSQL',
|
||||
}
|
||||
export interface DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTO {
|
||||
export interface DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTO {
|
||||
/**
|
||||
* @enum signoz/ClickHouseSQL
|
||||
* @enum o11y/ClickHouseSQL
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTOKind;
|
||||
kind: DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTOKind;
|
||||
spec: Querybuildertypesv5ClickHouseQueryDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTOKind {
|
||||
'signoz/TraceOperator' = 'signoz/TraceOperator',
|
||||
export enum DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTOKind {
|
||||
'o11y/TraceOperator' = 'o11y/TraceOperator',
|
||||
}
|
||||
export interface DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTO {
|
||||
export interface DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTO {
|
||||
/**
|
||||
* @enum signoz/TraceOperator
|
||||
* @enum o11y/TraceOperator
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTOKind;
|
||||
kind: DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTOKind;
|
||||
spec: Querybuildertypesv5QueryBuilderTraceOperatorDTO;
|
||||
}
|
||||
|
||||
export type DashboardtypesQueryPluginDTO =
|
||||
| DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesDashboardtypesBuilderQuerySpecDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComSigNozSignozPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTO;
|
||||
| DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesDashboardtypesBuilderQuerySpecDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5CompositeQueryDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderFormulaDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5PromQueryDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5ClickHouseQueryDTO
|
||||
| DashboardtypesQueryPluginVariantGithubComO11yO11yPkgTypesQuerybuildertypesQuerybuildertypesv5QueryBuilderTraceOperatorDTO;
|
||||
|
||||
export interface DashboardtypesQuerySpecDTO {
|
||||
/**
|
||||
@@ -4418,15 +4418,15 @@ export interface DashboardtypesLayoutEnvelopeGithubComPersesPersesPkgModelApiV1D
|
||||
export type DashboardtypesLayoutDTO =
|
||||
DashboardtypesLayoutEnvelopeGithubComPersesPersesPkgModelApiV1DashboardGridLayoutSpecDTO;
|
||||
|
||||
export enum DashboardtypesVariableEnvelopeGithubComSigNozSignozPkgTypesDashboardtypesListVariableSpecDTOKind {
|
||||
export enum DashboardtypesVariableEnvelopeGithubComO11yO11yPkgTypesDashboardtypesListVariableSpecDTOKind {
|
||||
ListVariable = 'ListVariable',
|
||||
}
|
||||
export interface VariableDefaultValueDTO {
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
export enum DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesDynamicVariableSpecDTOKind {
|
||||
'signoz/DynamicVariable' = 'signoz/DynamicVariable',
|
||||
export enum DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesDynamicVariableSpecDTOKind {
|
||||
'o11y/DynamicVariable' = 'o11y/DynamicVariable',
|
||||
}
|
||||
export interface DashboardtypesDynamicVariableSpecDTO {
|
||||
/**
|
||||
@@ -4436,17 +4436,17 @@ export interface DashboardtypesDynamicVariableSpecDTO {
|
||||
signal?: TelemetrytypesSignalDTO;
|
||||
}
|
||||
|
||||
export interface DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesDynamicVariableSpecDTO {
|
||||
export interface DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesDynamicVariableSpecDTO {
|
||||
/**
|
||||
* @enum signoz/DynamicVariable
|
||||
* @enum o11y/DynamicVariable
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesDynamicVariableSpecDTOKind;
|
||||
kind: DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesDynamicVariableSpecDTOKind;
|
||||
spec: DashboardtypesDynamicVariableSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesQueryVariableSpecDTOKind {
|
||||
'signoz/QueryVariable' = 'signoz/QueryVariable',
|
||||
export enum DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesQueryVariableSpecDTOKind {
|
||||
'o11y/QueryVariable' = 'o11y/QueryVariable',
|
||||
}
|
||||
export interface DashboardtypesQueryVariableSpecDTO {
|
||||
/**
|
||||
@@ -4455,31 +4455,31 @@ export interface DashboardtypesQueryVariableSpecDTO {
|
||||
queryValue: string;
|
||||
}
|
||||
|
||||
export interface DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesQueryVariableSpecDTO {
|
||||
export interface DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesQueryVariableSpecDTO {
|
||||
/**
|
||||
* @enum signoz/QueryVariable
|
||||
* @enum o11y/QueryVariable
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesQueryVariableSpecDTOKind;
|
||||
kind: DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesQueryVariableSpecDTOKind;
|
||||
spec: DashboardtypesQueryVariableSpecDTO;
|
||||
}
|
||||
|
||||
export enum DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesCustomVariableSpecDTOKind {
|
||||
'signoz/CustomVariable' = 'signoz/CustomVariable',
|
||||
export enum DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesCustomVariableSpecDTOKind {
|
||||
'o11y/CustomVariable' = 'o11y/CustomVariable',
|
||||
}
|
||||
export interface DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesCustomVariableSpecDTO {
|
||||
export interface DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesCustomVariableSpecDTO {
|
||||
/**
|
||||
* @enum signoz/CustomVariable
|
||||
* @enum o11y/CustomVariable
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesCustomVariableSpecDTOKind;
|
||||
kind: DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesCustomVariableSpecDTOKind;
|
||||
spec: DashboardtypesCustomVariableSpecDTO;
|
||||
}
|
||||
|
||||
export type DashboardtypesVariablePluginDTO =
|
||||
| DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesDynamicVariableSpecDTO
|
||||
| DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesQueryVariableSpecDTO
|
||||
| DashboardtypesVariablePluginVariantGithubComSigNozSignozPkgTypesDashboardtypesCustomVariableSpecDTO;
|
||||
| DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesDynamicVariableSpecDTO
|
||||
| DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesQueryVariableSpecDTO
|
||||
| DashboardtypesVariablePluginVariantGithubComO11yO11yPkgTypesDashboardtypesCustomVariableSpecDTO;
|
||||
|
||||
export interface DashboardtypesListVariableSpecDTO {
|
||||
/**
|
||||
@@ -4511,12 +4511,12 @@ export interface DashboardtypesListVariableSpecDTO {
|
||||
sort?: string | null;
|
||||
}
|
||||
|
||||
export interface DashboardtypesVariableEnvelopeGithubComSigNozSignozPkgTypesDashboardtypesListVariableSpecDTO {
|
||||
export interface DashboardtypesVariableEnvelopeGithubComO11yO11yPkgTypesDashboardtypesListVariableSpecDTO {
|
||||
/**
|
||||
* @enum ListVariable
|
||||
* @type string
|
||||
*/
|
||||
kind: DashboardtypesVariableEnvelopeGithubComSigNozSignozPkgTypesDashboardtypesListVariableSpecDTOKind;
|
||||
kind: DashboardtypesVariableEnvelopeGithubComO11yO11yPkgTypesDashboardtypesListVariableSpecDTOKind;
|
||||
spec: DashboardtypesListVariableSpecDTO;
|
||||
}
|
||||
|
||||
@@ -4533,7 +4533,7 @@ export interface DashboardtypesVariableEnvelopeGithubComPersesPersesPkgModelApiV
|
||||
}
|
||||
|
||||
export type DashboardtypesVariableDTO =
|
||||
| DashboardtypesVariableEnvelopeGithubComSigNozSignozPkgTypesDashboardtypesListVariableSpecDTO
|
||||
| DashboardtypesVariableEnvelopeGithubComO11yO11yPkgTypesDashboardtypesListVariableSpecDTO
|
||||
| DashboardtypesVariableEnvelopeGithubComPersesPersesPkgModelApiV1DashboardTextVariableSpecDTO;
|
||||
|
||||
export interface DashboardtypesDashboardSpecDTO {
|
||||
@@ -4569,7 +4569,7 @@ export interface DashboardtypesDashboardSpecDTO {
|
||||
}
|
||||
|
||||
export enum DashboardtypesDatasourcePluginKindDTO {
|
||||
'signoz/Datasource' = 'signoz/Datasource',
|
||||
'o11y/Datasource' = 'o11y/Datasource',
|
||||
}
|
||||
export interface TagtypesPostableTagDTO {
|
||||
/**
|
||||
@@ -4654,13 +4654,13 @@ export interface DashboardtypesGettablePublicDashboardDataDTO {
|
||||
}
|
||||
|
||||
export enum DashboardtypesPanelPluginKindDTO {
|
||||
'signoz/TimeSeriesPanel' = 'signoz/TimeSeriesPanel',
|
||||
'signoz/BarChartPanel' = 'signoz/BarChartPanel',
|
||||
'signoz/NumberPanel' = 'signoz/NumberPanel',
|
||||
'signoz/PieChartPanel' = 'signoz/PieChartPanel',
|
||||
'signoz/TablePanel' = 'signoz/TablePanel',
|
||||
'signoz/HistogramPanel' = 'signoz/HistogramPanel',
|
||||
'signoz/ListPanel' = 'signoz/ListPanel',
|
||||
'o11y/TimeSeriesPanel' = 'o11y/TimeSeriesPanel',
|
||||
'o11y/BarChartPanel' = 'o11y/BarChartPanel',
|
||||
'o11y/NumberPanel' = 'o11y/NumberPanel',
|
||||
'o11y/PieChartPanel' = 'o11y/PieChartPanel',
|
||||
'o11y/TablePanel' = 'o11y/TablePanel',
|
||||
'o11y/HistogramPanel' = 'o11y/HistogramPanel',
|
||||
'o11y/ListPanel' = 'o11y/ListPanel',
|
||||
}
|
||||
export interface DashboardtypesPostableDashboardV2DTO {
|
||||
/**
|
||||
@@ -4698,12 +4698,12 @@ export interface DashboardtypesPostablePublicDashboardDTO {
|
||||
}
|
||||
|
||||
export enum DashboardtypesQueryPluginKindDTO {
|
||||
'signoz/BuilderQuery' = 'signoz/BuilderQuery',
|
||||
'signoz/CompositeQuery' = 'signoz/CompositeQuery',
|
||||
'signoz/Formula' = 'signoz/Formula',
|
||||
'signoz/PromQLQuery' = 'signoz/PromQLQuery',
|
||||
'signoz/ClickHouseSQL' = 'signoz/ClickHouseSQL',
|
||||
'signoz/TraceOperator' = 'signoz/TraceOperator',
|
||||
'o11y/BuilderQuery' = 'o11y/BuilderQuery',
|
||||
'o11y/CompositeQuery' = 'o11y/CompositeQuery',
|
||||
'o11y/Formula' = 'o11y/Formula',
|
||||
'o11y/PromQLQuery' = 'o11y/PromQLQuery',
|
||||
'o11y/ClickHouseSQL' = 'o11y/ClickHouseSQL',
|
||||
'o11y/TraceOperator' = 'o11y/TraceOperator',
|
||||
}
|
||||
export interface DashboardtypesUpdatablePublicDashboardDTO {
|
||||
/**
|
||||
@@ -4717,9 +4717,9 @@ export interface DashboardtypesUpdatablePublicDashboardDTO {
|
||||
}
|
||||
|
||||
export enum DashboardtypesVariablePluginKindDTO {
|
||||
'signoz/DynamicVariable' = 'signoz/DynamicVariable',
|
||||
'signoz/QueryVariable' = 'signoz/QueryVariable',
|
||||
'signoz/CustomVariable' = 'signoz/CustomVariable',
|
||||
'o11y/DynamicVariable' = 'o11y/DynamicVariable',
|
||||
'o11y/QueryVariable' = 'o11y/QueryVariable',
|
||||
'o11y/CustomVariable' = 'o11y/CustomVariable',
|
||||
}
|
||||
export type FactoryResponseDTOServicesAnyOf = { [key: string]: string[] };
|
||||
|
||||
|
||||
@@ -70,13 +70,13 @@ export const interceptorsRequestResponse = (
|
||||
};
|
||||
|
||||
// Strips the leading '/' from path and joins with base — idempotent if already prefixed.
|
||||
// e.g. prependBase('/signoz/', '/api/v1/') → '/signoz/api/v1/'
|
||||
// e.g. prependBase('/o11y/', '/api/v1/') → '/o11y/api/v1/'
|
||||
function prependBase(base: string, path: string): string {
|
||||
return path.startsWith(base) ? path : base + path.slice(1);
|
||||
}
|
||||
|
||||
// Prepends the runtime base path to outgoing requests so API calls work under
|
||||
// a URL prefix (e.g. /signoz/api/v1/…). No-op for root deployments and dev
|
||||
// a URL prefix (e.g. /o11y/api/v1/…). No-op for root deployments and dev
|
||||
// (dev baseURL is a full http:// URL, not an absolute path).
|
||||
export const interceptorsRequestBasePath = (
|
||||
value: InternalAxiosRequestConfig,
|
||||
@@ -87,15 +87,15 @@ export const interceptorsRequestBasePath = (
|
||||
}
|
||||
|
||||
if (value.baseURL?.startsWith('/')) {
|
||||
// Production relative baseURL: '/api/v1/' → '/signoz/api/v1/'
|
||||
// Production relative baseURL: '/api/v1/' → '/o11y/api/v1/'
|
||||
value.baseURL = prependBase(basePath, value.baseURL);
|
||||
} else if (value.baseURL?.startsWith('http')) {
|
||||
// Dev absolute baseURL (VITE_FRONTEND_API_ENDPOINT): 'https://host/api/v1/' → 'https://host/signoz/api/v1/'
|
||||
// Dev absolute baseURL (VITE_FRONTEND_API_ENDPOINT): 'https://host/api/v1/' → 'https://host/o11y/api/v1/'
|
||||
const url = new URL(value.baseURL);
|
||||
url.pathname = prependBase(basePath, url.pathname);
|
||||
value.baseURL = url.toString();
|
||||
} else if (!value.baseURL && value.url?.startsWith('/')) {
|
||||
// Orval-generated client (empty baseURL, path in url): '/api/signoz/v1/rules' → '/signoz/api/signoz/v1/rules'
|
||||
// Orval-generated client (empty baseURL, path in url): '/api/o11y/v1/rules' → '/o11y/api/o11y/v1/rules'
|
||||
value.url = prependBase(basePath, value.url);
|
||||
}
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 62 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" fill="none"><rect width="100" height="100" fill="url(#a)" rx="20"/><g fill="#fff" fill-rule="evenodd" clip-rule="evenodd" filter="url(#b)"><path d="M11 49.941v-.003l.002-.005.003-.014.007-.035a8 8 0 0 1 .105-.42c.073-.263.184-.624.348-1.072.328-.896.866-2.135 1.73-3.617 1.732-2.97 4.753-6.883 9.95-10.955 5.223-4.092 10.295-6.293 14.08-7.471a35 35 0 0 1 4.585-1.114 24 24 0 0 1 1.687-.223l.108-.009.034-.002h.011l.007-.001s.002 0 .133 2.217c.13 2.218.132 2.218.132 2.218h-.002l-.053.004a19 19 0 0 0-1.326.178c-.809.136-1.937.37-3.302.763l-.127.043c-2.745.94-6.666 2.775-11.249 6.362-4.572 3.577-7.142 6.95-8.563 9.393-.711 1.222-1.137 2.215-1.383 2.889a10 10 0 0 0-.29.933q.011.056.044.173c.046.166.123.423.246.76.246.674.672 1.667 1.383 2.89 1.421 2.441 3.991 5.815 8.563 9.392 4.584 3.587 8.504 5.423 11.25 6.362l.126.043c1.365.393 2.493.627 3.302.763a19 19 0 0 0 1.326.178l.053.004h.002s-.002 0-.133 2.218C43.66 75 43.657 75 43.657 75h-.007l-.011-.001-.034-.002a9 9 0 0 1-.478-.046 24 24 0 0 1-1.317-.186 35 35 0 0 1-4.584-1.114c-3.786-1.178-8.858-3.38-14.081-7.471-5.197-4.072-8.218-7.985-9.95-10.955-.864-1.482-1.402-2.72-1.73-3.617-.164-.448-.275-.81-.348-1.072a8 8 0 0 1-.105-.42l-.007-.035-.003-.014-.002-.005zm78 0v-.003l-.002-.005-.002-.014-.008-.035a9 9 0 0 0-.105-.42 14 14 0 0 0-.348-1.072c-.328-.896-.866-2.135-1.73-3.617-1.732-2.97-4.753-6.883-9.95-10.955-5.223-4.092-10.295-6.293-14.08-7.471a35 35 0 0 0-4.585-1.114 24 24 0 0 0-1.687-.223l-.108-.009-.034-.002h-.011L56.343 25s-.002 0-.133 2.217c-.13 2.218-.132 2.218-.132 2.218h.002l.053.004a19 19 0 0 1 1.326.178c.809.136 1.937.37 3.302.763l.127.043c2.745.94 6.666 2.775 11.249 6.362 4.572 3.577 7.141 6.95 8.563 9.393.711 1.222 1.137 2.215 1.383 2.889a10 10 0 0 1 .29.933 10 10 0 0 1-.29.934c-.246.673-.672 1.666-1.383 2.888-1.422 2.442-3.991 5.816-8.563 9.393-4.584 3.587-8.504 5.423-11.25 6.362l-.126.043a30 30 0 0 1-3.302.763 19 19 0 0 1-1.326.178l-.053.004h-.002s.002 0 .133 2.218C56.34 75 56.343 75 56.343 75h.007l.011-.001.034-.002a9 9 0 0 0 .478-.046c.314-.034.758-.092 1.317-.186a35 35 0 0 0 4.584-1.114c3.786-1.178 8.858-3.38 14.081-7.471 5.197-4.072 8.218-7.985 9.95-10.955.864-1.482 1.402-2.72 1.73-3.617.164-.448.275-.81.348-1.072a9 9 0 0 0 .105-.42l.008-.035.002-.014.001-.005.001-.003z"/><path d="M68.342 49.998c0 9.846-7.924 17.827-17.7 17.827s-17.7-7.981-17.7-17.827 7.925-17.827 17.7-17.827c9.776 0 17.7 7.981 17.7 17.827M46.218 39.97s-2.127 2.508-2.766 4.457c-.412 1.257-.553 3.343-.553 3.343h-5.531s0-1.672 1.106-4.457 2.212-3.343 2.212-3.343zm-2.766 15.6c.639 1.949 2.766 4.457 2.766 4.457h-5.532s-1.106-.557-2.212-3.343-1.106-4.457-1.106-4.457h5.53s.142 2.086.554 3.343"/></g><defs><radialGradient id="a" cx="0" cy="0" r="1" gradientTransform="matrix(40.99997 42 -42 40.99997 50 50)" gradientUnits="userSpaceOnUse"><stop offset=".33" stop-color="#F76526"/><stop offset="1" stop-color="#F43030"/></radialGradient><filter id="b" width="90" height="62" x="5" y="23" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="4"/><feGaussianBlur stdDeviation="3"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0.368384 0 0 0 0 0.0623777 0 0 0 0 0.0623777 0 0 0 0.25 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_3909_18731"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_3909_18731" result="shape"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="4"/><feGaussianBlur stdDeviation="3"/><feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/><feBlend in2="shape" result="effect2_innerShadow_3909_18731"/></filter></defs></svg>
|
||||
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -3,7 +3,7 @@ import get from 'api/browser/localstorage/get';
|
||||
import { LOCALSTORAGE } from 'constants/localStorage';
|
||||
import { THEME_MODE } from 'hooks/useDarkMode/constant';
|
||||
|
||||
import signozBrandLogoUrl from '@/assets/Logos/signoz-brand-logo.svg';
|
||||
import o11yBrandLogoUrl from '@/assets/Logos/o11y-brand-logo.svg';
|
||||
|
||||
import './AppLoading.styles.scss';
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ function ResetLinkDialog({
|
||||
<p className="reset-link-dialog__description">
|
||||
{linkType === 'invite'
|
||||
? 'Share this one-time link with the team member to complete their account setup.'
|
||||
: 'This creates a one-time link the team member can use to set a new password for their SigNoz account.'}
|
||||
: 'This creates a one-time link the team member can use to set a new password for their O11y account.'}
|
||||
</p>
|
||||
<div className="reset-link-dialog__link-row">
|
||||
<div className="reset-link-dialog__link-text-wrap">
|
||||
|
||||
@@ -106,13 +106,13 @@ const mockFetchedUser = {
|
||||
data: {
|
||||
id: 'user-1',
|
||||
displayName: 'Alice Smith',
|
||||
email: 'alice@signoz.io',
|
||||
email: 'alice@o11y.io',
|
||||
status: 'active',
|
||||
userRoles: [
|
||||
{
|
||||
id: 'ur-1',
|
||||
roleId: managedRoles[0].id,
|
||||
role: managedRoles[0], // signoz-admin
|
||||
role: managedRoles[0], // o11y-admin
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -310,9 +310,9 @@ describe('EditMemberDrawer', () => {
|
||||
|
||||
renderDrawer({ onComplete });
|
||||
|
||||
// signoz-admin is already selected; add signoz-editor on top
|
||||
// o11y-admin is already selected; add o11y-editor on top
|
||||
await user.click(screen.getByLabelText('Roles'));
|
||||
await user.click(await screen.findByTitle('signoz-editor'));
|
||||
await user.click(await screen.findByTitle('o11y-editor'));
|
||||
|
||||
const saveBtn = screen.getByRole('button', { name: /save member details/i });
|
||||
await waitFor(() => expect(saveBtn).not.toBeDisabled());
|
||||
@@ -321,7 +321,7 @@ describe('EditMemberDrawer', () => {
|
||||
await waitFor(() => {
|
||||
expect(mockSet).toHaveBeenCalledWith({
|
||||
pathParams: { id: 'user-1' },
|
||||
data: { name: 'signoz-editor' },
|
||||
data: { name: 'o11y-editor' },
|
||||
});
|
||||
expect(mockRemoveMutateAsync).not.toHaveBeenCalled();
|
||||
expect(onComplete).toHaveBeenCalled();
|
||||
@@ -334,8 +334,8 @@ describe('EditMemberDrawer', () => {
|
||||
|
||||
renderDrawer({ onComplete });
|
||||
|
||||
// signoz-admin appears as a selected tag — click its remove button to deselect
|
||||
const adminTag = await screen.findByTitle('signoz-admin');
|
||||
// o11y-admin appears as a selected tag — click its remove button to deselect
|
||||
const adminTag = await screen.findByTitle('o11y-admin');
|
||||
const removeBtn = adminTag.querySelector(
|
||||
'.ant-select-selection-item-remove',
|
||||
) as Element;
|
||||
@@ -478,7 +478,7 @@ describe('EditMemberDrawer', () => {
|
||||
{
|
||||
id: 'ur-2',
|
||||
roleId: managedRoles[2].id,
|
||||
role: managedRoles[2], // signoz-viewer
|
||||
role: managedRoles[2], // o11y-viewer
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -165,15 +165,15 @@ describe('InviteMembersModal', () => {
|
||||
it('shows BE message on single invite 409', async () => {
|
||||
const user = userEvent.setup({ pointerEventsCheck: 0 });
|
||||
const error = makeApiError(
|
||||
'An invite already exists for this email: single@signoz.io',
|
||||
'An invite already exists for this email: single@o11y.io',
|
||||
);
|
||||
mockSendInvite.mockRejectedValue(error);
|
||||
|
||||
render(<InviteMembersModal {...defaultProps} />);
|
||||
|
||||
await user.type(
|
||||
screen.getAllByPlaceholderText('john@signoz.io')[0],
|
||||
'single@signoz.io',
|
||||
screen.getAllByPlaceholderText('john@o11y.io')[0],
|
||||
'single@o11y.io',
|
||||
);
|
||||
await user.click(screen.getAllByText('Select roles')[0]);
|
||||
await user.click(await screen.findByText('Viewer'));
|
||||
@@ -189,18 +189,18 @@ describe('InviteMembersModal', () => {
|
||||
it('shows BE message on bulk invite 409', async () => {
|
||||
const user = userEvent.setup({ pointerEventsCheck: 0 });
|
||||
const error = makeApiError(
|
||||
'An invite already exists for this email: alice@signoz.io',
|
||||
'An invite already exists for this email: alice@o11y.io',
|
||||
);
|
||||
mockInviteUsers.mockRejectedValue(error);
|
||||
|
||||
render(<InviteMembersModal {...defaultProps} />);
|
||||
|
||||
const emailInputs = screen.getAllByPlaceholderText('john@signoz.io');
|
||||
await user.type(emailInputs[0], 'alice@signoz.io');
|
||||
const emailInputs = screen.getAllByPlaceholderText('john@o11y.io');
|
||||
await user.type(emailInputs[0], 'alice@o11y.io');
|
||||
await user.click(screen.getAllByText('Select roles')[0]);
|
||||
await user.click(await screen.findByText('Viewer'));
|
||||
|
||||
await user.type(emailInputs[1], 'bob@signoz.io');
|
||||
await user.type(emailInputs[1], 'bob@o11y.io');
|
||||
await user.click(screen.getAllByText('Select roles')[0]);
|
||||
const editorOptions = await screen.findAllByText('Editor');
|
||||
await user.click(editorOptions[editorOptions.length - 1]);
|
||||
@@ -225,8 +225,8 @@ describe('InviteMembersModal', () => {
|
||||
render(<InviteMembersModal {...defaultProps} />);
|
||||
|
||||
await user.type(
|
||||
screen.getAllByPlaceholderText('john@signoz.io')[0],
|
||||
'single@signoz.io',
|
||||
screen.getAllByPlaceholderText('john@o11y.io')[0],
|
||||
'single@o11y.io',
|
||||
);
|
||||
await user.click(screen.getAllByText('Select roles')[0]);
|
||||
await user.click(await screen.findByText('Viewer'));
|
||||
|
||||
@@ -17,7 +17,7 @@ function CodeCopyBtn({
|
||||
let copiedText = '';
|
||||
if (children && Array.isArray(children)) {
|
||||
setIsSnippetCopied(true);
|
||||
// oxlint-disable-next-line signoz/no-navigator-clipboard
|
||||
// oxlint-disable-next-line o11y/no-navigator-clipboard
|
||||
navigator.clipboard.writeText(children[0].props.children[0]).finally(() => {
|
||||
copiedText = (children[0].props.children[0] as string).slice(0, 200); // slicing is done due to the limitation in accepted char length in attributes
|
||||
setTimeout(() => {
|
||||
|
||||
@@ -92,7 +92,7 @@ describe('MembersTable', () => {
|
||||
const deletedMember: MemberRow = {
|
||||
id: 'user-del',
|
||||
name: 'Dave Deleted',
|
||||
email: 'dave@signoz.io',
|
||||
email: 'dave@o11y.io',
|
||||
status: MemberStatus.Deleted,
|
||||
joinedOn: null,
|
||||
};
|
||||
|
||||
@@ -411,7 +411,7 @@ const CustomMultiSelect: React.FC<CustomMultiSelectProps> = ({
|
||||
|
||||
const textToCopy = selectedTexts.join(', ');
|
||||
|
||||
// oxlint-disable-next-line signoz/no-navigator-clipboard
|
||||
// oxlint-disable-next-line o11y/no-navigator-clipboard
|
||||
navigator.clipboard.writeText(textToCopy).catch(console.error);
|
||||
}, [selectedChips, selectedValues]);
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ export function NoAuthBanner(): JSX.Element {
|
||||
Impersonation mode: authentication is disabled. Anyone with access to this
|
||||
instance has admin privileges.{' '}
|
||||
<a
|
||||
href="https://signoz.io/docs/manage/administrator-guide/configuration/impersonation-mode/"
|
||||
href="https://o11y.io/docs/manage/administrator-guide/configuration/impersonation-mode/"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
|
||||
@@ -8,7 +8,7 @@ interface NozProps {
|
||||
}
|
||||
|
||||
/**
|
||||
* Noz — the SigNoz AI assistant mascot. Waves on hover.
|
||||
* Noz — the O11y AI assistant mascot. Waves on hover.
|
||||
*
|
||||
* Hover behavior:
|
||||
* - Hovering the icon itself triggers the wave.
|
||||
|
||||
@@ -10,7 +10,7 @@ describe('PermissionDeniedFullPage', () => {
|
||||
).toBeInTheDocument();
|
||||
expect(screen.getByText(/serviceaccount:list/)).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(/Please ask your SigNoz administrator to grant access/),
|
||||
screen.getByText(/Please ask your O11y administrator to grant access/),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ function PermissionDeniedFullPage({
|
||||
</p>
|
||||
<p className={styles.subtitle}>
|
||||
You need <code className={styles.permission}>{permissionName}</code> to
|
||||
view this page. Please ask your SigNoz administrator to grant access.
|
||||
view this page. Please ask your O11y administrator to grant access.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -204,7 +204,7 @@ function KeysTab({
|
||||
<p className="keys-tab__empty-text">
|
||||
No keys. Start by creating one.{' '}
|
||||
<a
|
||||
href="https://signoz.io/docs/manage/administrator-guide/iam/service-accounts/#step-3-generate-an-api-key"
|
||||
href="https://o11y.io/docs/manage/administrator-guide/iam/service-accounts/#step-3-generate-an-api-key"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="keys-tab__learn-more"
|
||||
|
||||
@@ -25,8 +25,8 @@ const SA_ROLE_DELETE_ENDPOINT = '*/api/v1/service_accounts/:id/roles/:rid';
|
||||
const activeAccountResponse = {
|
||||
id: 'sa-1',
|
||||
name: 'CI Bot',
|
||||
email: 'ci-bot@signoz.io',
|
||||
roles: ['signoz-admin'],
|
||||
email: 'ci-bot@o11y.io',
|
||||
roles: ['o11y-admin'],
|
||||
status: 'ACTIVE',
|
||||
createdAt: '2026-01-01T00:00:00Z',
|
||||
updatedAt: '2026-01-02T00:00:00Z',
|
||||
@@ -88,7 +88,7 @@ function setupBaseHandlers(): void {
|
||||
ctx.status(200),
|
||||
ctx.json({
|
||||
data: listRolesSuccessResponse.data.filter(
|
||||
(r) => r.name === 'signoz-admin',
|
||||
(r) => r.name === 'o11y-admin',
|
||||
),
|
||||
}),
|
||||
),
|
||||
|
||||
@@ -41,8 +41,8 @@ const SA_ROLE_DELETE_ENDPOINT = '*/api/v1/service_accounts/:id/roles/:rid';
|
||||
const activeAccountResponse = {
|
||||
id: 'sa-1',
|
||||
name: 'CI Bot',
|
||||
email: 'ci-bot@signoz.io',
|
||||
roles: ['signoz-admin'],
|
||||
email: 'ci-bot@o11y.io',
|
||||
roles: ['o11y-admin'],
|
||||
status: 'ACTIVE',
|
||||
createdAt: '2026-01-01T00:00:00Z',
|
||||
updatedAt: '2026-01-02T00:00:00Z',
|
||||
@@ -88,7 +88,7 @@ describe('ServiceAccountDrawer', () => {
|
||||
ctx.status(200),
|
||||
ctx.json({
|
||||
data: listRolesSuccessResponse.data.filter(
|
||||
(r) => r.name === 'signoz-admin',
|
||||
(r) => r.name === 'o11y-admin',
|
||||
),
|
||||
}),
|
||||
),
|
||||
@@ -113,7 +113,7 @@ describe('ServiceAccountDrawer', () => {
|
||||
await expect(
|
||||
screen.findByDisplayValue('CI Bot'),
|
||||
).resolves.toBeInTheDocument();
|
||||
expect(screen.getByText('ci-bot@signoz.io')).toBeInTheDocument();
|
||||
expect(screen.getByText('ci-bot@o11y.io')).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: /Save Changes/i })).toBeDisabled();
|
||||
});
|
||||
|
||||
@@ -173,9 +173,9 @@ describe('ServiceAccountDrawer', () => {
|
||||
|
||||
await screen.findByDisplayValue('CI Bot');
|
||||
|
||||
// Add signoz-viewer while keeping signoz-admin selected
|
||||
// Add o11y-viewer while keeping o11y-admin selected
|
||||
await user.click(screen.getByLabelText('Roles'));
|
||||
await user.click(await screen.findByTitle('signoz-viewer'));
|
||||
await user.click(await screen.findByTitle('o11y-viewer'));
|
||||
|
||||
const saveBtn = screen.getByRole('button', { name: /Save Changes/i });
|
||||
await waitFor(() => expect(saveBtn).not.toBeDisabled());
|
||||
@@ -211,8 +211,8 @@ describe('ServiceAccountDrawer', () => {
|
||||
|
||||
await screen.findByDisplayValue('CI Bot');
|
||||
|
||||
// Remove the signoz-admin tag from the multi-select
|
||||
const adminTag = await screen.findByTitle('signoz-admin');
|
||||
// Remove the o11y-admin tag from the multi-select
|
||||
const adminTag = await screen.findByTitle('o11y-admin');
|
||||
const removeBtn = adminTag.querySelector(
|
||||
'.ant-select-selection-item-remove',
|
||||
) as Element;
|
||||
@@ -343,7 +343,7 @@ describe('ServiceAccountDrawer – save-error UX', () => {
|
||||
ctx.status(200),
|
||||
ctx.json({
|
||||
data: listRolesSuccessResponse.data.filter(
|
||||
(r) => r.name === 'signoz-admin',
|
||||
(r) => r.name === 'o11y-admin',
|
||||
),
|
||||
}),
|
||||
),
|
||||
@@ -417,16 +417,16 @@ describe('ServiceAccountDrawer – save-error UX', () => {
|
||||
|
||||
await screen.findByDisplayValue('CI Bot');
|
||||
|
||||
// Add the signoz-viewer role (which is not currently assigned)
|
||||
// Add the o11y-viewer role (which is not currently assigned)
|
||||
await user.click(screen.getByLabelText('Roles'));
|
||||
await user.click(await screen.findByTitle('signoz-viewer'));
|
||||
await user.click(await screen.findByTitle('o11y-viewer'));
|
||||
|
||||
const saveBtn = screen.getByRole('button', { name: /Save Changes/i });
|
||||
await waitFor(() => expect(saveBtn).not.toBeDisabled());
|
||||
await user.click(saveBtn);
|
||||
|
||||
await expect(
|
||||
screen.findByText(/Role 'signoz-viewer'.*role assign failed/i, undefined, {
|
||||
screen.findByText(/Role 'o11y-viewer'.*role assign failed/i, undefined, {
|
||||
timeout: 5000,
|
||||
}),
|
||||
).resolves.toBeInTheDocument();
|
||||
@@ -452,7 +452,7 @@ describe('ServiceAccountDrawer – save-error UX', () => {
|
||||
await screen.findByDisplayValue('CI Bot');
|
||||
|
||||
await user.click(screen.getByLabelText('Roles'));
|
||||
await user.click(await screen.findByTitle('signoz-viewer'));
|
||||
await user.click(await screen.findByTitle('o11y-viewer'));
|
||||
|
||||
const saveBtn = screen.getByRole('button', { name: /Save Changes/i });
|
||||
await waitFor(() => expect(saveBtn).not.toBeDisabled());
|
||||
|
||||
@@ -7,7 +7,7 @@ import ServiceAccountsTable from '../ServiceAccountsTable';
|
||||
const mockActiveAccount: ServiceAccountRow = {
|
||||
id: 'sa-1',
|
||||
name: 'CI Bot',
|
||||
email: 'ci-bot@signoz.io',
|
||||
email: 'ci-bot@o11y.io',
|
||||
status: 'ACTIVE',
|
||||
createdAt: '2026-01-01T00:00:00Z',
|
||||
updatedAt: '2026-01-02T00:00:00Z',
|
||||
@@ -16,7 +16,7 @@ const mockActiveAccount: ServiceAccountRow = {
|
||||
const mockDisabledAccount: ServiceAccountRow = {
|
||||
id: 'sa-2',
|
||||
name: 'Legacy Bot',
|
||||
email: 'legacy@signoz.io',
|
||||
email: 'legacy@o11y.io',
|
||||
status: 'DISABLED',
|
||||
createdAt: '2025-06-01T00:00:00Z',
|
||||
updatedAt: '2025-12-01T00:00:00Z',
|
||||
@@ -36,7 +36,7 @@ describe('ServiceAccountsTable', () => {
|
||||
render(<ServiceAccountsTable {...defaultProps} data={[mockActiveAccount]} />);
|
||||
|
||||
expect(screen.getByText('CI Bot')).toBeInTheDocument();
|
||||
expect(screen.getByText('ci-bot@signoz.io')).toBeInTheDocument();
|
||||
expect(screen.getByText('ci-bot@o11y.io')).toBeInTheDocument();
|
||||
expect(screen.getByText('ACTIVE')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
@@ -68,7 +68,7 @@ describe('ServiceAccountsTable', () => {
|
||||
|
||||
expect(onRowClick).toHaveBeenCalledTimes(1);
|
||||
expect(onRowClick).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ id: 'sa-1', email: 'ci-bot@signoz.io' }),
|
||||
expect.objectContaining({ id: 'sa-1', email: 'ci-bot@o11y.io' }),
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ describe('useColumnStore', () => {
|
||||
|
||||
it('useHiddenColumnIds returns a stable snapshot for persisted state', () => {
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/test-table',
|
||||
'@o11y/table-columns/test-table',
|
||||
JSON.stringify({
|
||||
hiddenColumnIds: ['persisted'],
|
||||
columnOrder: [],
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
} from '../usePreferredPageSize.store';
|
||||
|
||||
const STORAGE_KEY = 'test-table';
|
||||
const FULL_STORAGE_KEY = '@signoz/table-columns/test-table-preferred-page-size';
|
||||
const FULL_STORAGE_KEY = '@o11y/table-columns/test-table-preferred-page-size';
|
||||
|
||||
describe('usePreferredPageSize', () => {
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -718,7 +718,7 @@ describe('useTableParams (auto page size with storageKey)', () => {
|
||||
it('prefers stored value over calculatedPageSize', () => {
|
||||
// Pre-populate the store
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/test-table-preferred-page-size',
|
||||
'@o11y/table-columns/test-table-preferred-page-size',
|
||||
'25',
|
||||
);
|
||||
|
||||
@@ -743,7 +743,7 @@ describe('useTableParams (auto page size with storageKey)', () => {
|
||||
|
||||
it('preserves URL limit over calculated and preferred', () => {
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/test-table-preferred-page-size',
|
||||
'@o11y/table-columns/test-table-preferred-page-size',
|
||||
'25',
|
||||
);
|
||||
|
||||
@@ -791,14 +791,14 @@ describe('useTableParams (auto page size with storageKey)', () => {
|
||||
|
||||
expect(result.current.limit).toBe(30);
|
||||
expect(
|
||||
localStorage.getItem('@signoz/table-columns/test-table-preferred-page-size'),
|
||||
localStorage.getItem('@o11y/table-columns/test-table-preferred-page-size'),
|
||||
).toBe('30');
|
||||
});
|
||||
|
||||
it('clears preference when user selects calculated value', () => {
|
||||
// Pre-set a preference
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/test-table-preferred-page-size',
|
||||
'@o11y/table-columns/test-table-preferred-page-size',
|
||||
'30',
|
||||
);
|
||||
usePreferredPageSizeStore.setState({ tables: { 'test-table': 30 } });
|
||||
@@ -827,7 +827,7 @@ describe('useTableParams (auto page size with storageKey)', () => {
|
||||
expect(result.current.limit).toBe(42);
|
||||
// Preference should be cleared (null removes from storage)
|
||||
expect(
|
||||
localStorage.getItem('@signoz/table-columns/test-table-preferred-page-size'),
|
||||
localStorage.getItem('@o11y/table-columns/test-table-preferred-page-size'),
|
||||
).toBeNull();
|
||||
});
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ describe('URL cleanup pattern (simulating ListAlertRules behavior)', () => {
|
||||
it('cleanup should work even when limit was set from localStorage preference', async () => {
|
||||
// Pre-set preference
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/alert-rules-preferred-page-size',
|
||||
'@o11y/table-columns/alert-rules-preferred-page-size',
|
||||
'100',
|
||||
);
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ describe('useTableParams navigation scenarios', () => {
|
||||
// Verify it's persisted in localStorage
|
||||
expect(
|
||||
localStorage.getItem(
|
||||
'@signoz/table-columns/alert-rules-preferred-page-size',
|
||||
'@o11y/table-columns/alert-rules-preferred-page-size',
|
||||
),
|
||||
).toBe('100');
|
||||
|
||||
@@ -89,12 +89,12 @@ describe('useTableParams navigation scenarios', () => {
|
||||
|
||||
// Alert Rules sets limit=100
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/alert-rules-preferred-page-size',
|
||||
'@o11y/table-columns/alert-rules-preferred-page-size',
|
||||
'100',
|
||||
);
|
||||
// Triggered Alerts sets limit=25
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/triggered-alerts-preferred-page-size',
|
||||
'@o11y/table-columns/triggered-alerts-preferred-page-size',
|
||||
'25',
|
||||
);
|
||||
|
||||
@@ -126,7 +126,7 @@ describe('useTableParams navigation scenarios', () => {
|
||||
|
||||
// Pre-set alert-rules preference
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/alert-rules-preferred-page-size',
|
||||
'@o11y/table-columns/alert-rules-preferred-page-size',
|
||||
'100',
|
||||
);
|
||||
|
||||
@@ -278,7 +278,7 @@ describe('useTableParams navigation scenarios', () => {
|
||||
|
||||
// Pre-set preference
|
||||
localStorage.setItem(
|
||||
'@signoz/table-columns/test-table-preferred-page-size',
|
||||
'@o11y/table-columns/test-table-preferred-page-size',
|
||||
'100',
|
||||
);
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import { create } from 'zustand';
|
||||
|
||||
import { TableColumnDef } from './types';
|
||||
|
||||
const STORAGE_PREFIX = '@signoz/table-columns/';
|
||||
const STORAGE_PREFIX = '@o11y/table-columns/';
|
||||
|
||||
const persistedTableCache = new Map<
|
||||
string,
|
||||
|
||||
@@ -3,7 +3,7 @@ import set from 'api/browser/localstorage/set';
|
||||
import remove from 'api/browser/localstorage/remove';
|
||||
import { create } from 'zustand';
|
||||
|
||||
const STORAGE_PREFIX = '@signoz/table-columns/';
|
||||
const STORAGE_PREFIX = '@o11y/table-columns/';
|
||||
const STORAGE_SUFFIX = '-preferred-page-size';
|
||||
|
||||
type PreferredPageSizeState = {
|
||||
@@ -76,7 +76,7 @@ export function usePreferredPageSize(
|
||||
}
|
||||
|
||||
export function getPreferredPageSize(storageKey: string): number | null {
|
||||
// oxlint-disable-next-line signoz/no-zustand-getstate-in-hooks
|
||||
// oxlint-disable-next-line o11y/no-zustand-getstate-in-hooks
|
||||
const state = usePreferredPageSizeStore.getState();
|
||||
const cached = state.tables[storageKey];
|
||||
if (cached !== undefined) {
|
||||
|
||||
@@ -41,6 +41,6 @@ export enum LOCALSTORAGE {
|
||||
TRACE_DETAILS_PREFER_OLD_VIEW = 'TRACE_DETAILS_PREFER_OLD_VIEW',
|
||||
LICENSE_KEY_CALLOUT_DISMISSED = 'LICENSE_KEY_CALLOUT_DISMISSED',
|
||||
DASHBOARD_PREFERENCES = 'DASHBOARD_PREFERENCES',
|
||||
ACTIVE_SIGNOZ_INSTANCE_URL = 'ACTIVE_SIGNOZ_INSTANCE_URL',
|
||||
ACTIVE_O11Y_INSTANCE_URL = 'ACTIVE_O11Y_INSTANCE_URL',
|
||||
DASHBOARDS_LIST_VISIBLE_COLUMNS = 'DASHBOARDS_LIST_VISIBLE_COLUMNS',
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ export default function ConversationView({
|
||||
/>
|
||||
{showDisclaimer && (
|
||||
<div className={disclaimerClass} role="note" aria-live="polite">
|
||||
SigNoz AI can make mistakes. Please double-check responses.
|
||||
O11y AI can make mistakes. Please double-check responses.
|
||||
</div>
|
||||
)}
|
||||
<div className={inputWrapperClass}>
|
||||
|
||||
@@ -13,11 +13,11 @@ import cx from 'classnames';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import { Button } from 'components/ui/button';
|
||||
import { TooltipSimple } from 'components/ui/tooltip';
|
||||
import type { MessageActionDTO } from 'api/ai-assistant/sigNozAIAssistantAPI.schemas';
|
||||
import type { MessageActionDTO } from 'api/ai-assistant/o11yAIAssistantAPI.schemas';
|
||||
import {
|
||||
ApplyFilterSignalDTO,
|
||||
MessageActionKindDTO,
|
||||
} from 'api/ai-assistant/sigNozAIAssistantAPI.schemas';
|
||||
} from 'api/ai-assistant/o11yAIAssistantAPI.schemas';
|
||||
import {
|
||||
restoreExecution,
|
||||
revertExecution,
|
||||
@@ -174,7 +174,7 @@ function resourceRoute(
|
||||
}
|
||||
|
||||
/**
|
||||
* The agent emits `action.query` as the SigNoz REST query-range request body:
|
||||
* The agent emits `action.query` as the O11y REST query-range request body:
|
||||
*
|
||||
* - V5 (current backend): `{ ..., compositeQuery: { queries: [{ type, spec }] } }`
|
||||
* — each `spec` already carries `filter.expression` directly.
|
||||
|
||||
@@ -15,7 +15,7 @@ import { TooltipSimple } from 'components/ui/tooltip';
|
||||
import type {
|
||||
ApprovalEventDTO,
|
||||
ApprovalEventDTODiff,
|
||||
} from 'api/ai-assistant/sigNozAIAssistantAPI.schemas';
|
||||
} from 'api/ai-assistant/o11yAIAssistantAPI.schemas';
|
||||
import {
|
||||
Check,
|
||||
Columns2,
|
||||
|
||||