@@ -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] ```
0 commit comments