ginskill-init 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/.wrangler/cache/pages.json +4 -0
  2. package/.wrangler/cache/wrangler-account.json +6 -0
  3. package/DEVELOPMENT.md +510 -0
  4. package/README.md +104 -0
  5. package/agents/developer.md +56 -0
  6. package/agents/frontend-design.md +69 -0
  7. package/agents/mobile-reviewer.md +36 -0
  8. package/agents/review-code.md +49 -0
  9. package/agents/security-scanner.md +50 -0
  10. package/agents/tester.md +72 -0
  11. package/bin/cli.js +461 -0
  12. package/landing/ai-build-ai.png +0 -0
  13. package/landing/index.html +1495 -0
  14. package/landing/logo.png +0 -0
  15. package/package.json +37 -0
  16. package/skills/active-life-dev/SKILL.md +157 -0
  17. package/skills/active-life-dev/docs/auth.md +187 -0
  18. package/skills/active-life-dev/docs/customers.md +216 -0
  19. package/skills/active-life-dev/docs/integrations.md +209 -0
  20. package/skills/active-life-dev/docs/inventory.md +192 -0
  21. package/skills/active-life-dev/docs/modules.md +181 -0
  22. package/skills/active-life-dev/docs/orders.md +180 -0
  23. package/skills/active-life-dev/docs/patterns.md +319 -0
  24. package/skills/active-life-dev/docs/products.md +216 -0
  25. package/skills/active-life-dev/docs/schema.md +502 -0
  26. package/skills/active-life-dev/docs/setup.md +169 -0
  27. package/skills/active-life-dev/docs/vouchers.md +144 -0
  28. package/skills/ai-asset-generator/SKILL.md +247 -0
  29. package/skills/ai-asset-generator/docs/gen-image.md +274 -0
  30. package/skills/ai-asset-generator/docs/genvideo.md +341 -0
  31. package/skills/ai-asset-generator/docs/remove-background.md +19 -0
  32. package/skills/ai-asset-generator/lib/bg-remove.mjs +34 -0
  33. package/skills/ai-asset-generator/lib/env.mjs +48 -0
  34. package/skills/ai-asset-generator/lib/kie-client.mjs +100 -0
  35. package/skills/ai-build-ai/SKILL.md +127 -0
  36. package/skills/ai-build-ai/docs/agent-teams.md +293 -0
  37. package/skills/ai-build-ai/docs/checkpointing.md +161 -0
  38. package/skills/ai-build-ai/docs/create-agent.md +399 -0
  39. package/skills/ai-build-ai/docs/create-mcp.md +395 -0
  40. package/skills/ai-build-ai/docs/create-skill.md +299 -0
  41. package/skills/ai-build-ai/docs/headless-mode.md +614 -0
  42. package/skills/ai-build-ai/docs/hooks.md +578 -0
  43. package/skills/ai-build-ai/docs/memory-claude-md.md +375 -0
  44. package/skills/ai-build-ai/docs/output-styles.md +208 -0
  45. package/skills/ai-build-ai/docs/overview.md +162 -0
  46. package/skills/ai-build-ai/docs/permissions.md +391 -0
  47. package/skills/ai-build-ai/docs/plugins.md +396 -0
  48. package/skills/ai-build-ai/docs/sandbox.md +262 -0
  49. package/skills/ai-build-ai/docs/team-lead-workflow.md +648 -0
  50. package/skills/ant-design/SKILL.md +323 -0
  51. package/skills/ant-design/docs/components.md +160 -0
  52. package/skills/ant-design/docs/data-entry.md +406 -0
  53. package/skills/ant-design/docs/display.md +594 -0
  54. package/skills/ant-design/docs/feedback.md +451 -0
  55. package/skills/ant-design/docs/key-components.md +414 -0
  56. package/skills/ant-design/docs/navigation.md +310 -0
  57. package/skills/ant-design/docs/pro-components.md +543 -0
  58. package/skills/ant-design/docs/setup.md +213 -0
  59. package/skills/ant-design/docs/theme.md +265 -0
  60. package/skills/flutter-performance/SKILL.md +803 -0
  61. package/skills/flutter-performance/references/flutter-patterns.md +595 -0
  62. package/skills/icon-generator/SKILL.md +270 -0
  63. package/skills/mobile-app-review/SKILL.md +321 -0
  64. package/skills/mobile-app-review/references/apple-review.md +132 -0
  65. package/skills/mobile-app-review/references/google-play-review.md +203 -0
  66. package/skills/mongodb/SKILL.md +667 -0
  67. package/skills/mongodb/references/mongoose-patterns.md +368 -0
  68. package/skills/nestjs-architecture/SKILL.md +1086 -0
  69. package/skills/nestjs-architecture/references/advanced-patterns.md +590 -0
  70. package/skills/performance/SKILL.md +509 -0
  71. package/skills/react-fsd-architecture/SKILL.md +693 -0
  72. package/skills/react-fsd-architecture/references/fsd-patterns.md +747 -0
  73. package/skills/react-native-expo/SKILL.md +128 -0
  74. package/skills/react-native-expo/references/data-layer.md +252 -0
  75. package/skills/react-native-expo/references/design-system.md +252 -0
  76. package/skills/react-native-expo/references/navigation.md +199 -0
  77. package/skills/react-native-expo/references/performance.md +229 -0
  78. package/skills/react-native-expo/references/platform-services.md +179 -0
  79. package/skills/react-native-expo/references/state-management.md +209 -0
  80. package/skills/react-native-expo/references/ui-patterns.md +301 -0
  81. package/skills/react-query/SKILL.md +685 -0
  82. package/skills/react-query/references/query-patterns.md +365 -0
  83. package/skills/review-code/SKILL.md +374 -0
  84. package/skills/review-code/references/clean-code-principles.md +395 -0
  85. package/skills/review-code/references/frontend-patterns.md +136 -0
  86. package/skills/review-code/references/nestjs-patterns.md +184 -0
  87. package/skills/security-scanner/SKILL.md +366 -0
  88. package/skills/security-scanner/references/nestjs-security.md +260 -0
  89. package/skills/security-scanner/references/nextjs-security.md +201 -0
  90. package/skills/security-scanner/references/react-native-security.md +199 -0
  91. package/skills/traefik/SKILL.md +105 -0
  92. package/skills/traefik/docs/advanced-routing.md +186 -0
  93. package/skills/traefik/docs/auth-providers.md +137 -0
  94. package/skills/traefik/docs/cicd-devops.md +396 -0
  95. package/skills/traefik/docs/core-config.md +171 -0
  96. package/skills/traefik/docs/distributed-config.md +96 -0
  97. package/skills/traefik/docs/docker-compose.md +182 -0
  98. package/skills/traefik/docs/ha-performance.md +177 -0
  99. package/skills/traefik/docs/kubernetes.md +278 -0
  100. package/skills/traefik/docs/middleware.md +205 -0
  101. package/skills/traefik/docs/monitoring.md +357 -0
  102. package/skills/traefik/docs/security.md +391 -0
  103. package/skills/traefik/docs/tls-acme.md +155 -0
  104. package/skills/ui-ux-pro-max/SKILL.md +377 -0
  105. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  106. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  107. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  108. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  109. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  110. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  111. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  112. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  113. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  114. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  115. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  116. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  117. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  118. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  119. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  120. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  121. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  122. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  123. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  124. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  125. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  126. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  127. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  128. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
