metric.py (2277B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\datadog\dogshell\metric.py 2 from collections import defaultdict 3 from datadog import api 4 from datadog.dogshell.common import report_errors, report_warnings 5 6 class MetricClient(object): 7 8 @classmethod 9 def setup_parser(cls, subparsers): 10 parser = subparsers.add_parser('metric', help='Post metrics.') 11 verb_parsers = parser.add_subparsers(title='Verbs', dest='verb') 12 verb_parsers.required = True 13 post_parser = verb_parsers.add_parser('post', help='Post metrics') 14 post_parser.add_argument('name', help='metric name') 15 post_parser.add_argument('value', help='metric value (integer or decimal value)', type=float) 16 post_parser.add_argument('--host', help='scopes your metric to a specific host (default to the local host name)', default='') 17 post_parser.add_argument('--no_host', help='no host is associated with the metric (overrides --host))', action='store_true') 18 post_parser.add_argument('--device', help='scopes your metric to a specific device', default=None) 19 post_parser.add_argument('--tags', help='comma-separated list of tags', default=None) 20 post_parser.add_argument('--localhostname', help='deprecated, used to force `--host` to the local hostname (now default when no `--host` is specified)', action='store_true') 21 post_parser.add_argument('--type', help='type of the metric - gauge(32bit float) or counter(64bit integer)', default=None) 22 parser.set_defaults(func=cls._post) 23 24 @classmethod 25 def _post(cls, args): 26 api._timeout = args.timeout 27 host = None if args.no_host else args.host 28 if args.tags: 29 tags = sorted(set([ t.strip() for t in args.tags.split(',') if t ])) 30 else: 31 tags = None 32 res = api.Metric.send(metric=args.name, points=args.value, host=host, device=args.device, tags=tags, metric_type=args.type) 33 res = defaultdict(list, res) 34 if args.localhostname: 35 res['warnings'].append(u'`--localhostname` command line flag is deprecated, made default when no `--host` is specified. See the `--host` option for more information.') 36 report_warnings(res) 37 report_errors(res)