Skip to content

Commit 1a822bb

Browse files
committed
add http_status_codes example
1 parent 85c4626 commit 1a822bb

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed

couchdb/README.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,98 @@ results AS (
126126
![Example couch read/writes per min](/couchdb/pics/couch-read-write.png)
127127

128128

129+
### Http status codes per minute
130+
131+
```
132+
WITH httpd_status_codes AS (
133+
SELECT (doc->>'ts')::numeric * 1000 AS time,
134+
135+
((doc->'httpd_status_codes'->'200'->>'current')::numeric - lag((doc->'httpd_status_codes'->'200'->>'current')::numeric, 1) OVER w )
136+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_200_per_sec,
137+
((doc->'httpd_status_codes'->'201'->>'current')::numeric - lag((doc->'httpd_status_codes'->'201'->>'current')::numeric, 1) OVER w )
138+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_201_per_sec,
139+
((doc->'httpd_status_codes'->'202'->>'current')::numeric - lag((doc->'httpd_status_codes'->'202'->>'current')::numeric, 1) OVER w )
140+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_202_per_sec,
141+
142+
((doc->'httpd_status_codes'->'301'->>'current')::numeric - lag((doc->'httpd_status_codes'->'301'->>'current')::numeric, 1) OVER w )
143+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_301_per_sec,
144+
((doc->'httpd_status_codes'->'304'->>'current')::numeric - lag((doc->'httpd_status_codes'->'304'->>'current')::numeric, 1) OVER w )
145+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_304_per_sec,
146+
147+
((doc->'httpd_status_codes'->'400'->>'current')::numeric - lag((doc->'httpd_status_codes'->'400'->>'current')::numeric, 1) OVER w )
148+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_400_per_sec,
149+
((doc->'httpd_status_codes'->'401'->>'current')::numeric - lag((doc->'httpd_status_codes'->'401'->>'current')::numeric, 1) OVER w )
150+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_401_per_sec,
151+
((doc->'httpd_status_codes'->'403'->>'current')::numeric - lag((doc->'httpd_status_codes'->'403'->>'current')::numeric, 1) OVER w )
152+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_403_per_sec,
153+
((doc->'httpd_status_codes'->'404'->>'current')::numeric - lag((doc->'httpd_status_codes'->'404'->>'current')::numeric, 1) OVER w )
154+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_404_per_sec,
155+
((doc->'httpd_status_codes'->'409'->>'current')::numeric - lag((doc->'httpd_status_codes'->'409'->>'current')::numeric, 1) OVER w )
156+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_409_per_sec,
157+
((doc->'httpd_status_codes'->'412'->>'current')::numeric - lag((doc->'httpd_status_codes'->'412'->>'current')::numeric, 1) OVER w )
158+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_412_per_sec,
159+
160+
((doc->'httpd_status_codes'->'500'->>'current')::numeric - lag((doc->'httpd_status_codes'->'500'->>'current')::numeric, 1) OVER w )
161+
/ ((doc->>'ts')::numeric - lag((doc->>'ts')::numeric, 1) OVER w)::numeric AS code_500_per_sec
162+
163+
FROM abtest
164+
WHERE doc->>'name'='mw-staging.couchdb'
165+
AND ( to_timestamp((doc->>'ts')::numeric) > now() - interval '12h')
166+
WINDOW w AS (ORDER BY (doc->>'ts')::numeric)
167+
ORDER BY time
168+
),
169+
results AS (
170+
SELECT '{ "results": [' AS v
171+
UNION ALL
172+
173+
SELECT '{ "series": [{ "name": "200", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_200_per_sec,2)*60)) || ' }] }'
174+
AS v FROM httpd_status_codes
175+
UNION ALL
176+
SELECT ',{ "series": [{ "name": "201", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_201_per_sec,2)*60)) || ' }] }'
177+
AS v FROM httpd_status_codes
178+
UNION ALL
179+
SELECT ',{ "series": [{ "name": "202", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_202_per_sec,2)*60)) || ' }] }'
180+
AS v FROM httpd_status_codes
181+
UNION ALL
182+
183+
SELECT ',{ "series": [{ "name": "301", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_301_per_sec,2)*60)) || ' }] }'
184+
AS v FROM httpd_status_codes
185+
UNION ALL
186+
SELECT ',{ "series": [{ "name": "304", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_304_per_sec,2)*60)) || ' }] }'
187+
AS v FROM httpd_status_codes
188+
UNION ALL
189+
190+
SELECT ',{ "series": [{ "name": "400", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_400_per_sec,2)*60)) || ' }] }'
191+
AS v FROM httpd_status_codes
192+
UNION ALL
193+
SELECT ',{ "series": [{ "name": "401", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_401_per_sec,2)*60)) || ' }] }'
194+
AS v FROM httpd_status_codes
195+
UNION ALL
196+
SELECT ',{ "series": [{ "name": "403", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_403_per_sec,2)*60)) || ' }] }'
197+
AS v FROM httpd_status_codes
198+
UNION ALL
199+
SELECT ',{ "series": [{ "name": "404", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_404_per_sec,2)*60)) || ' }] }'
200+
AS v FROM httpd_status_codes
201+
UNION ALL
202+
SELECT ',{ "series": [{ "name": "409", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_409_per_sec,2)*60)) || ' }] }'
203+
AS v FROM httpd_status_codes
204+
UNION ALL
205+
SELECT ',{ "series": [{ "name": "412", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_412_per_sec,2)*60)) || ' }] }'
206+
AS v FROM httpd_status_codes
207+
UNION ALL
208+
209+
SELECT ',{ "series": [{ "name": "500", "columns": ["time", "value"], "values": ' || json_agg(json_build_array(time,ROUND(code_500_per_sec,2)*60)) || ' }] }'
210+
AS v FROM httpd_status_codes
211+
UNION ALL
212+
213+
SELECT ']}' AS v
214+
)
215+
SELECT string_agg(v,'') AS ret FROM results
216+
```
217+
218+
![Example couch read/writes per min](/couchdb/pics/couch-http-status-codes.png)
219+
220+
129221
##Metrics on databases
130222

131223
```couch_get_dbs_stats.sh couch_host metrics_host_and_db [metric-host-name]```
24.3 KB
Loading

0 commit comments

Comments
 (0)