@@ -0,0 +1,205 @@
1
+ # Traefik Middleware Reference
2
+
3
+ Middleware sits between routers and services. Applied in order listed on the router.
4
+
5
+ ## HTTP Middlewares
6
+
7
+ ### Headers
8
+ ```yaml
9
+ http:
10
+ middlewares:
11
+ security-headers:
12
+ headers:
13
+ browserXssFilter: true
14
+ contentTypeNosniff: true
15
+ frameDeny: true
16
+ stsIncludeSubdomains: true
17
+ stsPreload: true
18
+ stsSeconds: 31536000
19
+ customFrameOptionsValue: "SAMEORIGIN"
20
+ referrerPolicy: "strict-origin-when-cross-origin"
21
+ permissionsPolicy: "camera=(), microphone=(), geolocation=()"
22
+ contentSecurityPolicy: "default-src 'self'"
23
+ customResponseHeaders:
24
+ X-Robots-Tag: "noindex,nofollow"
25
+ server: "" # Remove server header
26
+ ```
27
+
28
+ ### RateLimit
29
+ ```yaml
30
+ rate-limit:
31
+ rateLimit:
32
+ average: 100 # Requests per period
33
+ burst: 50 # Max bucket size
34
+ period: 1s # Time window
35
+ sourceCriterion:
36
+ ipStrategy:
37
+ depth: 1 # Extract IP from X-Forwarded-For (depth from right)
38
+ # OR: requestHeaderName: "X-API-Key"
39
+ # OR: requestHost: true
40
+ ```
41
+
42
+ ### CircuitBreaker
43
+ ```yaml
44
+ circuit-breaker:
45
+ circuitBreaker:
46
+ expression: "LatencyAtQuantileMS(50.0) > 100 || NetworkErrorRatio() > 0.30 || ResponseCodeRatio(500, 600, 0, 600) > 0.25"
47
+ checkPeriod: 10s
48
+ fallbackDuration: 30s
49
+ recoveryDuration: 60s
50
+ ```
51
+
52
+ ### Retry
53
+ ```yaml
54
+ retry:
55
+ retry:
56
+ attempts: 3
57
+ initialInterval: 100ms
58
+ ```
59
+
60
+ ### Compress
61
+ ```yaml
62
+ compress:
63
+ compress:
64
+ excludedContentTypes:
65
+ - text/event-stream
66
+ minResponseBodyBytes: 1024
67
+ ```
68
+
69
+ ### BasicAuth
70
+ ```yaml
71
+ basic-auth:
72
+ basicAuth:
73
+ users:
74
+ - "admin:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/" # htpasswd -nB admin
75
+ # OR: usersFile: /etc/traefik/.htpasswd
76
+ removeHeader: true # Don't forward auth header to backend
77
+ ```
78
+
79
+ ### ForwardAuth
80
+ ```yaml
81
+ forward-auth:
82
+ forwardAuth:
83
+ address: "http://auth-service:9091/api/authz/forward-auth"
84
+ trustForwardHeader: true
85
+ authResponseHeaders:
86
+ - Remote-User
87
+ - Remote-Groups
88
+ - Remote-Email
89
+ ```
90
+
91
+ ### RedirectScheme
92
+ ```yaml
93
+ redirect-https:
94
+ redirectScheme:
95
+ scheme: https
96
+ permanent: true
97
+ ```
98
+
99
+ ### RedirectRegex
100
+ ```yaml
101
+ redirect-www:
102
+ redirectRegex:
103
+ regex: "^https://www\\.(.+)"
104
+ replacement: "https://${1}"
105
+ permanent: true
106
+ ```
107
+
108
+ ### StripPrefix
109
+ ```yaml
110
+ strip-api:
111
+ stripPrefix:
112
+ prefixes:
113
+ - /api
114
+ forceSlash: false
115
+ ```
116
+
117
+ ### AddPrefix
118
+ ```yaml
119
+ add-prefix:
120
+ addPrefix:
121
+ prefix: /v2
122
+ ```
123
+
124
+ ### IPAllowList
125
+ ```yaml
126
+ ip-allowlist:
127
+ ipAllowList:
128
+ sourceRange:
129
+ - "10.0.0.0/8"
130
+ - "192.168.1.0/24"
131
+ ipStrategy:
132
+ depth: 1
133
+ ```
134
+
135
+ ### Chain (combine middlewares)
136
+ ```yaml
137
+ secured:
138
+ chain:
139
+ middlewares:
140
+ - security-headers
141
+ - rate-limit
142
+ - compress
143
+ - forward-auth
144
+ ```
145
+
146
+ ### InFlightReq
147
+ ```yaml
148
+ inflight:
149
+ inFlightReq:
150
+ amount: 100
151
+ sourceCriterion:
152
+ ipStrategy:
153
+ depth: 1
154
+ ```
155
+
156
+ ### Buffering
157
+ ```yaml
158
+ buffering:
159
+ buffering:
160
+ maxRequestBodyBytes: 10485760 # 10MB
161
+ maxResponseBodyBytes: 10485760
162
+ retryExpression: "IsNetworkError() && Attempts() < 2"
163
+ ```
164
+
165
+ ### GrpcWeb
166
+ ```yaml
167
+ grpc-web:
168
+ grpcWeb:
169
+ allowOrigins:
170
+ - "https://app.example.com"
171
+ ```
172
+
173
+ ## Docker Label Syntax
174
+
175
+ ```yaml
176
+ labels:
177
+ - "traefik.http.middlewares.my-ratelimit.ratelimit.average=100"
178
+ - "traefik.http.middlewares.my-ratelimit.ratelimit.burst=50"
179
+ - "traefik.http.routers.myapp.middlewares=my-ratelimit,security-headers@file"
180
+ ```
181
+
182
+ ## Kubernetes CRD Syntax
183
+
184
+ ```yaml
185
+ apiVersion: traefik.io/v1alpha1
186
+ kind: Middleware
187
+ metadata:
188
+ name: rate-limit
189
+ spec:
190
+ rateLimit:
191
+ average: 100
192
+ burst: 50
193
+ ```
194
+
195
+ ## Middleware Order
196
+
197
+ Middleware executes in the order listed on the router. Recommended order:
198
+ 1. IPAllowList / IPWhiteList
199
+ 2. RateLimit / InFlightReq
200
+ 3. ForwardAuth / BasicAuth
201
+ 4. Headers (security)
202
+ 5. StripPrefix / AddPrefix
203
+ 6. Compress
204
+ 7. CircuitBreaker
205
+ 8. Retry
@@ -0,0 +1,357 @@
1
+ # Traefik Monitoring, Metrics & Observability
2
+
3
+ ## Prometheus Metrics
4
+
5
+ ### Static Config
6
+ ```yaml
7
+ entryPoints:
8
+ metrics:
9
+ address: ":8082"
10
+
11
+ metrics:
12
+ prometheus:
13
+ entryPoint: metrics
14
+ addEntryPointsLabels: true
15
+ addServicesLabels: true
16
+ addRoutersLabels: true # Caution: high cardinality
17
+ buckets: [0.1, 0.3, 1.2, 5.0]
18
+ ```
19
+
20
+ ### Key Metrics
21
+
22
+ | Metric | Description |
23
+ |--------|-------------|
24
+ | `traefik_entrypoint_requests_total` | Total requests by entrypoint, method, protocol, code |
25
+ | `traefik_entrypoint_open_connections` | Current open connections |
26
+ | `traefik_service_requests_total` | Requests per service |
27
+ | `traefik_service_request_duration_seconds` | Latency histogram per service |
28
+ | `traefik_service_open_connections` | Open connections per service |
29
+ | `traefik_tls_certs_not_after` | Certificate expiry timestamp |
30
+ | `traefik_config_reloads_total` | Config reload count |
31
+ | `traefik_config_last_reload_success` | Last reload success (0/1) |
32
+
33
+ ### Prometheus Scrape Config
34
+ ```yaml
35
+ scrape_configs:
36
+ - job_name: traefik
37
+ scrape_interval: 15s
38
+ static_configs:
39
+ - targets: ["traefik:8082"]
40
+ # OR in Kubernetes:
41
+ kubernetes_sd_configs:
42
+ - role: pod
43
+ relabel_configs:
44
+ - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
45
+ action: keep
46
+ regex: true
47
+ ```
48
+
49
+ ## OpenTelemetry Tracing
50
+
51
+ ```yaml
52
+ tracing:
53
+ otlp:
54
+ http:
55
+ endpoint: http://otel-collector:4318/v1/traces
56
+ # OR grpc:
57
+ # endpoint: otel-collector:4317
58
+ ```
59
+
60
+ With sampling:
61
+ ```yaml
62
+ tracing:
63
+ sampleRate: 0.1 # Sample 10% of traces
64
+ otlp:
65
+ http:
66
+ endpoint: http://otel-collector:4318/v1/traces
67
+ headers:
68
+ Authorization: "Bearer token"
69
+ ```
70
+
71
+ ## Access Logs
72
+
73
+ ```yaml
74
+ accessLog:
75
+ filePath: /var/log/traefik/access.log
76
+ format: json
77
+ bufferingSize: 100 # Buffer N lines before writing
78
+ filters:
79
+ statusCodes: ["400-499", "500-599"]
80
+ retryAttempts: true
81
+ minDuration: 100ms
82
+ fields:
83
+ defaultMode: keep
84
+ names:
85
+ ClientUsername: drop
86
+ headers:
87
+ defaultMode: drop
88
+ names:
89
+ User-Agent: keep
90
+ Authorization: drop
91
+ Content-Type: keep
92
+ ```
93
+
94
+ ### OTLP Log Export (experimental, v3.3+)
95
+ ```yaml
96
+ accessLog:
97
+ otlp:
98
+ http:
99
+ endpoint: http://otel-collector:4318/v1/logs
100
+ ```
101
+
102
+ ## Application Logs
103
+
104
+ ```yaml
105
+ log:
106
+ level: WARN # DEBUG, INFO, WARN, ERROR
107
+ filePath: /var/log/traefik/traefik.log
108
+ format: json # common or json
109
+ noColor: true
110
+ ```
111
+
112
+ ## Grafana Dashboard
113
+
114
+ Docker Compose with full monitoring stack:
115
+
116
+ ```yaml
117
+ services:
118
+ prometheus:
119
+ image: prom/prometheus:latest
120
+ volumes:
121
+ - ./prometheus.yml:/etc/prometheus/prometheus.yml
122
+ - prometheus-data:/prometheus
123
+ networks: [monitoring]
124
+
125
+ grafana:
126
+ image: grafana/grafana:latest
127
+ volumes:
128
+ - grafana-data:/var/lib/grafana
129
+ environment:
130
+ - GF_SECURITY_ADMIN_PASSWORD=secret
131
+ networks: [monitoring, proxy]
132
+ labels:
133
+ - "traefik.enable=true"
134
+ - "traefik.http.routers.grafana.rule=Host(`grafana.example.com`)"
135
+ - "traefik.http.services.grafana.loadbalancer.server.port=3000"
136
+
137
+ loki:
138
+ image: grafana/loki:latest
139
+ volumes:
140
+ - loki-data:/loki
141
+ networks: [monitoring]
142
+
143
+ promtail:
144
+ image: grafana/promtail:latest
145
+ volumes:
146
+ - /var/log/traefik:/var/log/traefik:ro
147
+ - ./promtail.yml:/etc/promtail/config.yml
148
+ networks: [monitoring]
149
+
150
+ volumes:
151
+ prometheus-data:
152
+ grafana-data:
153
+ loki-data:
154
+
155
+ networks:
156
+ monitoring:
157
+ internal: true
158
+ ```
159
+
160
+ ## Alerting Rules (Prometheus)
161
+
162
+ ```yaml
163
+ groups:
164
+ - name: traefik
165
+ rules:
166
+ - alert: TraefikHighErrorRate
167
+ expr: |
168
+ sum(rate(traefik_service_requests_total{code=~"5.."}[5m]))
169
+ / sum(rate(traefik_service_requests_total[5m])) > 0.05
170
+ for: 5m
171
+ labels:
172
+ severity: critical
173
+ annotations:
174
+ summary: "High 5xx error rate ({{ $value | humanizePercentage }})"
175
+
176
+ - alert: TraefikHighLatency
177
+ expr: |
178
+ histogram_quantile(0.95,
179
+ sum(rate(traefik_service_request_duration_seconds_bucket[5m])) by (le, service)
180
+ ) > 2
181
+ for: 5m
182
+ labels:
183
+ severity: warning
184
+ annotations:
185
+ summary: "P95 latency > 2s for {{ $labels.service }}"
186
+
187
+ - alert: TraefikDown
188
+ expr: up{job="traefik"} == 0
189
+ for: 1m
190
+ labels:
191
+ severity: critical
192
+
193
+ - alert: TraefikCertExpiringSoon
194
+ expr: (traefik_tls_certs_not_after - time()) / 86400 < 14
195
+ for: 1h
196
+ labels:
197
+ severity: warning
198
+ annotations:
199
+ summary: "TLS cert expires in {{ $value | humanize }} days"
200
+
201
+ - alert: TraefikHighOpenConnections
202
+ expr: traefik_entrypoint_open_connections > 1000
203
+ for: 5m
204
+ labels:
205
+ severity: warning
206
+
207
+ - alert: TraefikConfigReloadFailure
208
+ expr: traefik_config_last_reload_success == 0
209
+ for: 5m
210
+ labels:
211
+ severity: warning
212
+ ```
213
+
214
+ ## Health Check Endpoint
215
+
216
+ ```yaml
217
+ # traefik.yml
218
+ ping:
219
+ entryPoint: web
220
+ # OR separate entrypoint:
221
+ # entryPoint: ping
222
+ ```
223
+
224
+ Check: `curl http://traefik:80/ping` returns `OK` with 200 status.
225
+
226
+ Use for Kubernetes liveness/readiness probes:
227
+ ```yaml
228
+ livenessProbe:
229
+ httpGet:
230
+ path: /ping
231
+ port: 80
232
+ initialDelaySeconds: 10
233
+ periodSeconds: 10
234
+ readinessProbe:
235
+ httpGet:
236
+ path: /ping
237
+ port: 80
238
+ initialDelaySeconds: 5
239
+ periodSeconds: 5
240
+ ```
241
+
242
+ ## Datadog Integration
243
+
244
+ ```yaml
245
+ metrics:
246
+ datadog:
247
+ address: "datadog-agent:8125"
248
+ addEntryPointsLabels: true
249
+ addServicesLabels: true
250
+ prefix: traefik
251
+ ```
252
+
253
+ ## StatsD / InfluxDB
254
+
255
+ ```yaml
256
+ # StatsD
257
+ metrics:
258
+ statsD:
259
+ address: "statsd:8125"
260
+ addEntryPointsLabels: true
261
+ addServicesLabels: true
262
+
263
+ # InfluxDB v2
264
+ metrics:
265
+ influxDB2:
266
+ address: "http://influxdb:8086"
267
+ token: "your-token"
268
+ org: "your-org"
269
+ bucket: "traefik"
270
+ addEntryPointsLabels: true
271
+ addServicesLabels: true
272
+ pushInterval: 10s
273
+ ```
274
+
275
+ ## SLO/SLI Monitoring Patterns
276
+
277
+ Define Service Level Indicators and Objectives:
278
+
279
+ ```yaml
280
+ # Prometheus recording rules for SLIs
281
+ groups:
282
+ - name: traefik-sli
283
+ rules:
284
+ # Availability SLI: % of non-5xx responses
285
+ - record: traefik:availability:ratio_rate5m
286
+ expr: |
287
+ 1 - (
288
+ sum(rate(traefik_service_requests_total{code=~"5.."}[5m]))
289
+ / sum(rate(traefik_service_requests_total[5m]))
290
+ )
291
+
292
+ # Latency SLI: % of requests under 500ms
293
+ - record: traefik:latency_under_500ms:ratio_rate5m
294
+ expr: |
295
+ sum(rate(traefik_service_request_duration_seconds_bucket{le="0.5"}[5m]))
296
+ / sum(rate(traefik_service_request_duration_seconds_count[5m]))
297
+
298
+ - name: traefik-slo
299
+ rules:
300
+ # SLO burn rate alerts (multi-window)
301
+ - alert: TraefikAvailabilitySLOBreach
302
+ expr: traefik:availability:ratio_rate5m < 0.999
303
+ for: 10m
304
+ labels:
305
+ severity: critical
306
+ annotations:
307
+ summary: "Availability SLO breach: {{ $value | humanizePercentage }} (target 99.9%)"
308
+
309
+ - alert: TraefikLatencySLOBreach
310
+ expr: traefik:latency_under_500ms:ratio_rate5m < 0.95
311
+ for: 10m
312
+ labels:
313
+ severity: warning
314
+ annotations:
315
+ summary: "Latency SLO breach: {{ $value | humanizePercentage }} under 500ms (target 95%)"
316
+ ```
317
+
318
+ ## OpenTelemetry Collector Config
319
+
320
+ ```yaml
321
+ # otel-collector-config.yaml
322
+ receivers:
323
+ otlp:
324
+ protocols:
325
+ http:
326
+ endpoint: 0.0.0.0:4318
327
+ grpc:
328
+ endpoint: 0.0.0.0:4317
329
+
330
+ processors:
331
+ batch:
332
+ timeout: 5s
333
+ send_batch_size: 1024
334
+
335
+ exporters:
336
+ prometheus:
337
+ endpoint: 0.0.0.0:8889
338
+ otlp/jaeger:
339
+ endpoint: jaeger:4317
340
+ tls:
341
+ insecure: true
342
+
343
+ service:
344
+ pipelines:
345
+ traces:
346
+ receivers: [otlp]
347
+ processors: [batch]
348
+ exporters: [otlp/jaeger]
349
+ metrics:
350
+ receivers: [otlp]
351
+ processors: [batch]
352
+ exporters: [prometheus]
353
+ logs:
354
+ receivers: [otlp]
355
+ processors: [batch]
356
+ exporters: [otlp/jaeger]
357
+ ```