def main(): reporter = ( AWSCloudWatchReporter(namespace="ThreatExchange/HMA-Test-Cloudwatch-Reporter"), ) # emulate some work print("Hit CTRL-C to stop the process. Will publish metrics on being interrupted.") while True: try: worker() except KeyboardInterrupt: break flush("ThreatExchange/HMA-Test")
def _metrics_flush(namespace: str = METRICS_NAMESPACE): """ Flushes metrics to an AWS Reporter. """ try: reporter = AWSCloudWatchReporter(namespace) datums = [] datums.extend( [reporter.get_counter_datum(k, v) for k, v in counts.items()]) datums.extend([ reporter.get_multi_value_datums(k, v, AWSCloudWatchUnit.Milliseconds) for k, v in timers.items() ]) reporter.report(datums) except Exception as e: logger.exception("Couldn't report metrics to cloudwatch")
def _metrics_flush(namespace: str = METRICS_NAMESPACE): """ Flushes metrics to an AWS Reporter. Warning not flush will not go through if it would hit PutMetricData's Limit See AWSCloudWatchReporter.PUT_METRIC_DATA_VALUES_LIMIT """ try: reporter = AWSCloudWatchReporter(namespace) datums = [] datums.extend( [reporter.get_counter_datum(k, v) for k, v in counts.items()]) for duration_name, value_count_mapping in timers.items(): # if value_count_mapping is empty or > PUT_METRIC_DATA_VALUES_LIMIT, # method returns None. filter those out otherwise report will throw an error. if datum := reporter.get_multi_value_datums( name=duration_name, value_count_mapping=value_count_mapping, unit=AWSCloudWatchUnit.Milliseconds, ): datums.append(datum) reporter.report(datums)
def _metrics_flush(namespace: str = METRICS_NAMESPACE): """ Flushes metrics to an AWS Reporter. Warning not flush will not go through if it would hit PutMetricData's Limit See AWSCloudWatchReporter.PUT_METRIC_DATA_VALUES_LIMIT """ try: reporter = AWSCloudWatchReporter(namespace) datums = [] datums.extend( [reporter.get_counter_datum(k, v) for k, v in counts.items()]) datums.extend([ reporter.get_multi_value_datums(k, v, AWSCloudWatchUnit.Milliseconds) for k, v in timers.items() ]) reporter.report(datums) except Exception as e: logger.exception("Couldn't report metrics to cloudwatch")