Skip to content

Instantly share code, notes, and snippets.

@sonus21
Last active November 9, 2019 07:42
Show Gist options
  • Select an option

  • Save sonus21/a7ad92a16b498c72beec764c55b8149a to your computer and use it in GitHub Desktop.

Select an option

Save sonus21/a7ad92a16b498c72beec764c55b8149a to your computer and use it in GitHub Desktop.
Promeheus counter and Gauge example
@Component
public class StockManager {
@Autowired private MeterRegistry meterRegistry;
private List<String> orders = new Vector<>();
private Counter counter;
private Gauge gauge;
@PostConstruct
public void init() {
counter =
Counter.builder("order_created")
.description("number of orders created")
.register(meterRegistry);
gauge =
Gauge.builder("stock.size", this, StockManager::getNumberOfItems)
.description("Number of items in stocks")
.register(meterRegistry);
}
public int getNumberOfItems() {
return orders.size();
}
public void addItems(List<String> items) {
orders.addAll(items);
// measure gauge
gauge.measure();
}
public List<String> getItem(int count) {
List<String> items = new ArrayList<>(count);
while (count > 0) {
try {
items.add(orders.remove(0));
} catch (ArrayIndexOutOfBoundsException e) {
break;
}
count -= 1;
}
// increase counter
counter.increment();
// measure gauge
gauge.measure();
return items;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment