Grafana作为对我们软件产品进行技术监控的另一种工具

Logicify监视工具系列中的另一篇文章讨论了Grafana。 我们使用此软件工具对内部和外部项目进行可视化和数据分析。 本文对技术总监,开发人员,DevOps,系统管理员,项目经理以及所有相关方都非常有用。


图片


什么是Grafana?


Grafana是一个用于可视化,监视和分析数据的开源平台。 该工具与Graylog相结合,是我们双向监控用户行为和系统性能的系统的一部分 。 Grafana允许用户创建带有面板的仪表板,每个面板在设定的时间段内显示某些指示器。 每个仪表板都是通用的,因此可以针对特定项目进行自定义,也可以考虑任何开发和/或业务需求。


我们的Logicify团队主要将Grafana与Elasticsearch和InfluxDB结合使用,但是该软件工具支持许多其他数据源 (Prometheus,MySQL,Postgres等)。 对于每个数据源,Grafana提供了一个自定义查询编辑器和特殊语法。


Grafana条款


  • 面板是所选指标的基本可视化元素。 Grafana支持带有图形,单一状态,表格, 单击热图和自由文本的面板,以及与官方和社区创建的插件(例如世界地图或时钟)以及也可以可视化的应用程序的集成。 您可以自定义每个面板的样式和格式。 可以将所有面板拖到新位置,重新排列和调整大小。
  • 仪表板 -放置在网格中的一组独立面板,带有一组变量(例如,服务器名称,应用程序和传感器)。 通过更改变量,可以切换仪表板上显示的数据(例如,来自两个单独服务器的数据)。 可以自定义所有仪表板,还可以根据用户需求对其中显示的数据进行分段和分段。 Grafana项目涉及大量的代码开发人员和用户,因此,有大量现成的仪表板可供选择,用于不同类型的数据和源。
  • 在仪表板中,可以使用注释在不同面板中显示特定事件。 注释是通过Elasticsearch中的自定义查询添加的; 在图形上,注释显示为垂直的红线。 将鼠标悬停在注释上时,可以获得事件和标记的描述,例如,跟踪错误代码为5xx的服务器的响应或重新启动系统。 因此,您可以轻松地比较时间,特定事件及其在应用程序中的后果,并检查系统的行为。

在Logicify团队中使用Grafana工具的最佳实践


在内部项目中使用Grafana


对于我们的内部项目物联网 (办公室气候监控解决方案),我们将Grafana连接到时间序列数据库InfluxDB ,以可视化办公室环境的变化并做出相应的响应。 一组传感器可测量我们位于赫尔森(Kherson)办公室每个区域的温度,湿度,大气压力和CO2水平; 这些参数在大型厨房监视器上和在线以Grafana图形的形式收集和可视化。


图片
带有Logicify办公区域的Grafana仪表板


因此,我们不断监视空气质量参数,我们的办公室经理会做出变化:打开窗户,如果二氧化碳水平过高,请打开和关闭空调和加湿器。


图片
具有办公环境的Grafana仪表板


多亏了Grafana中显示的图表和时间序列注释,我们分析了办公室几个月和几个季节的小气候趋势。 我们还使用此工具在大型厨房监视器上可视化了一些有用的小部件和信息(天气预报,货币汇率,内部日历)。


如何在自定义Web应用程序中使用Grafana


Grafana + Graylog


我们使用Graylog工具存储Web应用程序的日志,对其进行管理并在开发阶段和操作阶段监视其性能。 Grafana是一种可将Graylog中存储的杂志转换为可视形式以进行分析和系统监视的工具。 对于我们当前的项目之一,可以将Grafana工具称为用于加载和监视Web应用程序和客户端流性能的用户界面。 Graylog和Grafana工具彼此独立存在,我们没有创建任何特殊的复杂集成工具来将它们彼此连接。 由于Graylog将所有日志数据存储在Grafana的数据源之一Elasticsearch中,因此我们仅使用存储日志的特定Elasticsearch索引将Grafana连接到Graylog。


对于Web应用程序,可以在Grafana中可视化哪些指标?


简单文本日志或错误通知对Grafana并不“有趣”,因为它的主要目的是以图表,图表和表格的形式可视化数据。 我们为Django编写了一个自定义模块,以收集我们希望针对每个已处理请求和网络/员工响应进行跟踪的数据。 数据不仅包括成功/失败状态,还包括一组结构化字段(常规字段和与项目相关的字段),例如:


  • 应用版本
  • 每个请求的唯一标识符
  • 响应时间和状态
  • 错误代码(如果有)
  • 发送请求的IP地址
  • 用户信息(电子邮件,注册用户的用户名,角色,权限)
  • 设备等

