learn.lianglianglee.com/专栏/分布式链路追踪实战-完/21 结束语 未来的监控是什么样子?.md.html
2022-05-11 18:57:05 +08:00

625 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>21 结束语 未来的监控是什么样子?.md.html</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/专栏/分布式链路追踪实战-完/00 分布式链路追踪实战.md.html">00 分布式链路追踪实战.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/01 数据观测:数据追踪的基石从哪里来?.md.html">01 数据观测:数据追踪的基石从哪里来?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/02 系统日志:何以成为保障稳定性的关键?.md.html">02 系统日志:何以成为保障稳定性的关键?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/03 日志编写:怎样才能编写“可观测”的系统日志?.md.html">03 日志编写:怎样才能编写“可观测”的系统日志?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/04 统计指标:“五个九”对系统稳定的真正意义.md.html">04 统计指标:“五个九”对系统稳定的真正意义.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/05 监控指标:如何通过分析数据快速定位系统隐患?(上).md.html">05 监控指标:如何通过分析数据快速定位系统隐患?(上).md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/06 监控指标:如何通过分析数据快速定位系统隐患?(下).md.html">06 监控指标:如何通过分析数据快速定位系统隐患?(下).md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/07 指标编写:如何编写出更加了解系统的指标?.md.html">07 指标编写:如何编写出更加了解系统的指标?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/08 链路监控:为什么对于系统而言必不可少?.md.html">08 链路监控:为什么对于系统而言必不可少?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/09 性能剖析:如何补足分布式追踪短板?.md.html">09 性能剖析:如何补足分布式追踪短板?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/10 链路分析:除了观测链路,还能做什么?.md.html">10 链路分析:除了观测链路,还能做什么?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/11 黑白盒监控:系统功能与结构稳定的根基.md.html">11 黑白盒监控:系统功能与结构稳定的根基.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/12 系统告警:快速感知业务隐藏问题.md.html">12 系统告警:快速感知业务隐藏问题.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/13 告警质量:如何更好地创建告警规则和质量?.md.html">13 告警质量:如何更好地创建告警规则和质量?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/14 告警处理:怎样才能更好地解决问题?.md.html">14 告警处理:怎样才能更好地解决问题?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/15 日志收集ELK 如何更高效地收集日志?.md.html">15 日志收集ELK 如何更高效地收集日志?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/16 指标体系Prometheus 如何更完美地显示指标体系?.md.html">16 指标体系Prometheus 如何更完美地显示指标体系?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/17 链路追踪Zipkin 如何进行分布式追踪?.md.html">17 链路追踪Zipkin 如何进行分布式追踪?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/18 观测分析SkyWalking 如何把观测和分析结合起来?.md.html">18 观测分析SkyWalking 如何把观测和分析结合起来?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/19 云端观测ARMS 如何进行云观测?.md.html">19 云端观测ARMS 如何进行云观测?.md.html</a>
</li>
<li>
<a href="/专栏/分布式链路追踪实战-完/20 运维集成:内部的 OSS 系统如何与观测相结合?.md.html">20 运维集成:内部的 OSS 系统如何与观测相结合?.md.html</a>
</li>
<li>
<a class="current-tab" href="/专栏/分布式链路追踪实战-完/21 结束语 未来的监控是什么样子?.md.html">21 结束语 未来的监控是什么样子?.md.html</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content" style="max-width: 960px; margin: 0 auto;
overflow-x: auto;
overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><h1>21 结束语 未来的监控是什么样子?</h1>
<p>到这里,专栏的学习就进入尾声了,感谢你一直以来的学习,和我一起走到了这里。</p>
<h3>课程回顾</h3>
<p>在整个课程中,我带你认识了<strong>可观测性的重要性</strong><strong>如何将告警与可观测性相结合</strong>,以及<strong>如何将可观测性落地到项目中</strong>。这些内容,我将它们一共分成了 3 个模块:</p>
<p>在“<strong>模块一:可观测性原理</strong>”,我介绍了可观测性中的 3 大支柱:日志、统计指标和链路追踪,以及如何将它们结合到你的业务代码开发中,让你的程序更加具有可观测性。高度定制化的可观测性,可以让你更加了解你的程序,出现问题时也可以根据观测中的数据,快速定位问题产生的原因,从而解决问题。</p>
<p>在“<strong>模块二:告警体系与可观测性</strong>”,我带你了解了如何快速感知业务中可能发生的问题,以及问题发生后一般是怎样的处理流程。通过这部分学习,你可以了解到怎么发现问题,发出告警,告警后如何保持高效的处理,并将告警流程实现闭环。</p>
<p>在“<strong>模块三:可观测性的实践应用</strong>”,我列举了目前市面上比较常见的可观测性工具,比如日志系统 ELK、统计指标系统 Prometheus、链路追踪系统 Zipkin和SkyWalking以及像 ARMS 这样的云观测系统。最后我还带你了解了怎样将可观测系统和你公司内部的系统更好地结合,将可观测性与告警落地到你的业务开发、项目使用上。</p>
<h3>未来展望</h3>
<p>随着技术的更新迭代,云原生倡导的范式给开发和运维的方式带来巨大的冲击,比如<strong>微服务可以让开发同学更关注自己服务本身的业务DevOps 利用持续交付、持续集成让开发和运维的协作模式更加一体化等</strong>。分布式系统架构不仅使我们的工作变得高效,它也使系统更难被观测,出现问题时,分布式系统架构寻找问题产生的原因往往需要花费高额的时间成本。</p>
<p>随着分布式系统架构的普及,开发和运维人员对可观测性越来越重视。无论系统架构怎样变化,唯一不变的是需要对它们进行观测。我相信随着可观测性的普及,会有越来越多的人参与到可观测性系统的开发上。对于业务开发人员来说,了解可观测性中每一个概念的关键原理,并结合公司内部的可观测性框架来编写高度定制化、可观测的代码,让你更快解决问题。</p>
<p>现在可观测中,因为目前没有一套完整的成体系化的内容,所以可以看到现在很多有较大规模的厂商都在做不同的尝试。</p>
<p><strong>在数据规范协定中</strong>OpenTelemetry 就在尝试将日志、统计指标与链路这 3 个概念融合,让其拥有统一的数据格式;<strong>在告警问题归因上</strong>,阿里巴巴的鹰眼就在尝试利用可观测性中的数据,做问题的归因判断,减少开发人员发现问题的时间。</p>
<p>我相信可观测性在未来肯定还会有更多变化与改进,但这些变化和改进的最终目的<strong>都是服务开发人员的</strong>,都是用来帮助开发人员定位和解决问题的。<strong>计算机再强大,也离不开开发人员。</strong></p>
<h3>总结</h3>
<p>可观测性中的每一个环节都是一套完整的系统,在学习可观测性的过程中,你可以了解到系统之间的交互时最通用的底层实现逻辑。我的课程除了带给你所需要的知识外,更希望能给你建立一个知识框架,你可以依据这个框架去学习更多的知识,最终形成你自己的知识体系。</p>
</div>
</div>
<div>
<div style="float: left">
<a href="/专栏/分布式链路追踪实战-完/20 运维集成:内部的 OSS 系统如何与观测相结合?.md.html">上一页</a>
</div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"70997742fd463cfa","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}' crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>