Skip to content

kozlice/phpfpmbeat

Repository files navigation

Phpfpmbeat

Build Status

The Beat for PHP-FPM monitoring.

As Go currently doesn't provide possibility to connect directly to FPM via FastCGI as a client, PHP-FPM must be configured to show its status via some webserver. Example for Nginx can be found here.

Feel free to fork, create merge requests and open issues. I had no experience with Go language previously, so there should be a lot of things to improve.

Requirements

Exported fields

Phpfpmbeat exports all pool information fields provided by PHP-FPM, except FPM start time. To make slow_requests counter work, enable request_slow_log feature in you FPM config.

Document sample:

{ "@timestamp": "2017-01-12T01:08:26.889Z", "accepted_conn": 22, "active_processes": 1, "beat": { "hostname": "Valentins-iMac.local", "name": "Valentins-iMac.local", "version": "5.1.2" }, "idle_processes": 1, "listen_queue": 0, "listen_queue_len": 128, "max_active_processes": 1, "max_children_reached": 0, "max_listen_queue": 0, "pool": "www", "process_manager": "dynamic", "slow_requests": 0, "start_since": 1730, "total_processes": 2, "type": "phpfpmbeat" } 

There is no support for per-process info for now.

Usage

To build the binary for Phpfpmbeat run the command below. This will generate a binary in the same directory with the name phpfpmbeat.

make 

To run Phpfpmbeat with debugging output enabled, run:

./phpfpmbeat -c phpfpmbeat.yml -e -d "*" 

To test Phpfpmbeat, run the following command:

make testsuite 

alternatively:

make unit-tests make system-tests make integration-tests make coverage-report 

The test coverage is reported in the folder ./build/coverage/

To clean up the build directory and generated artifacts, run:

make clean 

Thanks to

  • Elastic for their Beat creation tutorial
  • mrkschan for his nginxbeat, which I used as a prototype

TODOs

Integration tests using Docker (in Travis as well)

About

PHP-FPM status monitor via Elastic's libbeat

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published