littlemanco / magento-prometheus
在 Prometheus 上暴露一些 Magento 的服务级别指标
Requires
- jimdo/prometheus_client_php: v0.9.0
Suggests
- fontis/composer-autoloader: Allows the use of the third party prometheus library with Magento
This package is not auto-updated.
Last update: 2024-09-23 06:29:35 UTC
README
项目大纲
项目目标
- 暴露一些关于商店的特定有限指标,用于诊断问题
- 提供一个模型来扩展暴露的指标,以将任意额外的指标写入端点
本项目旨在使检查一个或多个运行的 Magento 商店变得更加容易。
范围
所有指标应按实例收集,而不是按整个服务的健康状态收集。这应通过查询此类收集的聚合来计算。
类似工作
作者明白,很少有其他类似的工作。
合理性
随着基础设施(如 Kubernetes、Docker、Prometheus 等)的最近发展,现在的基础设施足够聪明,可以根据应用程序提供的信息自行做出更改。然而,如果应用程序不提供这些信息,则基础设施无法做出明智的决定。
局限性
摘要
兼容性
Magento 兼容性
安装
要求
- PHP
- PHP APCu
步骤
安装此扩展的首选方法是使用 Composer。如果您是初学者,您可以在以下 URL 中了解更多信息
https://github.com/Cotya/magento-composer-installer
此扩展可通过 Packagist 获得。您可以使用以下命令使用 composer 安装它
$ composer require sitewards/magento-prometheus
注意:要使用它,您需要确保 composer 自动加载器对 Magento 可用。此包推荐以下扩展来完成此操作
https://github.com/fontis/composer-autoloader
这就完成了!您已经准备好了。
使用
这将在 /metrics 新增一个端点,暴露商店的指标信息。
但此信息是私有的!
我同意。我的建议是在 .htaccess 中将其阻止;我认为将其放入管理器不是一个好主意。端点几乎在任何情况下都应该正常工作。
我有一个与 /metrics 冲突的 URL
这不好!创建一个问题,我会看看是否可以使其可配置。
扩展
您可以从自己的代码中向 Prometheus 添加自定义指标。为此,请使用 Magento 事件 API 触发事件。指定一个合适的名称,并在必要时添加额外的数据,例如一个标识字符串。
Mage::dispatchEvent('namespace_extension_custom_event_name', ['name' => $this->sIdentificationString]);
在您的 Magento 项目中创建一个扩展,以处理发送到 Prometheus 的指标。定义一个监听您想要跟踪的所有事件的观察器。您可以监听原生 Magento 事件或定义您自己的自定义事件
// config.xml
<frontend>
<events>
<namespace_extension_event_name>
<observers>
<namespace_extension_event_name>
<class>Namespace_Extension_Model_Observer</class>
<method>pushMetric</method>
</namespace_extension_event_name>
</observers>
</sitewards_importer_step_process>
</events>
</frontend>
在观察器类中,使用方便的指标工厂创建一个 push-metric 调用。
public function checkpointCache(Varien_Event_Observer $oEvent) {
Mage::getModel('littlemanco_prometheus/metricFactory')
->getCounter(
'<metric_name>',
[
'metric_namespace' => '<vendor_extension>,'
'metric_help' => '<Description of the metric>',
'label_titles' => ['<label>']
]
)
->increment(1, [$oEvent->getType()]);
}
在上面的示例中,将 `<metric_name>` 替换为有意义的名称,例如 `'cache_flush_total'`,以描述所计数值。将 `<Description of the metric>` 替换为将有助于理解指标的描述(例如,'缓存被清空的总次数')。将 `<label>` 替换为在 Prometheus 数据可视化中进行排序的有意义的标签。
持续支持
不会有。建议如果您对此感兴趣,可以将其分叉并维护。坦白说,我的兴趣是短暂的,除非有专业赞助,否则我不会保持太久。
对我来说,这是一次学习使用Magento和Kubernetes的经历。
谢谢
- Matthew Beane (https://twitter.com/aepod)
- Winston Nolan
贡献
我们始终欢迎贡献!没有什么太小,从打开一个问题开始是最好的起点。