Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(643)

Side by Side Diff: client/third_party/infra_libs/ts_mon/common/http_metrics.py

Issue 2991803002: Update infra_libs to 1.1.15 / 0b44aba87c1c6538439df6d24a409870810747ab (Closed)
Patch Set: fix Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from infra_libs.ts_mon.common import distribution
5 from infra_libs.ts_mon.common import metrics 6 from infra_libs.ts_mon.common import metrics
6 7
7 8
8 # Extending HTTP status codes to client-side errors and timeouts. 9 # Extending HTTP status codes to client-side errors and timeouts.
9 STATUS_OK = 200 10 STATUS_OK = 200
10 STATUS_ERROR = 901 11 STATUS_ERROR = 901
11 STATUS_TIMEOUT = 902 12 STATUS_TIMEOUT = 902
12 STATUS_EXCEPTION = 909 13 STATUS_EXCEPTION = 909
13 14
15
16 # 90% of durations are in the range 11-1873ms. Growth factor 10^0.06 puts that
17 # range into 37 buckets. Max finite bucket value is 12 minutes.
18 _duration_bucketer = distribution.GeometricBucketer(10**0.06)
19
20 # 90% of sizes are in the range 0.17-217014 bytes. Growth factor 10^0.1 puts
21 # that range into 54 buckets. Max finite bucket value is 6.3GB.
22 _size_bucketer = distribution.GeometricBucketer(10**0.1)
23
24
14 request_bytes = metrics.CumulativeDistributionMetric('http/request_bytes', 25 request_bytes = metrics.CumulativeDistributionMetric('http/request_bytes',
15 'Bytes sent per http request (body only).', [ 26 'Bytes sent per http request (body only).', [
16 metrics.StringField('name'), 27 metrics.StringField('name'),
17 metrics.StringField('client'), 28 metrics.StringField('client'),
18 ]) 29 ],
30 bucketer=_size_bucketer)
19 response_bytes = metrics.CumulativeDistributionMetric('http/response_bytes', 31 response_bytes = metrics.CumulativeDistributionMetric('http/response_bytes',
20 'Bytes received per http request (content only).', [ 32 'Bytes received per http request (content only).', [
21 metrics.StringField('name'), 33 metrics.StringField('name'),
22 metrics.StringField('client'), 34 metrics.StringField('client'),
23 ]) 35 ],
36 bucketer=_size_bucketer)
24 durations = metrics.CumulativeDistributionMetric('http/durations', 37 durations = metrics.CumulativeDistributionMetric('http/durations',
25 'Time elapsed between sending a request and getting a' 38 'Time elapsed between sending a request and getting a'
26 ' response (including parsing) in milliseconds.', [ 39 ' response (including parsing) in milliseconds.', [
27 metrics.StringField('name'), 40 metrics.StringField('name'),
28 metrics.StringField('client'), 41 metrics.StringField('client'),
29 ]) 42 ],
43 bucketer=_duration_bucketer)
30 response_status = metrics.CounterMetric('http/response_status', 44 response_status = metrics.CounterMetric('http/response_status',
31 'Number of responses received by HTTP status code.', [ 45 'Number of responses received by HTTP status code.', [
32 metrics.IntegerField('status'), 46 metrics.IntegerField('status'),
33 metrics.StringField('name'), 47 metrics.StringField('name'),
34 metrics.StringField('client'), 48 metrics.StringField('client'),
35 ]) 49 ])
36 50
37 51
38 server_request_bytes = metrics.CumulativeDistributionMetric( 52 server_request_bytes = metrics.CumulativeDistributionMetric(
39 'http/server_request_bytes', 53 'http/server_request_bytes',
40 'Bytes received per http request (body only).', [ 54 'Bytes received per http request (body only).', [
41 metrics.IntegerField('status'), 55 metrics.IntegerField('status'),
42 metrics.StringField('name'), 56 metrics.StringField('name'),
43 metrics.BooleanField('is_robot'), 57 metrics.BooleanField('is_robot'),
44 ]) 58 ],
59 bucketer=_size_bucketer)
45 server_response_bytes = metrics.CumulativeDistributionMetric( 60 server_response_bytes = metrics.CumulativeDistributionMetric(
46 'http/server_response_bytes', 61 'http/server_response_bytes',
47 'Bytes sent per http request (content only).', [ 62 'Bytes sent per http request (content only).', [
48 metrics.IntegerField('status'), 63 metrics.IntegerField('status'),
49 metrics.StringField('name'), 64 metrics.StringField('name'),
50 metrics.BooleanField('is_robot'), 65 metrics.BooleanField('is_robot'),
51 ]) 66 ],
67 bucketer=_size_bucketer)
52 server_durations = metrics.CumulativeDistributionMetric('http/server_durations', 68 server_durations = metrics.CumulativeDistributionMetric('http/server_durations',
53 'Time elapsed between receiving a request and sending a' 69 'Time elapsed between receiving a request and sending a'
54 ' response (including parsing) in milliseconds.', [ 70 ' response (including parsing) in milliseconds.', [
55 metrics.IntegerField('status'), 71 metrics.IntegerField('status'),
56 metrics.StringField('name'), 72 metrics.StringField('name'),
57 metrics.BooleanField('is_robot'), 73 metrics.BooleanField('is_robot'),
58 ]) 74 ],
75 bucketer=_duration_bucketer)
59 server_response_status = metrics.CounterMetric('http/server_response_status', 76 server_response_status = metrics.CounterMetric('http/server_response_status',
60 'Number of responses sent by HTTP status code.', [ 77 'Number of responses sent by HTTP status code.', [
61 metrics.IntegerField('status'), 78 metrics.IntegerField('status'),
62 metrics.StringField('name'), 79 metrics.StringField('name'),
63 metrics.BooleanField('is_robot'), 80 metrics.BooleanField('is_robot'),
64 ]) 81 ])
65 82
66 83
67 def update_http_server_metrics(endpoint_name, response_status_code, elapsed_ms, 84 def update_http_server_metrics(endpoint_name, response_status_code, elapsed_ms,
68 request_size=None, response_size=None, 85 request_size=None, response_size=None,
69 user_agent=None): 86 user_agent=None):
70 fields = {'status': response_status_code, 'name': endpoint_name, 87 fields = {'status': response_status_code, 'name': endpoint_name,
71 'is_robot': False} 88 'is_robot': False}
72 if user_agent is not None: 89 if user_agent is not None:
73 # We must not log user agents, but we can store whether or not the 90 # We must not log user agents, but we can store whether or not the
74 # user agent string indicates that the requester was a Google bot. 91 # user agent string indicates that the requester was a Google bot.
75 fields['is_robot'] = ( 92 fields['is_robot'] = (
76 'GoogleBot' in user_agent or 93 'GoogleBot' in user_agent or
77 'GoogleSecurityScanner' in user_agent or 94 'GoogleSecurityScanner' in user_agent or
78 user_agent == 'B3M/prober') 95 user_agent == 'B3M/prober')
79 96
80 server_durations.add(elapsed_ms, fields=fields) 97 server_durations.add(elapsed_ms, fields=fields)
81 server_response_status.increment(fields=fields) 98 server_response_status.increment(fields=fields)
82 if request_size is not None: 99 if request_size is not None:
83 server_request_bytes.add(request_size, fields=fields) 100 server_request_bytes.add(request_size, fields=fields)
84 if response_size is not None: 101 if response_size is not None:
85 server_response_bytes.add(response_size, fields=fields) 102 server_response_bytes.add(response_size, fields=fields)
OLDNEW
« no previous file with comments | « client/third_party/infra_libs/ts_mon/common/helpers.py ('k') | client/third_party/infra_libs/ts_mon/common/interface.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698