Book Review & Digest: Release It! Design and Deploy Production-Ready Software

By Michael T. Nygard, 2007, ISBN: 978-0-9787-3921-8 My digest and review of the book. Review Of the books I have read, Release It! is the one I would require all “senior” developers to read (together with something like Architecting Enterprise Solutions: Patterns for High-Capability Internet-based Systems). Especially the first part on stability with its patternsContinue reading “Book Review & Digest: Release It! Design and Deploy Production-Ready Software”

AWS API: Proper syntax for filtering by tag name and value (e.g. describeInstances)

It took me quite a while to figure out the right syntax for filtering instances by tag name and value in the AWS EC2 API’s describeInstances. The documentation is not exactly crystal-clear to me: tag:key=value – The key/value combination of a tag assigned to the resource, where tag:key is the tag’s key. Anyway, here isContinue reading “AWS API: Proper syntax for filtering by tag name and value (e.g. describeInstances)”

Mounting an EBS volume to Docker on AWS Elastic Beanstal

Mounting an EBS volume to a Docker instance running on Amazon Elastic Beanstalk (EB) is surprisingly tricky. The good news is that it is possible. I will describe how to automatically create and mount a new EBS volume (optionally based on a snapshot). If you would prefer to mount a specific, existing EBS volume, you shouldContinue reading “Mounting an EBS volume to Docker on AWS Elastic Beanstal”

All-in-one Docker with Grafana, InfluxDB, and cloudwatch-to-graphite for AWS/Beanstalk monitoring

I have derived the Docker container docker-grafana-influxdb-cloudwatch that bundles Grafana dashboards, InfluxDB for metrics storage, and runs cloudwatch-to-graphite as a cron job to fetch selected metrics from AWS CloudWatch and feed them into the InfluxDB using its Graphite input plugin. It is configured so that you can run it in AWS Elastic Beanstalk (the main problem being thatContinue reading “All-in-one Docker with Grafana, InfluxDB, and cloudwatch-to-graphite for AWS/Beanstalk monitoring”

AWS CloudWatch Alarms Too Noisy Due To Ignoring Missing Data in Averages

I want to know when our app starts getting slower so I sat up an alarm on the Latency metric of our ELB. According to the AWS Console, “This alarm will trigger when the blue line [average latency over the period of 15 min] goes above the red line [2 sec] for a duration ofContinue reading “AWS CloudWatch Alarms Too Noisy Due To Ignoring Missing Data in Averages”

There will be failures – On systems that live through difficulties instead of turning them into a catastrophy

Our systems always depend on other systems and services and thus may and will be subject to failures – network glitches, dropped connections, load spikes, deadlocks, slow or crashed subsystems. We will explore how to create robust systems that can sustain blows from its users, interconnecting networks, and supposedly allied systems yet carry on asContinue reading “There will be failures – On systems that live through difficulties instead of turning them into a catastrophy”

Escaping the Zabbix UI pain: How to create a combined graph for a number of hosts using the Zabbix API

This post will answer two questions: How to display the same item, f.ex. Processor load, for a number of hosts on the same graph How to avoid getting crazy from all the slow clicking in the Zabbix UI by using its API I will indicate how it could be done with plain HTTP POST andContinue reading “Escaping the Zabbix UI pain: How to create a combined graph for a number of hosts using the Zabbix API”

Using Java as Native Linux Apps – Calling C, Daemonization, Packaging, CLI (Brian McCallister)

This is a summary of the excellent JavaZone 2012 talk Going Native (vimeo) by Brian McCallister. Content: Using native libraries in Java and packaging them with Java apps, daemonization, trully executable JARs, powerful CLI, creating manpages, packaging natively as deb/rpm. 1. Using Native Libs in Java Calling Native Libs Calling native libraries such as CContinue reading “Using Java as Native Linux Apps – Calling C, Daemonization, Packaging, CLI (Brian McCallister)”

Enabling JMX Monitoring for Hadoop And Hive

Hadoop’s NameNode and JobTracker expose interesting metrics and statistics over the JMX. Hive seems not to expose anything intersting but it still might be useful to monitor its JVM or do simpler profiling/sampling on it. Let’s see how to enable JMX and how to access it securely, over SSH.

VisualVM: Monitoring Remote JVM Over SSH (JMX Or Not)

(Disclaimer: Based on personal experience and little research, the information might be incomplete.) VisualVM is a great tool for monitoring JVM (5.0+) regarding memory usage, threads, GC, MBeans etc. Let’s see how to use it over SSH to monitor (or even profile, using its sampler) a remote JVM either with JMX or without it. ThisContinue reading “VisualVM: Monitoring Remote JVM Over SSH (JMX Or Not)”