diff --git a/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml b/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml index 6024201cb8..8806533caa 100644 --- a/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml +++ b/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml @@ -28,7 +28,7 @@ services: volumes: - ./data/alertmanager:/data command: - - --queryService.url=http://query-service:8080 + - --queryService.url=http://query-service:8085 - --storage.path=/data depends_on: - query-service @@ -37,7 +37,7 @@ services: condition: on-failure query-service: - image: signoz/query-service:0.8.0 + image: signoz/query-service:0.8.1 command: ["-config=/root/config/prometheus.yml"] # ports: # - "6060:6060" # pprof port @@ -65,7 +65,7 @@ services: - clickhouse frontend: - image: signoz/frontend:0.8.0 + image: signoz/frontend:0.8.1 deploy: restart_policy: condition: on-failure @@ -78,7 +78,7 @@ services: - ../common/nginx-config.conf:/etc/nginx/conf.d/default.conf otel-collector: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-config.yaml"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml @@ -104,7 +104,7 @@ services: - clickhouse otel-collector-metrics: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-metrics-config.yaml"] volumes: - ./otel-collector-metrics-config.yaml:/etc/otel-collector-metrics-config.yaml diff --git a/deploy/docker-swarm/clickhouse-setup/otel-collector-config.yaml b/deploy/docker-swarm/clickhouse-setup/otel-collector-config.yaml index 9d34907164..5f65e6eb5c 100644 --- a/deploy/docker-swarm/clickhouse-setup/otel-collector-config.yaml +++ b/deploy/docker-swarm/clickhouse-setup/otel-collector-config.yaml @@ -52,7 +52,7 @@ extensions: health_check: {} zpages: {} exporters: - clickhouse: + clickhousetraces: datasource: tcp://clickhouse:9000/?database=signoz_traces clickhousemetricswrite: endpoint: tcp://clickhouse:9000/?database=signoz_metrics @@ -66,7 +66,7 @@ service: traces: receivers: [jaeger, otlp] processors: [signozspanmetrics/prometheus, batch] - exporters: [clickhouse] + exporters: [clickhousetraces] metrics: receivers: [otlp, hostmetrics] processors: [batch] diff --git a/deploy/docker/clickhouse-setup/docker-compose.arm.yaml b/deploy/docker/clickhouse-setup/docker-compose.arm.yaml index cc29115bf1..e4197cfbc3 100644 --- a/deploy/docker/clickhouse-setup/docker-compose.arm.yaml +++ b/deploy/docker/clickhouse-setup/docker-compose.arm.yaml @@ -30,14 +30,14 @@ services: condition: service_healthy restart: on-failure command: - - --queryService.url=http://query-service:8080 + - --queryService.url=http://query-service:8085 - --storage.path=/data # Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in `./scripts/commentLinesForSetup.sh` & `./CONTRIBUTING.md` query-service: - image: signoz/query-service:0.8.0 + image: signoz/query-service:0.8.1 container_name: query-service command: ["-config=/root/config/prometheus.yml"] # ports: @@ -53,7 +53,6 @@ services: - GODEBUG=netdns=go - TELEMETRY_ENABLED=true - DEPLOYMENT_TYPE=docker-standalone-arm - restart: on-failure healthcheck: test: ["CMD", "wget", "--spider", "-q", "localhost:8080/api/v1/version"] @@ -65,7 +64,7 @@ services: condition: service_healthy frontend: - image: signoz/frontend:0.8.0 + image: signoz/frontend:0.8.1 container_name: frontend restart: on-failure depends_on: @@ -77,7 +76,7 @@ services: - ../common/nginx-config.conf:/etc/nginx/conf.d/default.conf otel-collector: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-config.yaml"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml @@ -98,7 +97,7 @@ services: condition: service_healthy otel-collector-metrics: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-metrics-config.yaml"] volumes: - ./otel-collector-metrics-config.yaml:/etc/otel-collector-metrics-config.yaml diff --git a/deploy/docker/clickhouse-setup/docker-compose.yaml b/deploy/docker/clickhouse-setup/docker-compose.yaml index e18d584e1d..e6d2de2f3c 100644 --- a/deploy/docker/clickhouse-setup/docker-compose.yaml +++ b/deploy/docker/clickhouse-setup/docker-compose.yaml @@ -30,13 +30,13 @@ services: condition: service_healthy restart: on-failure command: - - --queryService.url=http://query-service:8080 + - --queryService.url=http://query-service:8085 - --storage.path=/data # Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in `./scripts/commentLinesForSetup.sh` & `./CONTRIBUTING.md` query-service: - image: signoz/query-service:0.8.0 + image: signoz/query-service:0.8.1 container_name: query-service command: ["-config=/root/config/prometheus.yml"] # ports: @@ -63,7 +63,7 @@ services: condition: service_healthy frontend: - image: signoz/frontend:0.8.0 + image: signoz/frontend:0.8.1 container_name: frontend restart: on-failure depends_on: @@ -75,7 +75,7 @@ services: - ../common/nginx-config.conf:/etc/nginx/conf.d/default.conf otel-collector: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-config.yaml"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml @@ -96,7 +96,7 @@ services: condition: service_healthy otel-collector-metrics: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-metrics-config.yaml"] volumes: - ./otel-collector-metrics-config.yaml:/etc/otel-collector-metrics-config.yaml diff --git a/deploy/docker/clickhouse-setup/otel-collector-config.yaml b/deploy/docker/clickhouse-setup/otel-collector-config.yaml index c59a8f0e87..bcf7ce58ce 100644 --- a/deploy/docker/clickhouse-setup/otel-collector-config.yaml +++ b/deploy/docker/clickhouse-setup/otel-collector-config.yaml @@ -52,7 +52,7 @@ extensions: health_check: {} zpages: {} exporters: - clickhouse: + clickhousetraces: datasource: tcp://clickhouse:9000/?database=signoz_traces clickhousemetricswrite: endpoint: tcp://clickhouse:9000/?database=signoz_metrics @@ -66,7 +66,7 @@ service: traces: receivers: [jaeger, otlp] processors: [signozspanmetrics/prometheus, batch] - exporters: [clickhouse] + exporters: [clickhousetraces] metrics: receivers: [otlp, hostmetrics] processors: [batch] diff --git a/frontend/src/container/GridGraphLayout/GraphLayout.tsx b/frontend/src/container/GridGraphLayout/GraphLayout.tsx index 32b87ee09d..97fee8ec9d 100644 --- a/frontend/src/container/GridGraphLayout/GraphLayout.tsx +++ b/frontend/src/container/GridGraphLayout/GraphLayout.tsx @@ -29,12 +29,15 @@ function GraphLayout({ const { role } = useSelector((state) => state.app); const { isDarkMode } = useSelector((state) => state.app); - const [saveLayout] = useComponentPermission(['save_layout'], role); + const [saveLayoutPermission, addPanelPermission] = useComponentPermission( + ['save_layout', 'add_panel'], + role, + ); return ( <> - {saveLayout && ( + {saveLayoutPermission && ( )} - + {addPanelPermission && ( + + )} ( (state) => state.dashboards, ); + const { role } = useSelector((state) => state.app); + + const [saveLayoutPermission] = useComponentPermission(['save_layout'], role); const [saveLayoutState, setSaveLayoutState] = useState({ loading: false, error: false, @@ -109,31 +114,34 @@ function GridGraph(props: Props): JSX.Element { loading: true, })); - const response = await updateDashboardApi({ - data: { - title: data.title, - description: data.description, - name: data.name, - tags: data.tags, - widgets: data.widgets, - layout, - }, - uuid: selectedDashboard.uuid, - }); - if (response.statusCode === 200) { - setSaveLayoutState((state) => ({ - ...state, - error: false, - errorMessage: '', - loading: false, - })); - } else { - setSaveLayoutState((state) => ({ - ...state, - error: true, - errorMessage: response.error || 'Something went wrong', - loading: false, - })); + // Save layout only when users has the has the permission to do so. + if (saveLayoutPermission) { + const response = await updateDashboardApi({ + data: { + title: data.title, + description: data.description, + name: data.name, + tags: data.tags, + widgets: data.widgets, + layout, + }, + uuid: selectedDashboard.uuid, + }); + if (response.statusCode === 200) { + setSaveLayoutState((state) => ({ + ...state, + error: false, + errorMessage: '', + loading: false, + })); + } else { + setSaveLayoutState((state) => ({ + ...state, + error: true, + errorMessage: response.error || 'Something went wrong', + loading: false, + })); + } } } catch (error) { console.error(error); @@ -145,6 +153,7 @@ function GridGraph(props: Props): JSX.Element { data.tags, data.title, data.widgets, + saveLayoutPermission, selectedDashboard.uuid, ], ); diff --git a/frontend/src/container/ListOfDashboard/index.tsx b/frontend/src/container/ListOfDashboard/index.tsx index 64f3f573c1..cb375b9742 100644 --- a/frontend/src/container/ListOfDashboard/index.tsx +++ b/frontend/src/container/ListOfDashboard/index.tsx @@ -15,11 +15,19 @@ import ROUTES from 'constants/routes'; import SearchFilter from 'container/ListOfDashboard/SearchFilter'; import useComponentPermission from 'hooks/useComponentPermission'; import history from 'lib/history'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { + Dispatch, + useCallback, + useEffect, + useMemo, + useState, +} from 'react'; import { useTranslation } from 'react-i18next'; -import { useSelector } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { generatePath } from 'react-router-dom'; import { AppState } from 'store/reducers'; +import AppActions from 'types/actions'; +import { GET_ALL_DASHBOARD_SUCCESS } from 'types/actions/dashboard'; import { Dashboard } from 'types/api/dashboard/getAll'; import AppReducer from 'types/reducer/app'; import DashboardReducer from 'types/reducer/dashboards'; @@ -36,6 +44,7 @@ function ListOfAllDashboard(): JSX.Element { const { dashboards, loading } = useSelector( (state) => state.dashboards, ); + const dispatch = useDispatch>(); const { role } = useSelector((state) => state.app); const [action, createNewDashboard, newDashboard] = useComponentPermission( @@ -131,6 +140,10 @@ function ListOfAllDashboard(): JSX.Element { }); if (response.statusCode === 200) { + dispatch({ + type: GET_ALL_DASHBOARD_SUCCESS, + payload: [], + }); history.push( generatePath(ROUTES.DASHBOARD, { dashboardId: response.payload.uuid, @@ -151,7 +164,7 @@ function ListOfAllDashboard(): JSX.Element { errorMessage: (error as AxiosError).toString() || 'Something went Wrong', }); } - }, [newDashboardState, t]); + }, [newDashboardState, t, dispatch]); const getText = useCallback(() => { if (!newDashboardState.error && !newDashboardState.loading) { diff --git a/frontend/src/container/SideNav/styles.ts b/frontend/src/container/SideNav/styles.ts index ae0ed0898b..688356cf7d 100644 --- a/frontend/src/container/SideNav/styles.ts +++ b/frontend/src/container/SideNav/styles.ts @@ -66,7 +66,7 @@ export const RedDot = styled.div` background: #d32029; border-radius: 50%; - margin-left: 1rem; + margin-left: 0.5rem; margin-top: 0.5rem; `; diff --git a/frontend/src/utils/permission/index.ts b/frontend/src/utils/permission/index.ts index a4fe82b395..6f12d43225 100644 --- a/frontend/src/utils/permission/index.ts +++ b/frontend/src/utils/permission/index.ts @@ -16,7 +16,8 @@ export type ComponentTypes = | 'delete_widget' | 'new_dashboard' | 'new_alert_action' - | 'edit_widget'; + | 'edit_widget' + | 'add_panel'; export const componentPermission: Record = { current_org_settings: ['ADMIN'], @@ -34,6 +35,7 @@ export const componentPermission: Record = { new_dashboard: ['ADMIN', 'EDITOR'], new_alert_action: ['ADMIN'], edit_widget: ['ADMIN', 'EDITOR'], + add_panel: ['ADMIN', 'EDITOR'], }; export const routePermission: Record = { @@ -47,7 +49,7 @@ export const routePermission: Record = { APPLICATION: ['ADMIN', 'EDITOR', 'VIEWER'], CHANNELS_EDIT: ['ADMIN'], CHANNELS_NEW: ['ADMIN'], - DASHBOARD: ['ADMIN', 'EDITOR', 'EDITOR'], + DASHBOARD: ['ADMIN', 'EDITOR', 'VIEWER'], DASHBOARD_WIDGET: ['ADMIN', 'EDITOR', 'VIEWER'], EDIT_ALERTS: ['ADMIN'], ERROR_DETAIL: ['ADMIN', 'EDITOR', 'VIEWER'], diff --git a/pkg/query-service/app/http_handler.go b/pkg/query-service/app/http_handler.go index cb7779c29e..ee4633ff1a 100644 --- a/pkg/query-service/app/http_handler.go +++ b/pkg/query-service/app/http_handler.go @@ -277,6 +277,11 @@ func AdminAccess(f func(http.ResponseWriter, *http.Request)) http.HandlerFunc { } } +// RegisterPrivateRoutes registers routes for this handler on the given router +func (aH *APIHandler) RegisterPrivateRoutes(router *mux.Router) { + router.HandleFunc("/api/v1/channels", aH.listChannels).Methods(http.MethodGet) +} + // RegisterRoutes registers routes for this handler on the given router func (aH *APIHandler) RegisterRoutes(router *mux.Router) { router.HandleFunc("/api/v1/query_range", ViewAccess(aH.queryRangeMetrics)).Methods(http.MethodGet) diff --git a/pkg/query-service/app/server.go b/pkg/query-service/app/server.go index e157153dcc..7904e813e2 100644 --- a/pkg/query-service/app/server.go +++ b/pkg/query-service/app/server.go @@ -25,23 +25,24 @@ import ( ) type ServerOptions struct { - HTTPHostPort string + HTTPHostPort string + PrivateHostPort string } // Server runs HTTP, Mux and a grpc server type Server struct { // logger *zap.Logger - // querySvc *querysvc.QueryService - // queryOptions *QueryOptions - // tracer opentracing.Tracer // TODO make part of flags.Service serverOptions *ServerOptions - conn net.Listener - // grpcConn net.Listener - httpConn net.Listener - // grpcServer *grpc.Server - httpServer *http.Server - separatePorts bool + + // public http router + httpConn net.Listener + httpServer *http.Server + + // private http + privateConn net.Listener + privateHTTP *http.Server + unavailableChannel chan healthcheck.Status } @@ -51,59 +52,20 @@ func (s Server) HealthCheckStatus() chan healthcheck.Status { } // NewServer creates and initializes Server -// func NewServer(logger *zap.Logger, querySvc *querysvc.QueryService, options *QueryOptions, tracer opentracing.Tracer) (*Server, error) { func NewServer(serverOptions *ServerOptions) (*Server, error) { - // _, httpPort, err := net.SplitHostPort(serverOptions.HTTPHostPort) - // if err != nil { - // return nil, err - // } - - // _, grpcPort, err := net.SplitHostPort(options.GRPCHostPort) - // if err != nil { - // return nil, err - // } - - // grpcServer, err := createGRPCServer(querySvc, options, logger, tracer) - // if err != nil { - // return nil, err - // } - if err := dao.InitDao("sqlite", constants.RELATIONAL_DATASOURCE_PATH); err != nil { return nil, err } - - s := &Server{ - // logger: logger, - // querySvc: querySvc, - // queryOptions: options, - // tracer: tracer, - // grpcServer: grpcServer, - serverOptions: serverOptions, - separatePorts: true, - // separatePorts: grpcPort != httpPort, - unavailableChannel: make(chan healthcheck.Status), - } - httpServer, err := s.createHTTPServer() - - if err != nil { - return nil, err - } - s.httpServer = httpServer - - return s, nil -} - -func (s *Server) createHTTPServer() (*http.Server, error) { - localDB, err := dashboards.InitDB(constants.RELATIONAL_DATASOURCE_PATH) + if err != nil { return nil, err } + localDB.SetMaxOpenConns(10) var reader Reader - storage := os.Getenv("STORAGE") if storage == "clickhouse" { zap.S().Info("Using ClickHouse as datastore ...") @@ -119,24 +81,75 @@ func (s *Server) createHTTPServer() (*http.Server, error) { return nil, err } + s := &Server{ + // logger: logger, + // tracer: tracer, + serverOptions: serverOptions, + unavailableChannel: make(chan healthcheck.Status), + } + + httpServer, err := s.createPublicServer(apiHandler) + + if err != nil { + return nil, err + } + + s.httpServer = httpServer + + privateServer, err := s.createPrivateServer(apiHandler) + if err != nil { + return nil, err + } + + s.privateHTTP = privateServer + + return s, nil +} + +func (s *Server) createPrivateServer(api *APIHandler) (*http.Server, error) { + + r := NewRouter() + + r.Use(setTimeoutMiddleware) + r.Use(s.analyticsMiddleware) + r.Use(loggingMiddlewarePrivate) + + api.RegisterPrivateRoutes(r) + + c := cors.New(cors.Options{ + //todo(amol): find out a way to add exact domain or + // ip here for alert manager + AllowedOrigins: []string{"*"}, + AllowedMethods: []string{"GET", "DELETE", "POST", "PUT"}, + AllowedHeaders: []string{"Accept", "Authorization", "Content-Type"}, + }) + + handler := c.Handler(r) + handler = handlers.CompressHandler(handler) + + return &http.Server{ + Handler: handler, + }, nil +} + +func (s *Server) createPublicServer(api *APIHandler) (*http.Server, error) { + r := NewRouter() r.Use(setTimeoutMiddleware) r.Use(s.analyticsMiddleware) r.Use(loggingMiddleware) - apiHandler.RegisterRoutes(r) - apiHandler.RegisterMetricsRoutes(r) + api.RegisterRoutes(r) + api.RegisterMetricsRoutes(r) c := cors.New(cors.Options{ AllowedOrigins: []string{"*"}, - // AllowCredentials: true, AllowedMethods: []string{"GET", "DELETE", "POST", "PUT"}, AllowedHeaders: []string{"Accept", "Authorization", "Content-Type"}, }) handler := c.Handler(r) - // var handler http.Handler = r handler = handlers.CompressHandler(handler) @@ -145,6 +158,7 @@ func (s *Server) createHTTPServer() (*http.Server, error) { }, nil } +// loggingMiddleware is used for logging public api calls func loggingMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { route := mux.CurrentRoute(r) @@ -155,6 +169,18 @@ func loggingMiddleware(next http.Handler) http.Handler { }) } +// loggingMiddlewarePrivate is used for logging private api calls +// from internal services like alert manager +func loggingMiddlewarePrivate(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + route := mux.CurrentRoute(r) + path, _ := route.GetPathTemplate() + startTime := time.Now() + next.ServeHTTP(w, r) + zap.S().Info(path, "\tprivatePort: true", "\ttimeTaken: ", time.Now().Sub(startTime)) + }) +} + type loggingResponseWriter struct { http.ResponseWriter statusCode int @@ -198,61 +224,42 @@ func setTimeoutMiddleware(next http.Handler) http.Handler { }) } -// initListener initialises listeners of the server -func (s *Server) initListener() (cmux.CMux, error) { - if s.separatePorts { // use separate ports and listeners each for gRPC and HTTP requests - var err error - // s.grpcConn, err = net.Listen("tcp", s.queryOptions.GRPCHostPort) - // if err != nil { - // return nil, err - // } - - s.httpConn, err = net.Listen("tcp", s.serverOptions.HTTPHostPort) - if err != nil { - return nil, err - } - zap.S().Info("Query server started ...") - return nil, nil +// initListeners initialises listeners of the server +func (s *Server) initListeners() error { + // listen on public port + var err error + publicHostPort := s.serverOptions.HTTPHostPort + if publicHostPort == "" { + return fmt.Errorf("constants.HTTPHostPort is required") } - // // old behavior using cmux - // conn, err := net.Listen("tcp", s.queryOptions.HostPort) - // if err != nil { - // return nil, err - // } - // s.conn = conn + s.httpConn, err = net.Listen("tcp", publicHostPort) + if err != nil { + return err + } - // var tcpPort int - // if port, err := netutils + zap.S().Info(fmt.Sprintf("Query server started listening on %s...", s.serverOptions.HTTPHostPort)) - // utils.GetPort(s.conn.Addr()); err == nil { - // tcpPort = port - // } + // listen on private port to support internal services + privateHostPort := s.serverOptions.PrivateHostPort - // zap.S().Info( - // "Query server started", - // zap.Int("port", tcpPort), - // zap.String("addr", s.queryOptions.HostPort)) + if privateHostPort == "" { + return fmt.Errorf("constants.PrivateHostPort is required") + } - // // cmux server acts as a reverse-proxy between HTTP and GRPC backends. - // cmuxServer := cmux.New(s.conn) - - // s.grpcConn = cmuxServer.MatchWithWriters( - // cmux.HTTP2MatchHeaderFieldSendSettings("content-type", "application/grpc"), - // cmux.HTTP2MatchHeaderFieldSendSettings("content-type", "application/grpc+proto"), - // ) - // s.httpConn = cmuxServer.Match(cmux.Any()) - // s.queryOptions.HTTPHostPort = s.queryOptions.HostPort - // s.queryOptions.GRPCHostPort = s.queryOptions.HostPort - - return nil, nil + s.privateConn, err = net.Listen("tcp", privateHostPort) + if err != nil { + return err + } + zap.S().Info(fmt.Sprintf("Query server started listening on private port %s...", s.serverOptions.PrivateHostPort)) + return nil } -// Start http, GRPC and cmux servers concurrently +// Start listening on http and private http port concurrently func (s *Server) Start() error { - _, err := s.initListener() + err := s.initListeners() if err != nil { return err } @@ -283,5 +290,25 @@ func (s *Server) Start() error { } }() + var privatePort int + if port, err := utils.GetPort(s.privateConn.Addr()); err == nil { + privatePort = port + } + fmt.Println("starting private http") + go func() { + zap.S().Info("Starting Private HTTP server", zap.Int("port", privatePort), zap.String("addr", s.serverOptions.PrivateHostPort)) + + switch err := s.privateHTTP.Serve(s.privateConn); err { + case nil, http.ErrServerClosed, cmux.ErrListenerClosed: + // normal exit, nothing to do + zap.S().Info("private http server closed") + default: + zap.S().Error("Could not start private HTTP server", zap.Error(err)) + } + + s.unavailableChannel <- healthcheck.Unavailable + + }() + return nil } diff --git a/pkg/query-service/constants/constants.go b/pkg/query-service/constants/constants.go index f18737c434..2825ce31ea 100644 --- a/pkg/query-service/constants/constants.go +++ b/pkg/query-service/constants/constants.go @@ -6,8 +6,9 @@ import ( ) const ( - HTTPHostPort = "0.0.0.0:8080" // Address to serve http (query service) - DebugHttpPort = "0.0.0.0:6060" // Address to serve http (pprof) + HTTPHostPort = "0.0.0.0:8080" // Address to serve http (query service) + PrivateHostPort = "0.0.0.0:8085" // Address to server internal services like alert manager + DebugHttpPort = "0.0.0.0:6060" // Address to serve http (pprof) ) var DEFAULT_TELEMETRY_ANONYMOUS = false @@ -37,29 +38,29 @@ var AmChannelApiPath = GetOrDefaultEnv("ALERTMANAGER_API_CHANNEL_PATH", "v1/rout var RELATIONAL_DATASOURCE_PATH = GetOrDefaultEnv("SIGNOZ_LOCAL_DB_PATH", "/var/lib/signoz/signoz.db") const ( - ServiceName = "serviceName" - HttpRoute = "httpRoute" - HttpCode = "httpCode" - HttpHost = "httpHost" - HttpUrl = "httpUrl" - HttpMethod = "httpMethod" - Component = "component" - OperationDB = "name" - OperationRequest = "operation" - Status = "status" - Duration = "duration" - DBName = "dbName" - DBOperation = "dbOperation" - DBSystem = "dbSystem" - MsgSystem = "msgSystem" - MsgOperation = "msgOperation" - Timestamp = "timestamp" - Descending = "descending" - Ascending = "ascending" - ContextTimeout = 60 // seconds - StatusPending = "pending" - StatusFailed = "failed" - StatusSuccess = "success" + ServiceName = "serviceName" + HttpRoute = "httpRoute" + HttpCode = "httpCode" + HttpHost = "httpHost" + HttpUrl = "httpUrl" + HttpMethod = "httpMethod" + Component = "component" + OperationDB = "name" + OperationRequest = "operation" + Status = "status" + Duration = "duration" + DBName = "dbName" + DBOperation = "dbOperation" + DBSystem = "dbSystem" + MsgSystem = "msgSystem" + MsgOperation = "msgOperation" + Timestamp = "timestamp" + Descending = "descending" + Ascending = "ascending" + ContextTimeout = 60 // seconds + StatusPending = "pending" + StatusFailed = "failed" + StatusSuccess = "success" ) func GetOrDefaultEnv(key string, fallback string) string { diff --git a/pkg/query-service/main.go b/pkg/query-service/main.go index 8eb1c48ccd..b837560531 100644 --- a/pkg/query-service/main.go +++ b/pkg/query-service/main.go @@ -34,7 +34,8 @@ func main() { version.PrintVersion() serverOptions := &app.ServerOptions{ - HTTPHostPort: constants.HTTPHostPort, + HTTPHostPort: constants.HTTPHostPort, + PrivateHostPort: constants.PrivateHostPort, } // Read the jwt secret key diff --git a/pkg/query-service/tests/test-deploy/docker-compose.arm.yaml b/pkg/query-service/tests/test-deploy/docker-compose.arm.yaml index df1df0e970..387daed353 100644 --- a/pkg/query-service/tests/test-deploy/docker-compose.arm.yaml +++ b/pkg/query-service/tests/test-deploy/docker-compose.arm.yaml @@ -23,7 +23,7 @@ services: - query-service restart: on-failure command: - - --queryService.url=http://query-service:8080 + - --queryService.url=http://query-service:8085 - --storage.path=/data query-service: @@ -51,7 +51,7 @@ services: condition: service_healthy otel-collector: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-config.yaml"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml @@ -64,7 +64,7 @@ services: condition: service_healthy otel-collector-metrics: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-metrics-config.yaml"] volumes: - ./otel-collector-metrics-config.yaml:/etc/otel-collector-metrics-config.yaml diff --git a/pkg/query-service/tests/test-deploy/docker-compose.yaml b/pkg/query-service/tests/test-deploy/docker-compose.yaml index 4f5dd7033c..28bfb726af 100644 --- a/pkg/query-service/tests/test-deploy/docker-compose.yaml +++ b/pkg/query-service/tests/test-deploy/docker-compose.yaml @@ -26,7 +26,7 @@ services: - query-service restart: on-failure command: - - --queryService.url=http://query-service:8080 + - --queryService.url=http://query-service:8085 - --storage.path=/data # Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in `./scripts/commentLinesForSetup.sh` & `./CONTRIBUTING.md` @@ -56,7 +56,7 @@ services: condition: service_healthy otel-collector: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-config.yaml"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml @@ -69,7 +69,7 @@ services: condition: service_healthy otel-collector-metrics: - image: signoz/otelcontribcol:0.43.0-0.1 + image: signoz/otelcontribcol:0.45.1-0.2 command: ["--config=/etc/otel-collector-metrics-config.yaml"] volumes: - ./otel-collector-metrics-config.yaml:/etc/otel-collector-metrics-config.yaml diff --git a/pkg/query-service/tests/test-deploy/otel-collector-config.yaml b/pkg/query-service/tests/test-deploy/otel-collector-config.yaml index 128d0fb6a2..d6c12ddcc1 100644 --- a/pkg/query-service/tests/test-deploy/otel-collector-config.yaml +++ b/pkg/query-service/tests/test-deploy/otel-collector-config.yaml @@ -49,7 +49,7 @@ extensions: health_check: {} zpages: {} exporters: - clickhouse: + clickhousetraces: datasource: tcp://clickhouse:9000/?database=signoz_traces clickhousemetricswrite: endpoint: tcp://clickhouse:9000/?database=signoz_metrics @@ -63,7 +63,7 @@ service: traces: receivers: [jaeger, otlp] processors: [signozspanmetrics/prometheus, batch] - exporters: [clickhouse] + exporters: [clickhousetraces] metrics: receivers: [otlp, hostmetrics] processors: [batch]