php语言使用statsd统计指标模板

statsd可进行数据的简单计算,作为数据中间层服务,支持原值gauge,时间值timing,计数值counter等数据类型,用于常用数据统计场景。

php语言推送udp数据到statsd服务代码示例如下:

/** 标准gauge统计,用于记录固定值
     * metric: 指标名
     * value: 固定值
     * ags: 用户自定义tags,用于指标查询展示
     */
    public static function Gauges($metric, $value, $tags = null)
    {
        self::sendMetric("g", $metric, $value, $tags);
    }

    /**
     * 标准counter统计,用于常规打点计数(每次增加$value)
     * metric: 指标名
     * value: 计数值
     * ags: 用户自定义tags, 用于指标查询展示
     */
    public static function Counters($metric, $value, $tags = null)
    {
        self::sendMetric("c", $metric, $value, $tags);
    }

    /** 标准timings统计,用于记录时间值
     * metric: 指标名
     * value: 时间值(ms)
     * ags: 用户自定义tags,用于指标查询展示
     */
    public static function Timings($metric, $value, $tags = null)
    {
        self::sendMetric("ms", $metric, $value, $tags);
    }

    /**
     * 发送统计指标到statsd
     * type: 数据类型,c/ms/g/s
     * metric:指标名
     * value:指标值
     * tags:用户自定义tags,用于指标查询展示
     */
    public static function sendMetric($type, $metric, $value, $tags = null)
    {
        $lines = array();
        $lines[] = $metric . ':' . $value;
        $lines[] = $type;

        $tags["_project_"] = 'www.xiaoxinxiaoxina.com'; //项目名(域名),用于指标查询展示
        $tags["_instance_"] = $_SERVER['SERVER_ADDR']; //服务器地址,用于指标查询展示
        $new_tags = array();
        foreach ($tags as $k => $v) {
            $new_tags[] = "{$k}:{$v}";
        }
        $lines[] = "#" . implode(",", $new_tags);
        $message = implode("|", $lines);
        $statsdServer = array("10.10.10.10", "8125");
        $statsdSocket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
        socket_sendto($statsdSocket, $message, strlen($message), 0, $statsdServer[0], $statsdServer[1]);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值