phpdaemon

package
v0.0.0-...-6ade924 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2022 License: GPL-3.0 Imports: 8 Imported by: 0

README

phpDaemon monitoring with Netdata

phpDaemon is an asynchronous server-side framework for Web and network applications implemented in PHP using libevent.

This module collects phpdaemon workers statistics via http.

Requirements

  • phpdaemon with enabled http server.
  • statistics should be reported in json format.

Metrics

All metrics have "phpdaemon." prefix.

Metric Scope Dimensions Units
workers global alive, shutdown workers
alive_workers global idle, busy, reloading workers
idle_workers global preinit, init, initialized workers
uptime global time seconds

Charts

It produces the following charts:

  • Workers in workers
  • Alive Workers State in workers
  • Idle Workers State in workers
  • Uptime in seconds

Configuration

Edit the go.d/phpdaemon.conf configuration file using edit-config from the Netdata config directory, which is typically at /etc/netdata.

cd /etc/netdata # Replace this path with your Netdata config directory
sudo ./edit-config go.d/phpdaemon.conf

Here is an example for 2 instances:

jobs:
  - name: local
    url: http://127.0.0.1:8509/FullStatus

  - name: remote
    url: http://10.0.0.1:8509/FullStatus

For all available options please see module configuration file.

phpdaemon configuration

Instruction from @METAJIJI

For enable phpd statistics on http, you must enable the http server and write an application.

Application is important, because standalone application ServerStatus.php provides statistics in html format and unusable for netdata.

/opt/phpdaemon/conf/phpd.conf

path /opt/phpdaemon/conf/AppResolver.php;
Pool:HTTPServer {
    privileged;
    listen '127.0.0.1';
    port 8509;
}

/opt/phpdaemon/conf/AppResolver.php

<?php

class MyAppResolver extends \PHPDaemon\Core\AppResolver {
    public function getRequestRoute($req, $upstream) {
        if (preg_match('~^/(ServerStatus|FullStatus)/~', $req->attrs->server['DOCUMENT_URI'], $m)) {
            return $m[1];
        }
    }
}

return new MyAppResolver;

/opt/phpdaemon/conf/PHPDaemon/Applications/FullStatus.php

<?php
namespace PHPDaemon\Applications;

class FullStatus extends \PHPDaemon\Core\AppInstance {
    public function beginRequest($req, $upstream) {
        return new FullStatusRequest($this, $upstream, $req);
    }
}

/opt/phpdaemon/conf/PHPDaemon/Applications/FullStatusRequest.php

<?php
namespace PHPDaemon\Applications;

use PHPDaemon\Core\Daemon;
use PHPDaemon\HTTPRequest\Generic;

class FullStatusRequest extends Generic {
    public function run() {
        $stime = microtime(true);
        $this->header('Content-Type: application/javascript; charset=utf-8');

        $stat = Daemon::getStateOfWorkers();
        $stat['uptime'] = time() - Daemon::$startTime;
        echo json_encode($stat);
    }
}

Troubleshooting

To troubleshoot issues with the phpdaemon collector, run the go.d.plugin with the debug option enabled. The output should give you clues as to why the collector isn't working.

First, navigate to your plugins' directory, usually at /usr/libexec/netdata/plugins.d/. If that's not the case on your system, open netdata.conf and look for the setting plugins directory. Once you're in the plugin's directory, switch to the netdata user.

cd /usr/libexec/netdata/plugins.d/
sudo -u netdata -s

You can now run the go.d.plugin to debug the collector:

./go.d.plugin -d -m phpdaemon

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Chart

type Chart = module.Chart

Chart is an alias for module.Chart

type Charts

type Charts = module.Charts

Charts is an alias for module.Charts

type Config

type Config struct {
	web.HTTP `yaml:",inline"`
}

Config is the PHPDaemon module configuration.

type Dims

type Dims = module.Dims

Dims is an alias for module.Dims

type FullStatus

type FullStatus struct {
	WorkerState `stm:""`
	Uptime      *int64 `stm:"uptime"`
}

FullStatus FullStatus.

type PHPDaemon

type PHPDaemon struct {
	module.Base
	Config `yaml:",inline"`
	// contains filtered or unexported fields
}

PHPDaemon PHPDaemon module.

func New

func New() *PHPDaemon

New creates PHPDaemon with default values.

func (PHPDaemon) Charts

func (p PHPDaemon) Charts() *Charts

Charts creates Charts.

func (*PHPDaemon) Check

func (p *PHPDaemon) Check() bool

Check makes check.

func (PHPDaemon) Cleanup

func (PHPDaemon) Cleanup()

Cleanup makes cleanup.

func (*PHPDaemon) Collect

func (p *PHPDaemon) Collect() map[string]int64

Collect collects metrics.

func (*PHPDaemon) Init

func (p *PHPDaemon) Init() bool

Init makes initialization.

type WorkerState

type WorkerState struct {
	// Alive is sum of Idle, Busy and Reloading
	Alive    int64 `stm:"alive"`
	Shutdown int64 `stm:"shutdown"`

	// Idle that the worker is not in the middle of execution valuable callback (e.g. request) at this moment of time.
	// It does not mean that worker not have any pending operations.
	// Idle is sum of Preinit, Init and Initialized.
	Idle int64 `stm:"idle"`
	// Busy means that the worker is in the middle of execution valuable callback.
	Busy      int64 `stm:"busy"`
	Reloading int64 `stm:"reloading"`

	Preinit int64 `stm:"preinit"`
	// Init means that worker is starting right now.
	Init int64 `stm:"init"`
	// Initialized means that the worker is in Idle state.
	Initialized int64 `stm:"initialized"`
}

WorkerState represents phpdaemon worker state.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL