2. Hawkular
● Open source monitoring project
● Next generation monitoring project of JBoss ON (RHQ since 2006)
○ Hawkular started end of 2014
● Apache License v2
● Provide REST services
● Providing a generic solutions to common problems.
○ From collecting rain sensors data and send an SMS on rain,
○ Monitor docker containers
○ Application Performance Monitoring,
● Adopted to the Middleware management solution in the ManageIQ project
3. For who ?
● IoT entusiast who needs to collect metrics and possibly need to trigger alerts
● Operators who are looking for a solution to store metrics from statsD, collectd,
syslog…
● Developers of solutions who need long term timeseries database storage
● Users of ManageIQ who are looking for Middleware management
● Users of Kubernetes/Heapster who wants to store docker container metrics in a
long term timeseries database storage
4. Hawkular Projects
● Hawkular Services & Alerts
○ flagship base project
○ based on WildFly
○ provides services
■ store metrics,
■ alert on metrics,
■ keep a graph view of an inventory
● Hawkular Metrics
○ provide TimeSeries Database (TSDB) services
○ Time Series Metrics Engine based on Cassandra for scalability
○ offers a REST API to store and retrieve metrics.
● Hawkular APM
○ Application Performance Management
○ visualize which layer of an application time is spent
○ deprecated in favor of CNCF's Jaeger
5. Red Hat Middleware Management with CloudForms
● ManageIQ project
● Middleware Manager for Red Hat Cloudforms Technology Preview
○ https://access.redhat.com/announcements/2820611
● Provide centralized management of all the JBoss middleware products from
within the CloudForms user interface.
● Red Hat Middleware Management 7.0.TechPreview
○ https://access.redhat.com/documentation/en-us/red_hat_middleware_management/7.0.techpr
eview/html-single/installing_red_hat_middleware_management_with_cloudforms/
7. Hawkular Services Quick Start
● Let’s run Hawkular
○ http://www.hawkular.org/hawkular-services/docs/quickstart-guide/
● Run Cassandra
○ docker run --name hawkular-cassandra -e CASSANDRA_START_RPC=true -d
cassandra:3.0.9
● Run Hawkular Services
○ docker run --name hawkular-services --link=hawkular-cassandra -e
CASSANDRA_NODES=hawkular-cassandra -p 8080:8080 hawkular/hawkular-services
○ docker exec -it hawkular-services bash
○ http://localhost:8080/
8. Hawkular Services Quick Start
● STEP 1: ADD METRICS
● STEP 2: READ THE METRICS
● STEP 3: ADD ALERTING
● STEP 4: TEST THE ALERT TRIGGER
● Metrics REST API
○ http://www.hawkular.org/hawkular-metrics/docs/user-guide/
○ http://www.hawkular.org//docs/rest/rest-metrics.html
9. Hawkular Services Quick Start
● STEP 1: ADD METRICS
○ metrics_day_1.json => weather data collected every 30 min for the whole day of July 15th
2016.
○ curl -v -u jdoe:password -X POST http://localhost:8080/hawkular/metrics/gauges/temperature/raw -d
@metrics_day_1.json -H "Content-Type: application/json" -H "Hawkular-Tenant: myTenant"
10. Hawkular Services Quick Start - Read Metrics
● STEP 2: READ THE METRICS
● from when to when we want the values, and ordered by time
○ curl -v -u jdoe:password -X GET
"http://localhost:8080/hawkular/metrics/gauges/temperature/raw?start=1468578600000&end=
1468594800001&order=ASC" -H "Content-Type: application/json" -H "Hawkular-Tenant:
myTenant"
12. Hawkular Services Quick Start - Downsampled
● STEP 2: READ THE METRICS
● Want to know the minimum, maximum and average values for buckets that
would last 2 hours
○ curl -v -u jdoe:password -X GET
"http://localhost:8080/hawkular/metrics/gauges/temperature/stats?bucketDuration=2h&start=1
468533600000&end=1468618200001" -H "Content-Type: application/json" -H
"Hawkular-Tenant: myTenant"
16. Hawkular Services Quick Start
● STEP 4: TEST THE ALERT TRIGGER
○ clear console
○ curl -v -u jdoe:password -X POST
http://localhost:8080/hawkular/metrics/gauges/temperature/raw -d @metrics_day_2.json -H
"Content-Type: application/json" -H "Hawkular-Tenant: myTenant"
● In the logs of Hawkular Services, you should see 3 INFO messages showing
that the conditions were met
21. Hawkular APM with Jaeger
● Want to trace performance issue on distributed polyglot systems e.g. msa
○ Java
○ Go
○ Python
○ Node.js
○ C++
● Hawkular developed own contemporary distributed tracing systems
○ http://www.hawkular.org/blog/2016/09/19/hawkular-apm-on-msa.html
○ for application performance management
○ for distributed & micro-service applications
● e.g., Zipkin, Google Dapper
22. Hawkular APM with Jaeger
● Hawkular deprecated Hawkular APM project
○ http://www.hawkular.org/blog/2016/09/19/hawkular-apm-on-msa.html
● Instead, Hawkular Team collaborate on the Jaeger project
○ http://www.hawkular.org/blog/2017/04/19/hawkular-apm-jaeger.html
● Uber’s Yuri Shkuro and Red Hat’s Gary Brown, both core contributors to the
Jaeger Distributed Tracing project
○ Hawkular Team contributing to OpenTracing standard
● Distributed tracing based on OpenTracing standard
● OpenTracing is the vendor neutral open standard for distributed tracing
○ Adopted by CNCF (Cloud Native Computing Foundation)