Slide 1

Slide 1 text

GETTING STARTED WITH BUSINESS METRICS JUNE 27, 2019

Slide 2

Slide 2 text

HELLO MANNHEIM! @hollodotme HOLGER WOLTERSDORF

Slide 3

Slide 3 text

GREETINGS FROM DRESDEN! PHP USERGROUP DRESDEN E.V. @phpugdd

Slide 4

Slide 4 text

CIO AT FORTUNE SOLUTIONS, MEMBER OF THE FORTUNEGLOBE GROUP @F9T3ch

Slide 5

Slide 5 text

METRICS WHAT ARE

Slide 6

Slide 6 text

WHAT ARE METRICS? CONTINUOUSLY MEASURED VALUES 
 TO REFLECT THE CURRENT STATE OF A SYSTEM ▸ UP or DOWN ▸ CPU USAGE ▸ MEMORY USAGE ▸ LOAD ▸ QUERIES PER SECOND ▸ REQUESTS PER SECOND ▸ CACHE HIT RATE ▸ FREE DISC SPACE ▸ PAGE SPEED

Slide 7

Slide 7 text

A.K.A TELEMETRY

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

▸ https://prometheus.io ▸ https://hub.docker.com/r/prom/prometheus prometheus: image: prom/prometheus:latest restart: 'on-failure' volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - ./data:/prometheus command: - '"--config.file=/etc/prometheus/prometheus.yml' - '"--storage.tsdb.path=/prometheus' - '"--storage.tsdb.retention=32d' - '"--web.enable-lifecycle' global: scrape_interval: 15s scrape_timeout: 10s evaluation_interval: 15s scrape_configs: # Prometheus self-monitoring - job_name: prometheus metrics_path: /metrics scheme: http static_configs: - targets: - localhost:9090

Slide 10

Slide 10 text

Databases Aerospike exporter ClickHouse exporter Consul exporter (official) Couchbase exporter CouchDB exporter ElasticSearch exporter EventStore exporter Memcached exporter (official) MongoDB exporter MSSQL server exporter MySQL server exporter (official) OpenTSDB Exporter Oracle DB Exporter PgBouncer exporter PostgreSQL exporter Presto exporter ProxySQL exporter RavenDB exporter Redis exporter RethinkDB exporter SQL exporter Tarantool metric library Twemproxy Hardware related apcupsd exporter BIG-IP exporter Collins exporter IBM Z HMC exporter IoT Edison exporter IPMI exporter knxd exporter Netgear Cable Modem Exporter Netgear Router exporter Node/system metrics exporter (official) NVIDIA GPU exporter ProSAFE exporter Ubiquiti UniFi exporter Issue trackers and continuous integration Bamboo exporter Bitbucket exporter Confluence exporter Jenkins exporter JIRA exporter Messaging systems Beanstalkd exporter EMQ exporter Gearman exporter IBM MQ exporter Kafka exporter NATS exporter NSQ exporter Mirth Connect exporter MQTT blackbox exporter RabbitMQ exporter RabbitMQ Management Plugin exporter Storage Ceph exporter Ceph RADOSGW exporter Gluster exporter Hadoop HDFS FSImage exporter Lustre exporter ScaleIO exporter HTTP Apache exporter HAProxy exporter (official) Nginx metric library Nginx VTS exporter Passenger exporter Squid exporter Tinyproxy exporter Varnish exporter WebDriver exporter APIs AWS ECS exporter AWS Health exporter AWS SQS exporter Cloudflare exporter DigitalOcean exporter Docker Cloud exporter Docker Hub exporter GitHub exporter InstaClustr exporter Mozilla Observatory exporter OpenWeatherMap exporter Pagespeed exporter Rancher exporter Speedtest exporter Logging Fluentd exporter Google's mtail log data extractor Grok exporter Other monitoring systems Akamai Cloudmonitor exporter Alibaba Cloudmonitor exporter AWS CloudWatch exporter (official) Azure Monitor exporter Cloud Foundry Firehose exporter Collectd exporter (official) Google Stackdriver exporter Graphite exporter (official) Heka dashboard exporter Heka exporter InfluxDB exporter (official) JavaMelody exporter JMX exporter (official) Munin exporter Nagios / Naemon exporter New Relic exporter NRPE exporter Osquery exporter OTC CloudEye exporter Pingdom exporter scollector exporter Sensu exporter SNMP exporter (official) StatsD exporter (official) Miscellaneous ACT Fibernet Exporter BIND exporter Blackbox exporter (official) BOSH exporter cAdvisor Cachet exporter ccache exporter Dovecot exporter Dnsmasq exporter eBPF exporter Ethereum Client exporter Hostapd Exporter JMeter plugin Kannel exporter Kemp LoadBalancer exporter Kibana Exporter kube-state-metrics Meteor JS web framework exporter Minecraft exporter module OpenStack exporter PHP-FPM exporter PowerDNS exporter Process exporter rTorrent exporter SABnzbd exporter Script exporter Shield exporter Smokeping prober SMTP/Maildir MDA blackbox prober SoftEther exporter Transmission exporter Unbound exporter Xen exporter https://prometheus.io/docs/instrumenting/exporters/

