littlemanco/magento-prometheus

在 Prometheus 上暴露一些 Magento 的服务级别指标

安装: 12

依赖关系: 0

建议者: 0

安全: 0

星标: 5

关注者: 4

分支: 5

类型:magento-module

1.0.0 2017-05-19 12:54 UTC

README

项目大纲

项目目标

  1. 暴露一些关于商店的特定有限指标,用于诊断问题
  2. 提供一个模型来扩展暴露的指标,以将任意额外的指标写入端点

本项目旨在使检查一个或多个运行的 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的经历。

谢谢

贡献

我们始终欢迎贡献!没有什么太小,从打开一个问题开始是最好的起点。

参考资料