Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 37 additions & 21 deletions deployments/grafana/dashboards/push.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 2,
"id": 9,
"id": 0,
"links": [],
"panels": [
{
Expand Down Expand Up @@ -82,15 +82,15 @@
"textMode": "auto",
"wideLayout": true
},
"pluginVersion": "12.2.0-16711121739",
"pluginVersion": "12.2.0",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "edqp0a73uh2bka"
},
"editorMode": "code",
"expr": "1 - (sum(rate(sms_push_retries_total{outcome='max_attempts'}[$__rate_interval])) / (sum(rate(sms_push_enqueued_total[$__rate_interval])) OR vector(0)))",
"expr": "1 - (sum(rate(sms_push_retries_total[$__rate_interval])) / (sum(rate(sms_push_enqueued_total[$__rate_interval])) OR vector(0)))",
"range": true,
"refId": "A",
"unit": "percentunit"
Expand Down Expand Up @@ -133,6 +133,7 @@
"type": "linear"
},
"showPoints": "auto",
"showValues": false,
"spanNulls": false,
"stacking": {
"group": "A",
Expand Down Expand Up @@ -180,15 +181,17 @@
"sort": "none"
}
},
"pluginVersion": "12.2.0-16711121739",
"pluginVersion": "12.2.0",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "edqp0a73uh2bka"
},
"expr": "rate(sms_push_enqueued_total{event=~\"$event_type\"}[$__rate_interval])",
"editorMode": "code",
"expr": "sum by (event) (rate(sms_push_enqueued_total{event=~\"$event_type\"}[$__rate_interval]))",
"legendFormat": "{{event}}",
"range": true,
"refId": "A"
}
],
Expand Down Expand Up @@ -229,6 +232,7 @@
"type": "linear"
},
"showPoints": "auto",
"showValues": false,
"spanNulls": false,
"stacking": {
"group": "A",
Expand Down Expand Up @@ -276,15 +280,18 @@
"sort": "none"
}
},
"pluginVersion": "12.2.0-16711121739",
"pluginVersion": "12.2.0",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "edqp0a73uh2bka"
},
"editorMode": "code",
"expr": "sum(rate(sms_push_blacklist_total{operation=~\"added|skipped\"}[$__rate_interval])) by (operation)",
"legend": "{{operation}}",
"legendFormat": "__auto",
"range": true,
"refId": "A"
}
],
Expand Down Expand Up @@ -322,9 +329,12 @@
"id": 3,
"options": {
"legend": {
"displayMode": "list",
"displayMode": "table",
"placement": "bottom",
"showLegend": true
"showLegend": true,
"values": [
"percent"
]
},
"pieType": "pie",
"reduceOptions": {
Expand All @@ -334,21 +344,25 @@
"fields": "",
"values": false
},
"sort": "desc",
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.2.0-16711121739",
"pluginVersion": "12.2.0",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "edqp0a73uh2bka"
},
"editorMode": "code",
"exemplar": false,
"expr": "sum by (event) (sms_push_enqueued_total)",
"instant": false,
"legendFormat": "__auto",
"range": true,
"refId": "A"
}
Expand Down Expand Up @@ -390,6 +404,7 @@
"type": "linear"
},
"showPoints": "auto",
"showValues": false,
"spanNulls": false,
"stacking": {
"group": "A",
Expand Down Expand Up @@ -429,23 +444,25 @@
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
"showLegend": false
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.2.0-16711121739",
"pluginVersion": "12.2.0",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "edqp0a73uh2bka"
},
"expr": "rate(sms_push_retries_total[$__rate_interval])",
"editorMode": "code",
"expr": "sum(rate(sms_push_retries_total[$__rate_interval]))",
"legendFormat": "{{outcome}}",
"range": true,
"refId": "A"
}
],
Expand Down Expand Up @@ -486,6 +503,7 @@
"type": "linear"
},
"showPoints": "auto",
"showValues": false,
"spanNulls": false,
"stacking": {
"group": "A",
Expand Down Expand Up @@ -525,23 +543,23 @@
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
"showLegend": false
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.2.0-16711121739",
"pluginVersion": "12.2.0",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "edqp0a73uh2bka"
},
"editorMode": "code",
"expr": "rate(sms_push_errors_total[$__rate_interval])",
"expr": "sum(rate(sms_push_errors_total[$__rate_interval]))",
"legendFormat": "{{error}}",
"range": true,
"refId": "A"
Expand All @@ -553,7 +571,7 @@
],
"preload": false,
"refresh": "auto",
"schemaVersion": 41,
"schemaVersion": 42,
"tags": [
"sms",
"push"
Expand All @@ -563,9 +581,7 @@
{
"current": {
"text": "All",
"value": [
"$__all"
]
"value": "$__all"
},
"datasource": {
"type": "prometheus",
Expand All @@ -582,7 +598,7 @@
"query": "label_values(sms_push_enqueued_total, event)",
"refId": "PrometheusVariableQueryEditor-VariableQuery"
},
"refresh": 1,
"refresh": 2,
"regex": "",
"type": "query"
}
Expand All @@ -596,5 +612,5 @@
"timezone": "",
"title": "SMS Push Throughput",
"uid": "17c2b3f3-e85b-4aaf-bba4-8aaa85b46569",
"version": 16
"version": 22
}
18 changes: 9 additions & 9 deletions internal/sms-gateway/modules/push/fcm/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,25 +52,25 @@ func (c *Client) Open(ctx context.Context) error {
return nil
}

