{
    "componentChunkName": "component---src-templates-note-note-js",
    "path": "/notes/Observability",
    "result": {"data":{"mdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"From monitoring to observability\"), mdx(\"p\", null, \"open source options\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/signoz\",\n    \"title\": \"signoz\"\n  }, \"signoz\"), \" \")), mdx(\"h2\", null, \"Notes from \", mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"https://future.a16z.com/the-case-for-developer-experience\"\n  }, \"https://future.a16z.com/the-case-for-developer-experience\")), mdx(\"p\", null, \"Three pillars of observability\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Logs\",\n    \"title\": \"Logs\"\n  }, \"Logs\"), \"\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Metrics\",\n    \"title\": \"Metrics\"\n  }, \"Metrics\"), \"\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Traces\",\n    \"title\": \"Traces\"\n  }, \"Traces\"), \"\")), mdx(\"p\", null, \"Observability is about building models of your software so you can build software more quickly\"), mdx(\"p\", null, \"But design for complexity-exploring \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/notes/Tools\",\n    \"title\": \"Tools\"\n  }, \"Tools\"), \" \\u2014 which is more about meeting developers where they are \\u2014 means digesting larger parts of the rainforest that are the developer\\u2019s ecosystem.\"), mdx(\"p\", null, \"Case in point: People talk about the pillars of observability as logs, metrics, and traces, instead of about goals like \\u201Cunderstand your system behavior\\u201D or \\u201Ccatch breaking changes!\\u201D \"), mdx(\"p\", null, \"Instead, we need to focus on more interoperability with existing dev tools, as well as on more incremental improvements (yes) that aren\\u2019t a so-called paradigm shift but that actually work with what exists.\"), mdx(\"p\", null, \"developers don\\u2019t actually need to observe every aspect of their systems. Instead, they just want a prioritized view, one that gives them visibility into what matters. Prioritization matters far more than soundness, bugs, or comprehensiveness. \"), mdx(\"h2\", null, \"Observability stack\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Options\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Prometheus + Grafana\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"ELK\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open Telemetry\"))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/LMA-stack\",\n    \"title\": \"LMA stack\"\n  }, \"LMA stack\"), \"\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"All in one\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/datadog\",\n    \"title\": \"datadog\"\n  }, \"datadog\"), \" \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/signoz\",\n    \"title\": \"signoz\"\n  }, \"signoz\"), \" open source\"))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Logs\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/ELK-stack\",\n    \"title\": \"ELK stack\"\n  }, \"ELK stack\"), \"\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Loki\",\n    \"title\": \"Loki\"\n  }, \"Loki\"), \"\"))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Metrics\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Prometheus\",\n    \"title\": \"Prometheus\"\n  }, \"Prometheus\"), \"\"))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Alerts\"))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Log aggregation\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Loki\",\n    \"title\": \"Loki\"\n  }, \"Loki\"), \" - \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/notes/Prometheus\",\n    \"title\": \"Prometheus\"\n  }, \"Prometheus\"), \" for logs\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"ingests logs\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"indexes\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"query language(LogQL) similar to prometheus(PromQL)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"integration with grafana\"))))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Prom tail\", mdx(\"ol\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Agent that is installed in the source.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Log parsing and enriching\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Collects logs and pushes them to Loki\"))), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Prometheus\\n4. What Loki is for logs, prometheus is for metrics\\n5. \")), mdx(\"h3\", null, \"Further reading\"), mdx(\"ol\", {\n    \"start\": 7\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://twitter.com/hibaymj/status/1423426718799470595\"\n  }, \"https://twitter.com/hibaymj/status/1423426718799470595\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.honeycomb.io/wp-content/uploads/2018/07/Honeycomb-Guide-Achieving-Observability-v1.pdf\"\n  }, \"https://www.honeycomb.io/wp-content/uploads/2018/07/Honeycomb-Guide-Achieving-Observability-v1.pdf\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://dl.acm.org/doi/10.1145/3411506.3417602\"\n  }, \"https://dl.acm.org/doi/10.1145/3411506.3417602\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://shopify.dev/changelog\"\n  }, \"https://shopify.dev/changelog\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://medium.com/@gerstenzang/developer-tools-why-it-s-hard-to-build-a-big-business-423436993f1c\"\n  }, \"https://medium.com/@gerstenzang/developer-tools-why-it-s-hard-to-build-a-big-business-423436993f1c\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.akitasoftware.com/blog-posts/why-arent-there-more-programming-languages-startups\"\n  }, \"https://www.akitasoftware.com/blog-posts/why-arent-there-more-programming-languages-startups\")), mdx(\"li\", {\n    parentName: \"ol\"\n  })));\n}\n;\nMDXContent.isMDXComponent = true;","inboundReferences":[{"id":"25c8a702-a158-5ef6-81d9-b7a50940a63b","slug":"Continuity-and-Smoothness"},{"id":"80ce2a13-eeae-54ad-a500-c70bec2d01f5","slug":"resiliency"},{"id":"81b2785a-e791-5d6c-88f9-1279529d09bc","slug":"System-Design"},{"id":"e3d6784e-2ac0-530e-943c-ab577b14b758","slug":"GToolKit"}]}},"pageContext":{"slug":"Observability","node":{"childMdx":{"slug":"Observability"}}}},
    "staticQueryHashes": []}