Slide 11

Slide 11 text

Software exposing Prometheus metrics Some third-party software exposes metrics in the Prometheus format, so no separate exporters are needed: App Connect Enterprise Ballerina Ceph Collectd Concourse CRG Roller Derby Scoreboard (direct) Docker Daemon Doorman (direct) Envoy Etcd (direct) Flink FreeBSD Kernel Grafana JavaMelody Kong Kubernetes (direct) Linkerd mgmt MidoNet midonet-kubernetes (direct) Minio Netdata Pretix Quobyte (direct) RobustIRC ScyllaDB Skipper SkyDNS (direct) Telegraf Traefik VerneMQ Weave Flux https://prometheus.io/docs/instrumenting/exporters/

Slide 12

Slide 12 text

DEMO

Slide 13

Slide 13 text

BUSINESS METRICS WHAT ARE

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

WHAT ARE BUSINESS METRICS? CONTINUOUSLY MEASURED VALUES 
 TO REFLECT THE CURRENT 
 SUCCESS OF YOUR BUSINESS ▸ ARTICLES ONLINE ▸ ORDERS PER HOUR ▸ SALES VOLUME ▸ ITEMS SHIPPED IN SLA ▸ CONVERSION RATE ▸ STOCK TURN DEVELOPMENT ▸ CUSTOMER SATISFACTION ▸ COST PER OPERATION (CPO)

Slide 16

Slide 16 text

▸ COUNTERS (can only go up) orders_total 1234.000000 orders_total 1235.000000 1559024925 orders_total{shop="My-Shop"} 999.000000 orders_total{shop="Your-Shop"} 235.000000 orders_total{shop="My-Shop"} 999.000000 1559024925 orders_total{shop="Your-Shop"} 236.000000 1559024925 average_order_value 140.250000 average_order_value 141.500000 1559024925 average_order_value{shop="My-Shop"} 123.450000 average_order_value{shop="Your-Shop"} 156.780000 average_order_value{shop="My-Shop"} 101.020000 1559024925 average_order_value{shop="Your-Shop"} 199.890000 1559024925 ▸ GAUGES (can go up and down)

Slide 17

Slide 17 text

▸ Type-hinting and description # TYPE orders_total counter # HELP orders_total Total number of placed orders orders_total 1234.000000 orders_total 1235.000000 1559024925 orders_total{shop="My-Shop"} 999.000000 orders_total{shop="Your-Shop"} 235.000000 orders_total{shop="My-Shop"} 999.000000 1559024925 orders_total{shop="Your-Shop"} 236.000000 1559024925

Slide 18

Slide 18 text

openmetrics-php/exposition-text

Slide 19

Slide 19 text

openmetrics-php/exposition-text (openmetrics-php/???)

Slide 20

Slide 20 text

YOUR APP COLLECT METRICS IN REDIS WHENEVER SOMETHING HAPPENS IN YOUR APP & FLUSH THEM AS SOON AS PROMETHEUS CALLED THE ENDPOINT METRICS ENDPOINT

Slide 21

Slide 21 text

jimdo/prometheus_client_php

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

▸ https://grafana.com ▸ https://hub.docker.com/r/grafana/grafana grafana: image: grafana/grafana:latest restart: 'on-failure' volumes: - ./data/grafana:/var/lib/grafana depends_on: - prometheus

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

DEMO

Slide 26

Slide 26 text

php-usergroup-dresden/business-metrics-for-starters

Slide 27

Slide 27 text

QUESTIONS?

Slide 28

Slide 28 text

THANK YOU! @hollodotme HOLGER WOLTERSDORF