mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-13 05:05:29 +03:00
nixos/prometheus-exporters: add php-fpm
This commit is contained in:
parent
28fb612abc
commit
1a821e7bf5
3 changed files with 108 additions and 1 deletions
|
@ -56,6 +56,7 @@ let
|
||||||
"nut"
|
"nut"
|
||||||
"openldap"
|
"openldap"
|
||||||
"openvpn"
|
"openvpn"
|
||||||
|
"php-fpm"
|
||||||
"pihole"
|
"pihole"
|
||||||
"postfix"
|
"postfix"
|
||||||
"postgres"
|
"postgres"
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
{ config
|
||||||
|
, lib
|
||||||
|
, pkgs
|
||||||
|
, options
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
logPrefix = "services.prometheus.exporter.php-fpm";
|
||||||
|
cfg = config.services.prometheus.exporters.php-fpm;
|
||||||
|
in {
|
||||||
|
port = 9253;
|
||||||
|
extraOpts = {
|
||||||
|
package = lib.mkPackageOptionMD pkgs "prometheus-php-fpm-exporter" {};
|
||||||
|
|
||||||
|
telemetryPath = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/metrics";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Path under which to expose metrics.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
environmentFile = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.path;
|
||||||
|
default = null;
|
||||||
|
example = "/root/prometheus-php-fpm-exporter.env";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Environment file as defined in {manpage}`systemd.exec(5)`.
|
||||||
|
|
||||||
|
Secrets may be passed to the service without adding them to the
|
||||||
|
world-readable Nix store, by specifying placeholder variables as
|
||||||
|
the option value in Nix and setting these variables accordingly in the
|
||||||
|
environment file.
|
||||||
|
|
||||||
|
Environment variables from this file will be interpolated into the
|
||||||
|
config file using envsubst with this syntax:
|
||||||
|
`$ENVIRONMENT ''${VARIABLE}`
|
||||||
|
|
||||||
|
For variables to use see [options and defaults](https://github.com/hipages/php-fpm_exporter#options-and-defaults).
|
||||||
|
|
||||||
|
The main use is to set the PHP_FPM_SCRAPE_URI that indicate how to connect to PHP-FPM process.
|
||||||
|
|
||||||
|
```
|
||||||
|
# Content of the environment file
|
||||||
|
PHP_FPM_SCRAPE_URI="unix:///tmp/php.sock;/status"
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that this file needs to be available on the host on which
|
||||||
|
this exporter is running.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
serviceOpts = {
|
||||||
|
serviceConfig = {
|
||||||
|
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
|
||||||
|
ExecStart = ''
|
||||||
|
${lib.getExe cfg.package} server \
|
||||||
|
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||||
|
--web.telemetry-path ${cfg.telemetryPath} \
|
||||||
|
${lib.concatStringsSep " \\\n " cfg.extraFlags}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
let
|
let
|
||||||
inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
|
inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
|
||||||
inherit (pkgs.lib) concatStringsSep maintainers mapAttrs mkMerge
|
inherit (pkgs.lib) concatStringsSep maintainers mapAttrs mkMerge
|
||||||
removeSuffix replaceStrings singleton splitString;
|
removeSuffix replaceStrings singleton splitString makeBinPath;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The attrset `exporterTests` contains one attribute
|
* The attrset `exporterTests` contains one attribute
|
||||||
|
@ -914,6 +914,47 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
php-fpm = {
|
||||||
|
nodeName = "php_fpm";
|
||||||
|
exporterConfig = {
|
||||||
|
enable = true;
|
||||||
|
environmentFile = pkgs.writeTextFile {
|
||||||
|
name = "/tmp/prometheus-php-fpm-exporter.env";
|
||||||
|
text = ''
|
||||||
|
PHP_FPM_SCRAPE_URI="tcp://127.0.0.1:9000/status"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
metricProvider = {
|
||||||
|
users.users."php-fpm-exporter" = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "php-fpm-exporter";
|
||||||
|
};
|
||||||
|
users.groups."php-fpm-exporter" = {};
|
||||||
|
services.phpfpm.pools."php-fpm-exporter" = {
|
||||||
|
user = "php-fpm-exporter";
|
||||||
|
group = "php-fpm-exporter";
|
||||||
|
settings = {
|
||||||
|
"pm" = "dynamic";
|
||||||
|
"pm.max_children" = 32;
|
||||||
|
"pm.max_requests" = 500;
|
||||||
|
"pm.start_servers" = 2;
|
||||||
|
"pm.min_spare_servers" = 2;
|
||||||
|
"pm.max_spare_servers" = 5;
|
||||||
|
"pm.status_path" = "/status";
|
||||||
|
"listen" = "127.0.0.1:9000";
|
||||||
|
"listen.allowed_clients" = "127.0.0.1";
|
||||||
|
};
|
||||||
|
phpEnv."PATH" = makeBinPath [ pkgs.php ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
exporterTest = ''
|
||||||
|
wait_for_unit("phpfpm-php-fpm-exporter.service")
|
||||||
|
wait_for_unit("prometheus-php-fpm-exporter.service")
|
||||||
|
succeed("curl -sSf http://localhost:9253/metrics | grep 'phpfpm_up{.*} 1'")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
postfix = {
|
postfix = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue