Top Banner
promgen - prometheus management tool tokuhirom
48

promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Jan 07, 2017

Download

Engineering

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

promgen - prometheus management tool

tokuhirom

Page 2: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Who are you?

Page 3: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Web Application Engineer

• Server side engineer

• Java

• Perl

• Server Admin

Page 4: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

www1.example.com

node_exporter (httpd)

jmx_exporter (httpd)

Periodic GET request

Page 5: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual
Page 6: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Why Prometheus?

Page 7: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

It’s good for lazy web programmers

Get data → Get stats

Async and lazy

Page 8: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Easy to integrate with grafana

Page 9: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

But there’s no server list management tool

Page 10: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

official method to manage servers, is writing YAML.

With consul or something

Page 11: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

YAML file contains: exporter port number

alerting rules

Page 12: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Server admins need to write BIG YAML FILE.

Page 13: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Editing YAML via github pull-request

Page 14: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

We want to manage it via web app.

Page 15: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

We wrote web application to manage server list.

Page 16: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

We are managing the server list in our deployment tool

Page 17: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

promgen can integrate with our deployment tool

(Of course, it’s pluggable)

Page 18: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual
Page 19: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Note: We haven’t use consul or similar

tool(now).

Page 20: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Promgen

• Simple prometheus manager app

• exporter port management

• alert management

Page 21: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Screenshot

Page 22: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual
Page 23: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual
Page 24: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual
Page 25: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual
Page 26: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

ProjectService

Project

Project

Host

Host

Host

Data structure

Managed by Deploy tool

Farm

Farm

Farm

Page 27: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Alerting

Alert Manager Hipchatpromgen-alerting

Web hook

Mail

MySQL

Page 28: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Architecture

• Ruby

• Sequel

• MySQL

• erubis

• sinatra

Page 29: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Why ruby?

Page 30: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

I want to run it on prometheus host.

We shouldn’t use much memory

Page 31: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Part 2. Monitoring Java

processes via Prometheus

Page 32: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

There are 3 patterns

Page 33: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

1. Collect data from MBean in target JVM

App JVM (Runs jmx_exporter jetty) prom

HTTP

Page 34: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

• Pros

• Easy to run

• Cons

• Hard to maintain YAML file

Page 35: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

- pattern: '^com.zaxxer.hikari<type=Pool \((\w+)\)><>ThreadsAwaitingConnection'

name: hikaricp_pool_threads_awaiting_connection

labels:

source: "$1"

help: "HikariCP threads awaiting connection(pending threads) $1"

type: GAUGE

Page 36: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

2. Collect data from JMX outside from target JVM

App JVM

jmx_exporter JVM prom

HTTPJMX

Page 37: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

• Pros

• Easy to deploy

• Safety

• Cons

• Memory overhead

• Hard to maintain YAML file

Page 38: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

3. Collect data by simpleclient_java

App JVM (Run simpleclient_java jetty) prom

HTTP

Page 39: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

• Pros

• Clean

• lightweight

• no YAML required

• Cons

• Requires coding

Page 40: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

simpleclient_java

Page 41: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

simpleclient_dropwizard

Drop wizard metrics

MetricRegistryclient_java

Page 42: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

simpleclient_hotspot

JVM core client_java

Default

Page 43: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

simpleclient_log4j/logback

log4j/logback client_java

Error/Warn rate

Page 44: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

simpleclient_springboot

Spring Boot Metrics client_java

NEW!

Page 45: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

simpleclient_jetty

Jetty requests

status etc.

client_java

NEW!

Page 46: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

simpleclient_hikaricp

HikariCP client_java

REJECTED!

Page 47: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual
Page 48: promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus casual

Questions?