# Gateway Metrics via scripting: How to get "gauge" object?

**URL:** <https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499>\
**Category:** Ignition\
**Created:** [March 23, 2022, 6:56am UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499 "2022-03-23T06:56:08Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [March 23, 2022, 6:56am UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499/1 "2022-03-23T06:56:08Z")

</div>

I have a script where I’m trying to get the metrics of the gateway using the javadocs. I have everything coming in except for the gauges.  
On this line `o = registry.gauge(item)` I’m getting an attribute not found error:  
`AttributeError: 'com.codahale.metrics.MetricRegistry' object has no attribute 'gauge'`

Which is strange, because that _does_ exist in the javadocs and the singular version exists for all other metrics (histogram, meter, counter, etc.):  
[https://www.javadoc.io/doc/io.dropwizard.metrics/metrics-core/4.1.0-rc2/com/codahale/metrics/MetricRegistry.html#gauge--](https://www.javadoc.io/doc/io.dropwizard.metrics/metrics-core/4.1.0-rc2/com/codahale/metrics/MetricRegistry.html#gauge--)

I used `dir` to pull out the props/methods of the `registry` object, and I don’t see `gauge` (singular) in there 😕 only the plural version `gauges`. I see all of the other metrics as singular.

Any ideas?  
@paul-griffith @Kevin.Herron

```auto
def getGatewayMetrics():
	fn = 'getGatewaryMetrics'
	from com.inductiveautomation.ignition.gateway import IgnitionGateway
	context = IgnitionGateway.get()
	registry = context.getMetricRegistry()
	
	metrics = {}	
	items = registry.getCounters()
	for item in items:
		o = registry.counter(item)
		metrics[item] = {'type': 'counter',
						 'value': o.getCount()
						}
	
	items = registry.getMeters()
	for item in items:
		o = registry.meter(item)
		metrics[item] = {'type': 'meter',
						 'value_1min': o.getOneMinuteRate(),
						 'value_5min': o.getFiveMinuteRate(),
						 'value_15min': o.getFifteenMinuteRate()
						}
	
	items = registry.getGauges()
	for item in items:
		o = registry.gauge(item) ### <--- Error occurs here
		metrics[item] = {'type': 'gauge',
						 'value': o.getValue()
						}

#	items = registry.getHistograms()
#	for item in items:
# o = registry.histogram(item)
	
	items = registry.getTimers()
	for item in items:
		o = registry.timer(item)
		metrics[item] = {'type': 'timer',
						 'value_1min': o.getOneMinuteRate(),
						 'value_5min': o.getFiveMinuteRate(),
						 'value_15min': o.getFifteenMinuteRate()
						}
	return metrics

```

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [March 23, 2022, 10:03am UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499/2 "2022-03-23T10:03:30Z")

</div>

~~I found another way to get them via the `getGauges` method. This probably shows my lack of Java knowledge~~ 😬  
Still interested why gauges isn’t there though.  
Edit: I can just use the `item`, duh… Thanks Travis

```auto
def getGatewayMetrics():
	fn = 'getGatewayMetrics'
	from com.inductiveautomation.ignition.gateway import IgnitionGateway
	context = IgnitionGateway.get()
	registry = context.getMetricRegistry()
	metrics = {}
	
	for item in registry.getCounters():
		metrics[item] = {'type': 'counter',
						 'value': item.getCount()
						}
	
	for item in registry.getMeters():
		metrics[item] = {'type': 'meter',
						 'value_1min': item.getOneMinuteRate(),
						 'value_5min': item.getFiveMinuteRate(),
						 'value_15min': item.getFifteenMinuteRate()
						}
	
	for item in registry.getGauges():
		metrics[item] = {'type': 'gauge',
						 'value': item.getValue()
						}

#	for item in registry.getHistograms():
	
	for item in registry.getTimers():
		metrics[item] = {'type': 'timer',
						 'value_1min': item.getOneMinuteRate(),
						 'value_5min': item.getFiveMinuteRate(),
						 'value_15min': item.getFifteenMinuteRate()
						}
	
	return metrics

```

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [March 23, 2022, 10:23am UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499/3 "2022-03-23T10:23:56Z")

</div>

Can't help you on that, but

> [@nminchin](#):
>
> `fn = 'getGatewaryMetrics'`

Not sure what it's for, but be careful with that !

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [March 23, 2022, 10:27am UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499/4 "2022-03-23T10:27:38Z")

</div>

Oh, I’m being careful, I’m very wary of it! 😂

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [March 23, 2022, 12:03pm UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499/5 "2022-03-23T12:03:11Z")

</div>

What version of Ignition is this running on?

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [March 23, 2022, 6:37pm UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499/6 "2022-03-23T18:37:59Z")

</div>

8.1.Ancient (8.1.5)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 28, 2022, 4:40pm UTC](https://forum.inductiveautomation.com/t/gateway-metrics-via-scripting-how-to-get-gauge-object/57499/7 "2022-03-28T16:40:13Z")

</div>

I wonder if it’s a Jython thing with the automatic bean exposure. I don’t readily see why, but that’s my only guess. `gauges`, `meters` and `counters` all return a `Map<String, X>`, so you should also be able to use `items()`:

```auto
for key, gauge in registry.getGauges().items():
    metrics[key] = {...}

```
