{"id":58970,"date":"2016-08-04T07:00:22","date_gmt":"2016-08-04T04:00:22","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=58970"},"modified":"2016-07-30T21:34:45","modified_gmt":"2016-07-30T18:34:45","slug":"12-step-program-realizing-java-monitoring-flawed","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html","title":{"rendered":"The 12 Step Program to Realizing Your Java Monitoring is Flawed"},"content":{"rendered":"<p><strong>What are some of the biggest problems with the current state of Java monitoring?<\/strong><\/p>\n<p>Errors in production are much like drunk texting. You only realize something went wrong after it had already happened. Texting logs are usually more amusing than application error logs, but\u2026 both can be equally hard to fix.<\/p>\n<p>In this post we\u2019ll go through a 12 step monitoring flaws rehab program. A thought experiment backed by the experience of Takipi\u2019s users with some of the most common problems that you\u2019re likely to encounter \u2013 And what you can do about them.<\/p>\n<p>Let\u2019s roll.<\/p>\n<h2>Step #1: Admitting that we have a problem<\/h2>\n<p>In fact, it\u2019s only one problem on a higher level, application reliability. To be able to quickly know when there\u2019s something wrong with the application, and having quick access to all the information you need in order to fix it.<\/p>\n<p>When we take a step closer, the reliability problem is made up of many other symptoms with the current state of monitoring and logging. These are thorny issues that most people try to bury or avoid altogether. But in this post, we\u2019re putting them in the spotlight.<\/p>\n<p><strong>Bottom line:<\/strong> Troubleshooting and handling new errors that show up in production is unavoidable.<\/p>\n<h2>Step #2: Shutting down monitoring information overload<\/h2>\n<p>A good practice is to collect everything you can about your application, but that\u2019s only useful when the metrics are meaningful. Inconsistent logging and metrics telemetry generate more noise when their actionability is just an afterthought. Even if they result in beautiful dashboards.<\/p>\n<p>A big part of this is misusing exceptions and logged errors as part of the application\u2019s control flow, clogging up logs with the paradox of \u201cnormal\u201d exceptions. You can read more about this in the recent eBook we released <a href=\"http:\/\/land.takipi.com\/java-application-errors\/\" target=\"_blank\">right here<\/a>.<\/p>\n<p>As the cost for monitoring and data retention goes lower, the problem shifts to collecting actionable data and making sense of it.<\/p>\n<p><strong>Bottom line:<\/strong> Even though it\u2019s gradually getting easier to log and report on everything, error root cause discovery is still mostly manual, the haystack gets bigger and the needle is harder to find.<\/p>\n<h2>Step #3: Avoiding tedious log analysis<\/h2>\n<p>Let\u2019s assume we have some error, a specific transaction that fails some of the time. We now have to find all the relevant information about it in our log files. Time to grep our way through the logs, or play around with different queries in tools that make the search quicker like <a href=\"http:\/\/blog.takipi.com\/splunk-vs-elk-the-log-management-tools-decision-making-guide\/\" target=\"_blank\">Splunk, ELK<\/a>, or <a href=\"https:\/\/www.javacodegeeks.com\/2014\/04\/the-7-log-management-tools-java-developers-should-know.html\" target=\"_blank\">other log<\/a> <a href=\"https:\/\/www.javacodegeeks.com\/2015\/04\/log-management-tools-face-off-splunk-vs-logstash-vs-sumo-logic.html\" target=\"_blank\">management tools<\/a>.<\/p>\n<p>To make this process easier, developers who use <a href=\"https:\/\/www.takipi.com\/\" target=\"_blank\">Takipi<\/a> are able to extend the context of each logged error, warning and exception into the source, state and variable state that caused it. Each log line gets a link appended to it that leads to the event\u2019s analysis in Takipi:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/LogLink.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-58983\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/LogLink.gif\" alt=\"LogLink\" width=\"625\" height=\"346\" \/><\/a><\/p>\n<p><strong>Bottom line:<\/strong> Manually sifting through logs is a tedious process that can be avoided.<\/p>\n<h2>Step #4: Realizing that production log levels aren\u2019t verbose enough<\/h2>\n<p>Log levels are a double edged sword. The more levels you log in production, the more context you have. BUT, the extra logging creates overhead that is\u00a0best to avoid in production. Sometimes, the additional data you need would exist in a \u201cDEBUG\u201d or an \u201cINFO\u201d message, but production applications usually only write \u201cWARN\u201d level messages and above.<\/p>\n<p>The way we solve this in Takipi is with a recently released new feature that gives you the ability to see the last 250 log statements within the thread leading up to an error. Even if they were not written to the log file in production.<\/p>\n<p>Wait, what? Logless logging with no additional overhead. Since log statements are captured directly in-memory, without relying on log files, we\u2019re able to do full verbosity, in production, without affecting log size or creating overhead. You can read more about it <a href=\"https:\/\/blog.takipi.com\/introducing-takipis-log-view-source-stack-state-and-the-logs-that-really-matter\/\" target=\"_blank\">right here<\/a>, or <a href=\"http:\/\/land.takipi.com\/logs\/\" target=\"_blank\">try it yourself<\/a>.<\/p>\n<p><strong>Bottom line:<\/strong> As of today you\u2019re not limited to WARN and above levels in production logging.<\/p>\n<h2>Step #5: Next person who says \u201ccannot reproduce\u201d buys a round of drinks<\/h2>\n<p>Probably the most common excuse for deferring a bug fix is \u201ccan\u2019t reproduce\u201d. An error that lacks the state that cause it. Something bad happens, usually you first hear about it from an actual user, and can\u2019t recreate it or find evidence in the logs \/ collected metrics.<\/p>\n<p>The hidden meaning of \u201ccan\u2019t reproduce\u201d is right at the source. If you\u2019re used to first hearing about errors from users, there might be something wrong with the way errors are tracked internally. With proper monitoring in place, it\u2019s possible to identify and solve errors before actual users report them.<\/p>\n<p><strong>Bottom line:<\/strong> Stop reproducing \u201ccannot reproduce\u201d.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/reproduce.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-58984\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2016\/07\/reproduce.gif\" alt=\"reproduce\" width=\"500\" height=\"292\" \/><\/a><\/p>\n<h2>Step #6: Breaking the log statements redeploy cycle<\/h2>\n<p>A common infamous and unfortunate cure for \u201ccannot reproduce\u201d is adding additional logging statements in production and hoping for the bug to happen again.<\/p>\n<p>In production.<\/p>\n<p>Messing up real users.<\/p>\n<p>That\u2019s the production debugging paradox right there. A bug happens, you don\u2019t have enough data to solve it (but you do have lots of noise), adding logging statements, build, test (the same test that missed the bug in the first place), deploy to production, hope for it to happen again, hope for the new data to be enough or\u2026 repeat.<\/p>\n<p><strong>Bottom line:<\/strong> The ultimate goal for a successful monitoring strategy would be to prevent this cycle from happening.<\/p>\n<h2>Step #7: APM + Trackers + Metrics + Logs = Limited visibility<\/h2>\n<p>Let\u2019s step it up a notch. We\u2019ve covered logs and dashboard reporting metrics, now it\u2019s time to add <a href=\"https:\/\/www.javacodegeeks.com\/2014\/09\/5-error-tracking-tools-java-developers-should-know.html\" target=\"_blank\">error tracking tools<\/a> <a href=\"http:\/\/blog.takipi.com\/appdynamics-vs-new-relic-which-tool-is-right-for-you-the-complete-guide\/\" target=\"_blank\">and<\/a> <a href=\"http:\/\/blog.takipi.com\/appdynamics-vs-dynatrace-battle-of-the-enterprise-monitoring-giants\/\" target=\"_blank\">APMs<\/a> to the mix.<\/p>\n<p>The fact is that even when a monitoring stack includes\u00a0a solution from all 4 categories, the visibility you\u2019re getting into application errors is limited. You\u2019ll see the stack trace of the transaction, or at most specific predefined hardcoded variables. Traditional monitoring stacks have no visibility to the full state of the application at moment of error.<\/p>\n<p><strong>Bottom line: <\/strong>There\u2019s a critical missing component in today\u2019s common monitoring stack. Variable level visibility for production debugging.<\/p>\n<h2>Step #8: Preparing for distributed error monitoring<\/h2>\n<p>Monitoring doesn\u2019t stop on the single server level, especially with microservice architectures where an error that formed on one server could be causing trouble elsewhere.<\/p>\n<p>While microservices promote the \u201cSeparation of Concerns\u201d principle, they\u2019re also introducing a plethora of new problems at\u00a0a server level scale. <a href=\"https:\/\/www.javacodegeeks.com\/2016\/06\/5-ways-not-mess-microservices-production.html\" target=\"_blank\">In this previous post<\/a> we covered these issues and offered possible solution strategies.<\/p>\n<p><strong>Bottom line:<\/strong> Any monitoring solution should take distributed errors into account and be able to stitch in troubleshooting data from multiple sources.<\/p>\n<h2>Step #9: Find a way around long troubleshooting cycles<\/h2>\n<p>Whether it\u2019s an alerting issue or simply a matter of priorities, for most applications the troubleshooting cycle takes days, weeks or even months after the first error was introduced. The person who reported the error might be unreachable or worse, the relevant data could be long gone \/ rolled over due to data retention policies.<\/p>\n<p>The ability to freeze a snapshot of the application state at moment of error, even if it comes from multiple services \/ sources is critical in this case, otherwise the important data can be lost.<\/p>\n<p><strong>Bottom line:<\/strong> Long troubleshooting cycles should be avoided.<\/p>\n<h2>Step #10: Acknowledge the dev vs ops dilemma<\/h2>\n<p>Keeping up with release cycle issues, we\u2019re all on the same boat, BUT, developers want to release features faster while operations would rather keep the production environment stable.<\/p>\n<p>Short feature cycles and long troubleshooting cycles just don\u2019t go together. There should be a balance between the two. Monitoring is a team sport, and the tools have to know how to speak to each other. For example, at Takipi you\u2019re able to get alerts on Slack, Pagerduty or Hipchat, and directly open a JIRA ticket with all the available error analysis data.<\/p>\n<p><strong>Bottom line:<\/strong> Collaborative workflows speed up issue resolution times.<\/p>\n<h2>Step #11: There\u2019s hope<\/h2>\n<p>Modern developer tools are taking big steps to improve on the current state of monitoring. Whether it\u2019s in the field of logs, application performance management or the new categories that are in the works.<\/p>\n<p><strong>Bottom line:<\/strong> Keep an eye out for developments in the tooling ecosystem and best practices from other companies.<\/p>\n<h2>Step #12: Spread the word<\/h2>\n<p>Monitoring is an inseparable part of software development, let\u2019s keep the discussion going!<\/p>\n<p>We hope you\u2019ve enjoyed this overview \/ rant of some of the main problems with the current state of monitoring. Are there any other issues with monitoring that keep you up at night?<\/p>\n<p>Please feel free to share them in the comments section below.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/blog.takipi.com\/the-12-step-program-to-realizing-your-java-monitoring-is-flawed\/\">The 12 Step Program to Realizing Your Java Monitoring is Flawed<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/join-us\/jcg\/\">JCG partner<\/a> Alex Zhitnitsky at the <a href=\"http:\/\/blog.takipi.com\/\">Takipi <\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>What are some of the biggest problems with the current state of Java monitoring? Errors in production are much like drunk texting. You only realize something went wrong after it had already happened. Texting logs are usually more amusing than application error logs, but\u2026 both can be equally hard to fix. In this post we\u2019ll &hellip;<\/p>\n","protected":false},"author":562,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-58970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The 12 Step Program to Realizing Your Java Monitoring is Flawed - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"What are some of the biggest problems with the current state of Java monitoring? Errors in production are much like drunk texting. You only realize\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The 12 Step Program to Realizing Your Java Monitoring is Flawed - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"What are some of the biggest problems with the current state of Java monitoring? Errors in production are much like drunk texting. You only realize\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-04T04:00:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alex Zhitnitsky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@overopshq\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alex Zhitnitsky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html\"},\"author\":{\"name\":\"Alex Zhitnitsky\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/7cb10ac83aff923b5a76862069c27065\"},\"headline\":\"The 12 Step Program to Realizing Your Java Monitoring is Flawed\",\"datePublished\":\"2016-08-04T04:00:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html\"},\"wordCount\":1469,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html\",\"name\":\"The 12 Step Program to Realizing Your Java Monitoring is Flawed - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2016-08-04T04:00:22+00:00\",\"description\":\"What are some of the biggest problems with the current state of Java monitoring? Errors in production are much like drunk texting. You only realize\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2016\\\/08\\\/12-step-program-realizing-java-monitoring-flawed.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"The 12 Step Program to Realizing Your Java Monitoring is Flawed\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/7cb10ac83aff923b5a76862069c27065\",\"name\":\"Alex Zhitnitsky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8ce5d7ecc8c7467680ad01ee6a39bdbf9a99d62d8611c243669340e8f7405466?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8ce5d7ecc8c7467680ad01ee6a39bdbf9a99d62d8611c243669340e8f7405466?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8ce5d7ecc8c7467680ad01ee6a39bdbf9a99d62d8611c243669340e8f7405466?s=96&d=mm&r=g\",\"caption\":\"Alex Zhitnitsky\"},\"description\":\"Alex is an engineer working with OverOps on a mission to help Java and Scala developers solve bugs in production and rid the world of buggy software. Passionate about all things tech, he is also the co-founder &amp; lead of GDG Haifa, a local developer group. Alex holds a B.Sc from the Technion, Israel's Institute of Technology.\",\"sameAs\":[\"http:\\\/\\\/www.takipi.com\\\/\",\"https:\\\/\\\/x.com\\\/overopshq\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/alex-zhitnitsky\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The 12 Step Program to Realizing Your Java Monitoring is Flawed - Java Code Geeks","description":"What are some of the biggest problems with the current state of Java monitoring? Errors in production are much like drunk texting. You only realize","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html","og_locale":"en_US","og_type":"article","og_title":"The 12 Step Program to Realizing Your Java Monitoring is Flawed - Java Code Geeks","og_description":"What are some of the biggest problems with the current state of Java monitoring? Errors in production are much like drunk texting. You only realize","og_url":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2016-08-04T04:00:22+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Alex Zhitnitsky","twitter_card":"summary_large_image","twitter_creator":"@overopshq","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Alex Zhitnitsky","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html"},"author":{"name":"Alex Zhitnitsky","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/7cb10ac83aff923b5a76862069c27065"},"headline":"The 12 Step Program to Realizing Your Java Monitoring is Flawed","datePublished":"2016-08-04T04:00:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html"},"wordCount":1469,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html","url":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html","name":"The 12 Step Program to Realizing Your Java Monitoring is Flawed - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2016-08-04T04:00:22+00:00","description":"What are some of the biggest problems with the current state of Java monitoring? Errors in production are much like drunk texting. You only realize","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2016\/08\/12-step-program-realizing-java-monitoring-flawed.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"The 12 Step Program to Realizing Your Java Monitoring is Flawed"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/7cb10ac83aff923b5a76862069c27065","name":"Alex Zhitnitsky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8ce5d7ecc8c7467680ad01ee6a39bdbf9a99d62d8611c243669340e8f7405466?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8ce5d7ecc8c7467680ad01ee6a39bdbf9a99d62d8611c243669340e8f7405466?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8ce5d7ecc8c7467680ad01ee6a39bdbf9a99d62d8611c243669340e8f7405466?s=96&d=mm&r=g","caption":"Alex Zhitnitsky"},"description":"Alex is an engineer working with OverOps on a mission to help Java and Scala developers solve bugs in production and rid the world of buggy software. Passionate about all things tech, he is also the co-founder &amp; lead of GDG Haifa, a local developer group. Alex holds a B.Sc from the Technion, Israel's Institute of Technology.","sameAs":["http:\/\/www.takipi.com\/","https:\/\/x.com\/overopshq"],"url":"https:\/\/www.javacodegeeks.com\/author\/alex-zhitnitsky"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/58970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/562"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=58970"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/58970\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=58970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=58970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=58970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}