src/go/plugin/go.d/modules/phpdaemon/metadata.yaml
plugin_name: go.d.plugin
modules:
- meta:
id: collector-go.d.plugin-phpdaemon
plugin_name: go.d.plugin
module_name: phpdaemon
monitored_instance:
name: phpDaemon
link: https://github.com/kakserpom/phpdaemon
icon_filename: php.svg
categories:
- data-collection.apm
keywords:
- phpdaemon
- php
related_resources:
integrations:
list: []
info_provided_to_referring_integrations:
description: ""
most_popular: false
overview:
data_collection:
metrics_description: |
This collector monitors phpDaemon instances.
method_description: ""
supported_platforms:
include: []
exclude: []
multi_instance: true
additional_permissions:
description: ""
default_behavior:
auto_detection:
description: ""
limits:
description: ""
performance_impact:
description: ""
setup:
prerequisites:
list:
- title: Enable phpDaemon's HTTP server
description: |
Statistics expected to be in JSON format.
<details>
<summary>phpDaemon configuration</summary>
Instruction from [@METAJIJI](https://github.com/METAJIJI).
To enable `phpd` statistics on http, you must enable the http server and write an application.
Application is important, because standalone application [ServerStatus.php](https://github.com/kakserpom/phpdaemon/blob/master/PHPDaemon/Applications/ServerStatus.php) provides statistics in html format and unusable for `netdata`.
```php
// /opt/phpdaemon/conf/phpd.conf
path /opt/phpdaemon/conf/AppResolver.php;
Pool:HTTPServer {
privileged;
listen '127.0.0.1';
port 8509;
}
```
```php
// /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;
```
```php
/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);
}
}
```
```php
// /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);
}
}
```
</details>
configuration:
file:
name: go.d/phpdaemon.conf
options:
description: |
The following options can be defined globally: update_every, autodetection_retry.
folding:
title: Config options
enabled: true
list:
- name: update_every
description: Data collection frequency.
default_value: 1
required: false
- name: autodetection_retry
description: Recheck interval in seconds. Zero means no recheck will be scheduled.
default_value: 0
required: false
- name: url
description: Server URL.
default_value: http://127.0.0.1:8509/FullStatus
required: true
- name: timeout
description: HTTP request timeout.
default_value: 2
required: false
- name: username
description: Username for basic HTTP authentication.
default_value: ""
required: false
- name: password
description: Password for basic HTTP authentication.
default_value: ""
required: false
- name: proxy_url
description: Proxy URL.
default_value: ""
required: false
- name: proxy_username
description: Username for proxy basic HTTP authentication.
default_value: ""
required: false
- name: proxy_password
description: Password for proxy basic HTTP authentication.
default_value: ""
required: false
- name: method
description: HTTP request method.
default_value: GET
required: false
- name: body
description: HTTP request body.
default_value: ""
required: false
- name: headers
description: HTTP request headers.
default_value: ""
required: false
- name: not_follow_redirects
description: Redirect handling policy. Controls whether the client follows redirects.
default_value: false
required: false
- name: tls_skip_verify
description: Server certificate chain and hostname validation policy. Controls whether the client performs this check.
default_value: false
required: false
- name: tls_ca
description: Certification authority that the client uses when verifying the server's certificates.
default_value: ""
required: false
- name: tls_cert
description: Client TLS certificate.
default_value: ""
required: false
- name: tls_key
description: Client TLS key.
default_value: ""
required: false
examples:
folding:
title: Config
enabled: true
list:
- name: Basic
description: A basic example configuration.
config: |
jobs:
- name: local
url: http://127.0.0.1:8509/FullStatus
- name: HTTP authentication
description: HTTP authentication.
config: |
jobs:
- name: local
url: http://127.0.0.1:8509/FullStatus
username: username
password: password
- name: HTTPS with self-signed certificate
description: HTTPS with self-signed certificate.
config: |
jobs:
- name: local
url: http://127.0.0.1:8509/FullStatus
tls_skip_verify: yes
- name: Multi-instance
description: |
> **Note**: When you define multiple jobs, their names must be unique.
Collecting metrics from local and remote instances.
config: |
jobs:
- name: local
url: http://127.0.0.1:8509/FullStatus
- name: remote
url: http://192.0.2.1:8509/FullStatus
troubleshooting:
problems:
list: []
alerts: []
metrics:
folding:
title: Metrics
enabled: false
description: ""
availability: []
scopes:
- name: global
description: These metrics refer to the entire monitored application.
labels: []
metrics:
- name: phpdaemon.workers
description: Workers
unit: workers
chart_type: line
dimensions:
- name: alive
- name: shutdown
- name: phpdaemon.alive_workers
description: Alive Workers State
unit: workers
chart_type: line
dimensions:
- name: idle
- name: busy
- name: reloading
- name: phpdaemon.idle_workers
description: Idle Workers State
unit: workers
chart_type: line
dimensions:
- name: preinit
- name: init
- name: initialized
- name: phpdaemon.uptime
description: Uptime
unit: seconds
chart_type: line
dimensions:
- name: time