Elixir 性能和监控工具之旅
Elixir 性能和监控工具之旅
原文:https://medium.com/hackernoon/a-tour-of-elixir-performance-monitoring-tools-aac2df726e8c

2017 年 4 月 23 日更新:AppSignal 已经退出测试版,Scout 发布了一个测试版代理。
你正在钻研长生不老药,并且即将发布你的第一个长生不老药应用。您如何在生产中分析和监控它?
下面是今天在灵药生态系统中可用的一个游览。请注意,许多工具都是基于 Erlang 的,您可以通过 Elixir 访问这些工具。
度量收集
通用指标收集是应用程序的传感器阵列:这里是用户注册的计数器,那里是收集关键 HTTP 调用的平均调用时间,等等。这些服务帮助收集和聚合指标,并将指标发送给另一个服务(例如:Graphite、InfluxDB、Datadog 等)进行可视化和警报。
外测速仪
Ulf Wiger 和 Magnus Feuer 的 Exometer 是事实上的 Erlang 仪器包。Exometer 有几个部分:
- 记录指标:您可以告诉 Exometer 更新值,并让 Exometer 以您选择的时间间隔运行函数来记录值。
- 存储指标:原始指标存储在 Beam VM 的 via ETFs 中。
- 报告指标:指标被聚合,然后转发到外部系统,如 Graphite、AMNQ 或 StatsD。
下面这个由# Key will be: prefix.dev.timers.timed.function @timed(key: "timed.function") def function_that_is_timed do OtherModule.slow_method end
波束资源使用
有几个工具可以监控 BEAM VM 的资源使用情况,它运行您的 Elixr 和 Erlang 应用程序。BEAM 感觉上更像一个操作系统,而不是典型的虚拟机,它的监控工具有与之匹配的复杂性。
观察者

默认的 goto 是 Observer :它可能已经安装在你的电脑上了。尝试通过 iex 启动 Observer:
iex(9)> :observer.start
观察者也可以连接到远程系统。
袋熊
一个全功能的操作和维护框架, Wombat 是通过 Erlang Solutions 提供的商业软件。
侦察
Recon 是 Erlang Recon 应用程序中的一个模块。该模块提供对 Beam VM 的高级资源使用信息的访问。
例如:
iex(11)> :recon.info(self)[meta: [registered_name: [],
memory_used: [memory: 143208, message_queue_len: 4, heap_size: 10958,
total_heap_size: 17730,
garbage_collection: [max_heap_size: %{error_logger: true, kill: true,
size: 0}, min_bin_vheap_size: 46422, min_heap_size: 233,
...
应用程序监控
应用程序性能监控(APM)服务检测您的 Elixir 函数调用,并通过事务跟踪提供性能分析。大多数 APM 工具都是以监控 web 请求和一般性能监控为导向的。
AppSignal
AppSignal 有一个官方支持的应用监控代理用于 Elixir。
侦察
在我的日常工作中,我们已经发布了一个针对 Elixir 的应用程序监控代理。了解更多。
新遗迹
New Relic 没有官方支持的代理,但是有几个社区开发的代理可用:
-
new _ relic—
new_relic模块的作者( 21:52:36.972711 #PID<0.88.0> String.strip/2 --> "es"厄尔利
Elyberly 提供了一个 GUI 界面,用于调试和分析 Erlang 和 Elixir 应用程序。除了跟踪之外,Elyberly 还收集关于进程和内存使用的信息。这并不是说 Elyberly 不打算跟踪生产系统,因为它没有过载保护。

Plataformatec 的人有一个很棒的《爱丽舍宫的入门指南。
沙蚤
Redbug 是 Erlang 的一个生产安全调试/跟踪工具。Roberto Aloi 在他的博客上有一个很棒的红虫教程。
DBG
DBG 是一个用于追踪的 Erlang 模块。DBG 周围还有一种薄薄的仙丹包装纸,叫做… DBG 。
异常监控
许多现有的异常监控服务已经支持 Elixir。Elixir 和 Erlang 对异常有独特的理解,因此了解每个服务的异常逻辑如何满足您的需求非常重要。
一些选项:
我的观点 :我更喜欢使用他们在生产中监控的语言的服务,因为他们对监控的痛苦有第一手的经验。HoneyBadger 在他们自己的生产应用程序中有使用酏剂的经验。



