edisonlabs/metrics

用于收集指标的 PHP 库。

1.0.0-alpha2 2018-08-14 14:58 UTC

This package is auto-updated.

Last update: 2024-09-23 02:02:01 UTC


README

Build Status Coverage Status

指标收集器

概述

指标收集器是一个简单的库,提供了基类以方便扩展和收集自定义指标。

用法

此库默认不提供任何指标。要创建新的指标,请 创建一个 Composer 包,然后添加对这个包的依赖。

composer require edisonlabs/metrics

现在创建扩展 edisonlabs/metrics 类的指标类。

示例:PHP 文件的数量。

// src/EdisonLabs/Metric/NumberOfPhpFiles.php

namespace EdisonLabs\Metric;

use EdisonLabs\Metrics\Metric\AbstractMetricBase;

class NumberOfPhpFiles extends AbstractMetricBase
{
    public function getName()
    {
        return 'Number of PHP files';
    }

    public function getDescription()
    {
        return 'The total number of PHP files';
    }

    public function getMetric()
    {
        // Put the logic to calculate the total of PHP files here.
        // ..

        // Random example.
        return rand(10, 50);
    }
}

composer.json 中配置自动加载

"autoload": {
    "psr-4": {
        "EdisonLabs\\Metric\\": "src/EdisonLabs/Metric"
    }
}

重新创建 Composer 自动加载器

composer dump-autoload

收集指标

有两种方式可以收集指标:程序化和命令行。

程序化

// collector.php

use EdisonLabs\Metrics\Collector;

$date = strtotime('now');
$config = array();

$collector = new Collector($date, $config);
$metrics = $collector->getMetrics();

命令

该命令位于 vendor/bin/metrics。将 vendor/bin 目录包含在系统的 $PATH 中,以便在任何地方运行此命令。

输入 metrics --help 以查看所有可用选项。

保存指标

创建数据存储类以保存您的指标

// src/EdisonLabs/Metric/Datastore/SqLite.php

namespace EdisonLabs\Metric\Datastore;

use EdisonLabs\Metrics\Metric\Datastore\AbstractMetricDatastore;

class SqLite extends AbstractMetricDatastore
{
    public function getName()
    {
        return 'SQLite';
    }

    public function getDescription()
    {
        return 'Stores metrics to SQLite';
    }

    public function save()
    {
        $metrics = $this->getMetrics();

        // Put your logic to store the metrics to SQLite here.
        return true;
    }
}

程序化

// datastore.php

use EdisonLabs\Metrics\Collector;
use EdisonLabs\Metrics\DatastoreHandler;

$date = strtotime('now');
$config = array();

$collector = new Collector($date, $config);
$metrics = $collector->getMetrics();

$datastoreHandler = new DatastoreHandler($date, $config);
$datastore = $datastoreHandler->getDatastoreByName('SQLite');
$datastore->setMetrics($metrics);
$datastore->save();

命令

使用 --save 选项列出和保存您的指标。

metrics --save=SQLite

--save 选项接受多个值。

metrics --save=SQLite,MySql,MyCustomDatastore