背景
在过去的五年里,我们的网站有了长足进步。我们的技术社区从一体式应用的处理社区成长为微服务的架构社区。我们服务的变化和成长给应用可视性带来了新的挑战。在今天的博文里,我们将带来一些指导性原则,并展示我们用来检测和可视化服务生态系统的技术。从今天开始,我们会将服务监测和可视化技术的各个部分开源呈现!
原则
一些指导性原则如下:
-
尽早重视易用性。基于微服务架构,采集大量的信号变的非常容易,一个好的用户界面必须能够从信号中提取信息。
-
分辨并且呈现指标中最重要的方面。我们都认为,人类只能在同一时间有效处理很少的几项工作。因此,任何关于指标的问题都应该在有限次数内解决。例如:
-
Top-N API指标依据潜在因素分类或者每周更换 。
-
自动问题监测。inspect工具能够展现明显的系统问题。
-
-
应用从一开始就应该有默认的良好指标呈现。我们保证在我们的标准应用器中有好的监测,我们的dashboard中包括下面的指标:
-
数据库
-
Hosts 和containers
-
HTTP/REST结束点的性能指标
-
JVM用来运行服务部件的VM数据
-
-
警告应简洁且相关度高。我们监测了大量警告发生时的指标,目的就是提高使用的性能,避免对警告没有相应措施。
-
警告应该迅速,且被立刻响应。
-
警告出现时应该是异常事件。
-
所有警告都应需要人工智能处理。
-
所有警告都应具有复写性。
-
应用
在上述原则之下,我们在Square网站使用的应用有:
-
Appdash。使用该应用可以快速得到你的应用的信息,包括:
-
运行信息,比如哪些主机正在运行,什么释放掉了等信息都可以得到
-
应用依赖的几何环境
-
来自你的应用程序的事件和异常
-
容量建模
-
-
MetricsDashboard。使用该应用,你可以查看所有平台和应用的指标。下面是 metricsdashboard UI 数据库的表盘示例。
-
Presidio。它是一个基于Elasticsearch的日志搜索应用。它提供给应用开发者一个界面,可以轻松找到可能会导致错误的模式,或者帮助开发者在多服务的情况下追踪一个事件。
-
Equilibrium。它是我们下一代的提醒系统,正在迅速代替 Nagios 底层构造。Equilibrium 易于使用,有更好的可信度和平衡性。 它受我们使用 Nagios 和为其他公司工作经验的影响,也符合现在的开源趋势。
现在,我们开源系统中看起来小但却特别重要的一个工程:inspect。inspect是我们用来收集Linux、MySQL、和PostgreSQL指标的库的集合。该工程同时也提供了Linux的命令行工具,可以进行基本的问题检测。
结束语
我们希望inspect能帮助大家,希望这篇博文能够让大家理解我们在Square中用到的监测和警告系统。我们会在后续的博文中详细介绍每个系统。一如既往,请到 https://corner.squareup.com/ 查看***更新