不论你是Linux系统管理员还是DevOps工程师,你都会花很多时间来追踪服务的性能指标。
有时,你可能会遇到运行速度非常慢的实例,但你找不到任何引发问题的线索。有时,你可能往实例发送top或者htop等远程命令却得不到任何响应。有时,你可能遇到一些简单的性能瓶颈,但你却无法用简单快捷的方式识别它。
假如我们拥有完整的仪表板可以帮助我们跟踪一般的性能指标以及单个进程,事情会变得怎么样呢?参考:http://grafana.devconnected.com/d/nZMDMoiZk/grafana-top?orgId=1&refresh=5s。
本教程的目标是为Linux系统管理员构建一个完整的监控仪表板。
你将学到什么?
现在我们已经对将要学习的所有内容进行了概述,接下来让我们先介绍一下Unix系统目前存在的内容。
Unix进程基础监控
Top命令提供了系统性能指标的一个概览,例如当前的 CPU使用率,当前的 内存使用率,以及每个进程的一些指标。Top命令是系统管理员最经常使用的命令,当发现系统有性能瓶颈时,第一个运行的命令就是它。
Top命令可读性已经比较好了,不过还有个命令可读性更好,那就是 htop。Htop提供与top相同的功能集(CPU,内存,运行时间……),但是以更丰富的色彩提供。Htop也提供反应当前系统使用率的 仪表。
有了这两个命令,为什么我们还需要构建其他方式来监控进程呢?主要的原因是 系统可用性:如果系统过载,你可能无法对实例进行物理或远程访问。通过外部化进程监控,你可以在不访问机器的情况下分析导致停机的原因。
另一个原因就是进程会频繁地被创建和杀死,通常就是内核自身。这种情况下,运行top命令就太慢了,以至于你获取不到任何信息用来排查系统引发性能问题的原因,然后你将深入到内核日志中进行排查。而通过监控仪表盘,你可以进行简单地回溯,查看引发问题的进程是哪一个。
既然你已经知道我们为什么要构建这个仪表板,那么让我们看一下构建它的整体架构。
监控架构
有时,你可能会遇到运行速度非常慢的实例,但你找不到任何引发问题的线索。有时,你可能往实例发送top或者htop等远程命令却得不到任何响应。有时,你可能遇到一些简单的性能瓶颈,但你却无法用简单快捷的方式识别它。
假如我们拥有完整的仪表板可以帮助我们跟踪一般的性能指标以及单个进程,事情会变得怎么样呢?参考:http://grafana.devconnected.com/d/nZMDMoiZk/grafana-top?orgId=1&refresh=5s。
本教程的目标是为Linux系统管理员构建一个完整的监控仪表板。
你将学到什么?
了解目前Unix系统中监控进程性能最好的方式;
学会怎么安装Prometheus v2.9.2、Pushgateway v0.8.0和Grafana v6.2;
构建一个简单的bash脚本将监控数据暴露给Pushgateway;
构建一个完整的Grafana仪表盘,包括最新的面板,如'Gauge'和'Bar Gauge';
进阶:实现ad-hoc过滤器,用以跟踪单个进程或实例。
现在我们已经对将要学习的所有内容进行了概述,接下来让我们先介绍一下Unix系统目前存在的内容。
Unix进程基础监控
Top命令提供了系统性能指标的一个概览,例如当前的 CPU使用率,当前的 内存使用率,以及每个进程的一些指标。Top命令是系统管理员最经常使用的命令,当发现系统有性能瓶颈时,第一个运行的命令就是它。
Top命令可读性已经比较好了,不过还有个命令可读性更好,那就是 htop。Htop提供与top相同的功能集(CPU,内存,运行时间……),但是以更丰富的色彩提供。Htop也提供反应当前系统使用率的 仪表。
有了这两个命令,为什么我们还需要构建其他方式来监控进程呢?主要的原因是 系统可用性:如果系统过载,你可能无法对实例进行物理或远程访问。通过外部化进程监控,你可以在不访问机器的情况下分析导致停机的原因。
另一个原因就是进程会频繁地被创建和杀死,通常就是内核自身。这种情况下,运行top命令就太慢了,以至于你获取不到任何信息用来排查系统引发性能问题的原因,然后你将深入到内核日志中进行排查。而通过监控仪表盘,你可以进行简单地回溯,查看引发问题的进程是哪一个。
既然你已经知道我们为什么要构建这个仪表板,那么让我们看一下构建它的整体架构。
监控架构