Django将用户结构化的分析记录放置在Graylog中,从而将它们保存在单独的流中。 尽管可以使用Graylog内置仪表板将这些数据可视化,但它们的外观不如Grafana仪表板。 因此,我们强制Grafana读取此分析数据并将其可视化。 因此,我们监视应用程序性能并实时和回顾下载数据。


图片


Grafana作为调试工具


Grafana仪表板主要帮助我们调试应用程序。 如果最终客户报告了问题,Grafana使我们有机会将客户/服务器端的错误与实际错误或应用程序逻辑中的空白区分开。 我们在指定的时间段内跟踪由客户端(使用电子邮件地址),应用程序管理员和应用程序本身发起的所有Web请求,并通过排除方法找出原因。


如果我们在加载和应用程序性能图中的仪表板上发现异常,我们还将调试并修复错误。 以下Grafana图示例显示了一段时间内Web请求的响应时间。 对于每个Web请求,我们跟踪最大,最小和平均响应时间。 如果我们看到一个请求花费了太多时间来处理,我们将缩放图表的特定部分并调查问题。


图片
显示Web响应时间的示例Grafana图


另一幅图显示了设定时间段内的系统负载,可用于跟踪流量。 如果我们发现活动异常爆发,例如在下班后或周末,我们将对其进行检查。 例如,由Google抓取工具将网站内容编入索引,或者由恶意僵尸程序扫描我们的系统中的漏洞导致这种峰值。 同样,对每种情况进行调查并据此进行考虑。


图片
示例Grafana图显示应用程序下载


根据某些规则,Grafana具有内置的通知机制(例如,通过电子邮件或通过Slack进行通知)。 我们没有使用Grafana工具的此功能,因为我们在Graylog中配置了所有通知 。 但是,只有在运行程序后才能看到一些系统性能问题,例如,对Web请求的响应时间异常长。 我们不会收到Graylog通知,但是异常会在Grafana图表上清晰可见。 因此,当我们发现某个问题时,这两种工具可以互补:在较高的层次上,我们检查Grafana以了解发生了什么以及为什么,然后使用特定的请求标识符对Graylog进行更深入的研究。


与Graylog(用于已开发和已使用的应用程序)不同,Grafana仅用于已使用的应用程序。 将Grafana用于仍处于开发阶段的应用程序时,唯一的例外是性能测试。 我们使用JMeter模拟系统启动,然后检查Grafana仪表板以了解其反应。


Grafana作为商业智能工具


除了性能跟踪和调试目标之外,Grafana仪表板还是用于制定明智的业务决策的强大工具。 正确配置后(最好与Google Analytics(分析)服务结合使用),Grafana可以以饼图,时间直方图和其他图形元素的形式可视化系统中用户行为的自定义分析。 基于它们,对产品感兴趣的各方可以决定进一步扩展应用程序,添加或删除某些功能以及改善与客户交互的周期。


图片
Grafana仪表板的示例,该示例显示电子商务应用程序中的用户行为


由于上述仪表板更专注于业务,因此开发人员将其用于内部目的,而不是作为一种安全工具来跟踪电子商务应用程序中的客户流:注册,授权,在给定时间段内下的订单。


这是Grafana能够提高Web应用程序可用性的2个现实项目。


  • 在Grafana的帮助下,我们会定期监视系统中定期订单的状态并过滤失败的订单。 这些订单基于订阅,即每月在系统中生成,并且钱自动从客户的银行帐户中扣除。 有时付款失败(资金不足/拒绝金融机构),然后系统管理员检查情况并联系客户以手动重新生成订单。 因此,看不到一个单一的命令; 客户和供应商都满意。
  • 使用使用Grafana为电子商务应用程序创建的报告,我们发现,尽管他们已经在购物篮中,但仍有很大一部分新客户离开了结帐页面。 该结论得到Google Analytics(分析)服务报告的支持,因此对结帐过程进行了逐步分析并进行了改进:现在,用户可以单击2下订单。 结果,客户的访客转化率增加了-供应商的利润也增加了。

对于内部和外部项目,Grafana是Logicify团队监视系统的重要组成部分。 该软件工具是开源的,并且拥有大量活跃的开发人员社区。 但最重要的是,我们喜欢灵活性-它支持许多数据源,并易于自定义仪表板和面板。


相关文章:


Source: https://habr.com/ru/post/zh-CN431122/


All Articles