myoperator/metrics 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

myoperator/metrics

Composer 安装命令:

composer require myoperator/metrics

包简介

Metrics wrapper that pushes your metrics to StatsD server

README 文档

README

This library serves as a base for application metrics for myoperator PHP based applications.

Dependencies

  • codeasashu/statsd-php (Composer package)
  • php >= 7.2
  • UDP statsd connection

Quick Start

Install this library as composer dependecy in any project you want to add metrics to.

composer require myoperator/metrics

or simple add this to your composer.json

{
    "require": {
        "myoperator/metrics": "^1"
    }
}

Then initialise Metrics instance in your bootstrap script or any init'able script

use MyOperator\Metrics\Metrics;

Metrics::setApplication('your-app-name'); // Your metrics base name
Metrics::setConnection('localhost', 8125); // UDP connection host and port

Then you can get Metrics instance anywhere in your application and can send metrics. For instance, to send timing metrics for a time taking function:

Metrics::getInstance()->startTiming('fn.time');
$this->consumeTime();
Metrics::getInstance()->endTiming('fn.time'); //Same name that you started logging time with

NOTE This repo is extension of source code at https://github.com/codeasashu/statsd-php

To see all documentation, please go through https://github.com/codeasashu/statsd-php documentation and see the availble methods and logging mechanism

Metric Types

Following metric types are supported, and their method names are same as well

Counter

Counter sends a arbitary count of anything, which can only increase by time

for example:

$user->login(); //some method to login user
metrics::getinstance()->count('user.login', 1); //increase user login by 1

counters can be used to log:

  • Number of requests served
  • Tasks completed (user login, invoices generated)
  • Errors or exceptions

Gauge

Gauges are used to metric any arbitary random number which can increase or decrease by time

for example:

$items = $queue->getItems(); //some method to get items in queue
metrics::getinstance()->count('queue.item.count', count($items)); //Send number of items in queue

Gauges can be used to log:

  • Number of items in queues
  • Memory size of cache
  • Number of active process/threads/containers

Timers

Timers forms a very cruitial component for any metrics, add it forms the basis of SLOs. Also, timing can be used to calculate averages, sum etc.

Timing can be recorded in following ways:

Start and Stop based timers

Here, we start the timer and stop when the task is done. This is best suited for cases where we are doing the task in same script.

Metric::getInstance()->startTiming('task.time'); //String for reference
$task->takeTime(); //Time taking task
Metric::getInstance()->endTiming('task.time'); //End the time

Self time calculation

If you want to time your metric yourself, you can do so by using timing method:

$starttime = microtime(true);
$task->takeTime(); //Some time taking task
$timeconsmed = (microtime(true) - $starttime) * 1000;
Metric::getInstance()->timing('task.time', $timeconsmed);

Callback based approach

Metric::getInstance()->time("task.time", function() {
    $task->takeTime(); //Some time taking task
});

统计信息

  • 总下载量: 3
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-10-31

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固