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"
|
||||
"openldap"
|
||||
"openvpn"
|
||||
"php-fpm"
|
||||
"pihole"
|
||||
"postfix"
|
||||
"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
|
||||
inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest;
|
||||
inherit (pkgs.lib) concatStringsSep maintainers mapAttrs mkMerge
|
||||
removeSuffix replaceStrings singleton splitString;
|
||||
removeSuffix replaceStrings singleton splitString makeBinPath;
|
||||
|
||||
/*
|
||||
* 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 = {
|
||||
exporterConfig = {
|
||||
enable = true;
|
||||
|
|
Loading…
Reference in a new issue