diff --git a/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml b/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml index 9fbf9e0632..314ab03c0c 100644 --- a/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml +++ b/deploy/docker-swarm/clickhouse-setup/docker-compose.yaml @@ -40,7 +40,7 @@ services: condition: on-failure query-service: - image: signoz/query-service:0.10.1 + image: signoz/query-service:0.10.2 command: ["-config=/root/config/prometheus.yml"] # ports: # - "6060:6060" # pprof port @@ -68,7 +68,7 @@ services: - clickhouse frontend: - image: signoz/frontend:0.10.1 + image: signoz/frontend:0.10.2 deploy: restart_policy: condition: on-failure diff --git a/deploy/docker/clickhouse-setup/docker-compose.yaml b/deploy/docker/clickhouse-setup/docker-compose.yaml index 2892cb89a2..1059cc5f8a 100644 --- a/deploy/docker/clickhouse-setup/docker-compose.yaml +++ b/deploy/docker/clickhouse-setup/docker-compose.yaml @@ -39,7 +39,7 @@ services: # 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.10.1 + image: signoz/query-service:0.10.2 container_name: query-service command: ["-config=/root/config/prometheus.yml"] # ports: @@ -66,7 +66,7 @@ services: condition: service_healthy frontend: - image: signoz/frontend:0.10.1 + image: signoz/frontend:0.10.2 container_name: frontend restart: on-failure depends_on: diff --git a/frontend/src/container/MetricsApplication/Tabs/Overview.tsx b/frontend/src/container/MetricsApplication/Tabs/Overview.tsx index 2dbf2d33fd..7197887be1 100644 --- a/frontend/src/container/MetricsApplication/Tabs/Overview.tsx +++ b/frontend/src/container/MetricsApplication/Tabs/Overview.tsx @@ -7,7 +7,8 @@ import convertToNanoSecondsToSecond from 'lib/convertToNanoSecondsToSecond'; import { colors } from 'lib/getRandomColor'; import history from 'lib/history'; import { convertRawQueriesToTraceSelectedTags } from 'lib/resourceAttributes'; -import React, { useRef } from 'react'; +import { escapeRegExp } from 'lodash-es'; +import React, { useMemo, useRef } from 'react'; import { useSelector } from 'react-redux'; import { useParams } from 'react-router-dom'; import { AppState } from 'store/reducers'; @@ -29,7 +30,11 @@ function Application({ getWidget }: DashboardProps): JSX.Element { resourceAttributeQueries, topLevelOperations, } = useSelector((state) => state.metrics); - const operationsRegex = topLevelOperations.join('|'); + const operationsRegex = useMemo(() => { + return encodeURIComponent( + topLevelOperations.map((e) => escapeRegExp(e)).join('|'), + ); + }, [topLevelOperations]); const selectedTraceTags: string = JSON.stringify( convertRawQueriesToTraceSelectedTags(resourceAttributeQueries, 'array') || [], @@ -195,7 +200,7 @@ function Application({ getWidget }: DashboardProps): JSX.Element { }} widget={getWidget([ { - query: `sum(rate(signoz_latency_count{service_name="${servicename}", operation=~"${operationsRegex}"${resourceAttributePromQLQuery}}[5m]))`, + query: `sum(rate(signoz_latency_count{service_name="${servicename}", operation=~\`${operationsRegex}\`${resourceAttributePromQLQuery}}[5m]))`, legend: 'Operations', }, ])} @@ -229,7 +234,7 @@ function Application({ getWidget }: DashboardProps): JSX.Element { }} widget={getWidget([ { - query: `max(sum(rate(signoz_calls_total{service_name="${servicename}", operation=~"${operationsRegex}", status_code="STATUS_CODE_ERROR"${resourceAttributePromQLQuery}}[5m]) OR rate(signoz_calls_total{service_name="${servicename}", operation=~"${operationsRegex}", http_status_code=~"5.."${resourceAttributePromQLQuery}}[5m]))*100/sum(rate(signoz_calls_total{service_name="${servicename}", operation=~"${operationsRegex}"${resourceAttributePromQLQuery}}[5m]))) < 1000 OR vector(0)`, + query: `max(sum(rate(signoz_calls_total{service_name="${servicename}", operation=~\`${operationsRegex}\`, status_code="STATUS_CODE_ERROR"${resourceAttributePromQLQuery}}[5m]) OR rate(signoz_calls_total{service_name="${servicename}", operation=~\`${operationsRegex}\`, http_status_code=~"5.."${resourceAttributePromQLQuery}}[5m]))*100/sum(rate(signoz_calls_total{service_name="${servicename}", operation=~\`${operationsRegex}\`${resourceAttributePromQLQuery}}[5m]))) < 1000 OR vector(0)`, legend: 'Error Percentage', }, ])} diff --git a/frontend/src/lib/getMinMax.ts b/frontend/src/lib/getMinMax.ts index ae830cc06a..a597314799 100644 --- a/frontend/src/lib/getMinMax.ts +++ b/frontend/src/lib/getMinMax.ts @@ -30,11 +30,11 @@ const GetMinMax = ( minTime = minTimeAgo; } else if (interval === '1day') { // one day = 24*60(min) - const minTimeAgo = getMinAgo({ minutes: 26 * 60 }).getTime(); + const minTimeAgo = getMinAgo({ minutes: 24 * 60 }).getTime(); minTime = minTimeAgo; } else if (interval === '1week') { // one week = one day * 7 - const minTimeAgo = getMinAgo({ minutes: 26 * 60 * 7 }).getTime(); + const minTimeAgo = getMinAgo({ minutes: 24 * 60 * 7 }).getTime(); minTime = minTimeAgo; } else if (['4hr', '6hr'].includes(interval)) { const h = parseInt(interval.replace('hr', ''), 10); diff --git a/pkg/query-service/rules/manager.go b/pkg/query-service/rules/manager.go index bf1e70b956..93ae662c99 100644 --- a/pkg/query-service/rules/manager.go +++ b/pkg/query-service/rules/manager.go @@ -241,6 +241,8 @@ func (m *Manager) EditRule(ruleStr string, id string) error { func (m *Manager) editTask(rule *PostableRule, taskName string) error { m.mtx.Lock() defer m.mtx.Unlock() + + zap.S().Debugf("msg:", "editing a rule task", "\t task name:", taskName) newTask, err := m.prepareTask(false, rule, taskName) @@ -298,12 +300,14 @@ func (m *Manager) DeleteRule(id string) error { func (m *Manager) deleteTask(taskName string) { m.mtx.Lock() defer m.mtx.Unlock() + zap.S().Debugf("msg:", "deleting a rule task", "\t task name:", taskName) oldg, ok := m.tasks[taskName] if ok { oldg.Stop() delete(m.tasks, taskName) delete(m.rules, ruleIdFromTaskName(taskName)) + zap.S().Debugf("msg:", "rule task deleted", "\t task name:", taskName) } else { zap.S().Info("msg: ", "rule not found for deletion", "\t name:", taskName) } @@ -337,6 +341,7 @@ func (m *Manager) addTask(rule *PostableRule, taskName string) error { m.mtx.Lock() defer m.mtx.Unlock() + zap.S().Debugf("msg:", "adding a new rule task", "\t task name:", taskName) newTask, err := m.prepareTask(false, rule, taskName) if err != nil { @@ -605,6 +610,10 @@ func (m *Manager) syncRuleStateWithTask(taskName string, rule *PostableRule) err if err := m.addTask(rule, taskName); err != nil { return err } + } else { + if err := m.editTask(rule, taskName); err != nil { + return err + } } } return nil