func (c *Client) Send(ctx context.Context, messages map[string]types.Event) (map[string]error, error) {
errs := make(map[string]error, len(messages))
for address, payload := range messages {
eventMap, err := eventToMap(payload)
func (c *Client) Send(ctx context.Context, messages []types.Message) ([]error, error) {
errs := make([]error, len(messages))

for i, message := range messages {
data, err := eventToMap(message.Event)
if err != nil {
errs[address] = fmt.Errorf("can't marshal event: %w", err)
errs[i] = fmt.Errorf("can't marshal event: %w", err)
continue
}

_, err = c.client.Send(ctx, &messaging.Message{
Data: eventMap,
Data: data,
Android: &messaging.AndroidConfig{
Priority: "high",
},
Token: address,
Token: message.Token,
})

if err != nil {
errs[address] = fmt.Errorf("can't send message to %s: %w", address, err)
errs[i] = fmt.Errorf("can't send message: %w", err)
}
}

Expand Down
17 changes: 5 additions & 12 deletions internal/sms-gateway/modules/push/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,6 @@ import (
"github.com/prometheus/client_golang/prometheus/promauto"
)

type RetryOutcome string

const (
RetryOutcomeRetried RetryOutcome = "retried"
RetryOutcomeMaxAttempts RetryOutcome = "max_attempts"
)

type BlacklistOperation string

const (
Expand All @@ -21,7 +14,7 @@ const (

type metrics struct {
enqueuedCounter *prometheus.CounterVec
retriesCounter *prometheus.CounterVec
retriesCounter prometheus.Counter
blacklistCounter *prometheus.CounterVec
errorsCounter *prometheus.CounterVec
}
Expand All @@ -35,12 +28,12 @@ func newMetrics() *metrics {
Help: "Total number of messages enqueued",
}, []string{"event"}),

retriesCounter: promauto.NewCounterVec(prometheus.CounterOpts{
retriesCounter: promauto.NewCounter(prometheus.CounterOpts{
Namespace: "sms",
Subsystem: "push",
Name: "retries_total",
Help: "Total retry attempts",
}, []string{"outcome"}),
}),

blacklistCounter: promauto.NewCounterVec(prometheus.CounterOpts{
Namespace: "sms",
Expand All @@ -62,8 +55,8 @@ func (m *metrics) IncEnqueued(event string) {
m.enqueuedCounter.WithLabelValues(event).Inc()
}

func (m *metrics) IncRetry(outcome RetryOutcome) {
m.retriesCounter.WithLabelValues(string(outcome)).Inc()
func (m *metrics) IncRetry() {
m.retriesCounter.Inc()
}

func (m *metrics) IncBlacklist(operation BlacklistOperation) {
Expand Down
Loading
Loading