NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)