Prometheus提供名为PromDash的看板生成器(https://github.com/prometheus/ promdash)。然而,它已被Grafana弃用,所以没有必要在集群中运行它。
Grafana(http://grafana.org/)是查询和时间序列指标可视化的主要工具之一。它具有交互式和可编辑的图形,并支持多种数据源。Graphite、Elasticsearch、InfluxDB、OpenTSDB、KairosDB,以及最重要的Prometheus都支持开箱即用。如果这还不够,则可以通过插件添加其他数据源。Grafana是一个真正丰富的用户界面,已经确立了自己的市场领导地位。最重要的是,它是免费的。
下面创建一个grafana服务:
一会儿后,副本的状态应该处于正在运行中:
service ps命令的输出如下(为简洁起见,删除了ID):
现在服务正在运行,可以打开UI了。
给Windows用户的说明
Git Bash可能不支持open命令,如果真是这样,则请执行docker-machine ip <SERVER_NAME>来查找机器的IP,然后直接在浏览器里打开URL,比如上面的命令应该被替换为docker-machine ip swarm-1,如果命令输出的是1.2.3.4,则应该在浏览器里打开http://1.2.3.4:3000/。
你将看到登录界面。默认的用户名和密码是admin,登录界面。
用户名、密码以及许多其他设置都可以通过配置文件和环境变量进行调整。由于在Docker容器中运行Grafana,所以环境变量是更好的选择。有关更多信息,请访问官方文档的配置(http://docs.grafana.org/installation/configuration/)部分。
我们应该做的第一件事是添加Prometheus作为数据源。
请点击位于屏幕左上角的“Grafana”图标,选择“数据源”,然后点击“+Add data source”按钮。
我们将它命名为Prometheus,并为Type选择相同的名称。输入http:// prometheus:9090作为Url并点击“Add”按钮。从现在开始,可以查看和查询Prometheus中存储的任何指标。
现在来创建第一个看板。
请点击“Grafana”图标,选择“Dashboards”,然后点击“+New”。在屏幕的左上方有一个绿色的竖直按钮,点击它,选择添加面板,然后选择图形。你将看到包含测试指标的默认图。除非你想欣赏漂亮的线条,否则它不是非常有用。我们将Panel数据源从默认更改为Prometheus。输入irate(node_cpu {mode="idle"} [5m])作为查询。一会儿后,你会看到一个CPU使用率的图。
默认情况下,图表显示6个小时的数据。这种情况下,如果你是一个慢读者,那可能没有问题,毕竟你花了那么长时间来创建prometheus服务并阅读后面的文本。我们假设你只有半个小时的数据,并希望更改图表的时间轴。
请单击位于屏幕右上角的“Last 6 hours(最近6个小时)”按钮,然后单击“Last 30 minutes(最近30分钟)”链接,如图10-5所示。
图10-5 从Prometheus获取的CPU使用率的Grafana图
有很多选项可以自定义,以使图形适合你的需求,我会把这些任务留给你继续探索其提供的不同选项。
如果像我一样懒,那么你可能要跳过创建需要的所有图表和看板并使用别人的劳动成果。幸运的是,Grafana社区非常活跃,并且由其成员制作了不少看板。
请在grafana.net(http://grafana.net)中打开dashboards(https://grafana.net/ dashboards)部分。你会在左侧看到一些过滤器,以及常规的搜索栏。例如,可以搜索node exporter。
我鼓励你稍后再探索所有提供的node exporter看板。现在选择Node Exporter Server Metrics(https://grafana.net/dashboards/405)。在页面内,你会看到“Download Dashboard”按钮。使用它来下载带看板定义的JSON文件。
现在回到grafana服务。
给Windows用户的说明
Git Bash可能不支持open命令,如果真是这样,则请执行docker-machine ip <SERVER_NAME>来查找机器的IP,然后直接在浏览器里打开URL,比如上面的命令应该被替换为docker-machine ip swarm-1,如果命令输出的是1.2.3.4,则应该在浏览器里打开http://1.2.3.4:3000/。
再次打开隐藏在Grafana图标后面的Dashboards选项并选择Import。点击“Upload .json file”按钮并打开刚刚下载的文件。我们将保留Name不变并选择Prometheus作为数据源。最后,点击“Save&Open”按钮完成。
奇迹发生了,我们得到了属于同一个节点相当多的图表。但是,图表大多是空的,因为默认持续时间是7天,而我们只有1个小时左右的数据。将时间范围更改为例如1小时。图表开始变得有意义。
让我们稍微调整一下,添加更多的服务器。请单击所选节点的IP/端口,然后再选择其他节点。可以看到每个节点的指标,如图10-6所示。
图10-6 Grafana仪表板,其中包含来自Prometheus的选定节点的指标
当想要比较所选节点之间的指标时,这个仪表板很有用,但我认为,如果想关注单个节点,那么它就不那么有用了。这种情况下,Node Exporter服务器统计信息(https://grafana.net/dashboards/704)仪表板可能是更好的选择。请按照相同的步骤将其导入grafana服务。
你仍然可以更改仪表板中显示的节点(界面左上角的IP)。但是与其他仪表板不同,这个仪表板一次只显示一个节点。
在特定情况下,这两个仪表板都非常有用。一方面,如果要比较多个节点,那么Node Exporter服务器指标(https://grafana.net/dashboards/405)可能是更好的选择。另一方面,当想专注于特定的服务器时,Node Exporter服务器统计信息(https://grafana.net/dashboards/704)仪表板可能是更好的选择。你应该导入其他Node Exporter仪表板并尝试使用它们,可能会发现它们比我建议的更有用。
你迟早需要创建自己的仪表板,以便更好地满足自己的需求。即使在这种情况下,我仍然建议你先导入社区制作的一个看板并修改它,而不是从头开始。也就是说,在你更熟悉Prometheus和Grafana之前,请参考图10-7。
图10-7 带有Prometheus单节点指标的Grafana仪表板
我们将创建的下一个仪表板来自Elasticsearch的日志,让我们先设置日志记录服务。我们不会详细介绍日志记录服务,因为已经在第9章学习过:
在开始logstash服务之前,应该确认elasticsearch正在运行:
service ps命令的输出应该和下面的输出类似(为简洁起见,删除了ID和错误端口列):(www.xing528.com)
现在可以创建一个logstash服务:
首先确认它正在运行,然后再转到前面的日志记录服务:
serivce ps命令的输出应该和下面的输出类似(为简洁起见,删除了ID和ERROR PORTS列):
最后还会创建一个logspout服务:
并确认它正在运行:
serivce ps命令的输出应该和下面的输出类似(为简洁起见,删除了ID和ERROR PORTS列):
既然日志记录是可操作的,那么应该将Elasticsearch添加为另一个Grafana数据源。
给Windows用户的说明
Git Bash可能不支持open命令,如果真是这样,则请执行docker-machine ip <SERVER_NAME>来查找机器的IP,然后直接在浏览器里打开URL,比如上面的命令应该被替换为docker-machine ip swarm-1,如果命令输出的是1.2.3.4,则应该在浏览器里打开http://1.2.3.4:3000/。
请点击Grafana图标,然后选择数据源,将会打开一个带有当前定义过的数据源的界面(目前只有Prometheus)。点击“+Add data source”按钮。
我们将使用Elasticsearch作为名称和类型。Url应该是http://elasticsearch:9200,索引名称的值应该设置为"logstash-*"。完成后点击“Add”按钮。
现在可以创建,更准确来说是导入第三个仪表板。这一次将导入一个主要关注Swarm服务的仪表板。
请打开Docker Swarm和容器概述(https://grafana.net/dashboards/609)仪表板页面,下载它并将其导入Grafana。在Grafana的导入看板界面,将被要求设置一个Prometheus和两个Elasticsearch数据源。点击“Save & Open”后,将看到一个仪表板,其中一般会包含与Docker Swarm和容器有关的指标。
你会注意到仪表板中的一些图形是空的,这不是错误,而是表明服务不准备被监控。让我们用仪表板所期望的一些额外信息来更新它们。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。