Skip to content

Commit d3e4771

Browse files
committed
add pool labels to short syntax and use child index instead of pid
1 parent 376c62d commit d3e4771

File tree

2 files changed

+100
-76
lines changed

2 files changed

+100
-76
lines changed

‎sapi/fpm/fpm/fpm_status.c

Lines changed: 80 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -392,41 +392,36 @@ int fpm_status_handle_request(void) /* {{{ */
392392
short_syntax =
393393
"# HELP phpfpm_up Could pool %s using a %s PM on PHP-FPM be reached?\n"
394394
"# TYPE phpfpm_up gauge\n"
395-
"phpfpm_up 1\n"
396-
"# HELP phpfpm_start_since The number of seconds since FPM has started.\n"
397-
"# TYPE phpfpm_start_since counter\n"
398-
"# UNIT phpfpm_start_since seconds\n"
399-
"phpfpm_start_since %lu\n"
400-
"# HELP phpfpm_accepted_connections The number of requests accepted by the pool.\n"
401-
"# TYPE phpfpm_accepted_connections counter\n"
402-
"phpfpm_accepted_connections %lu\n"
395+
"phpfpm_up{pool=\"%s\"} 1\n"
396+
"# HELP phpfpm_start_since_seconds The number of seconds since FPM has started.\n"
397+
"# TYPE phpfpm_start_since_seconds counter\n"
398+
"# UNIT phpfpm_start_since_seconds seconds\n"
399+
"phpfpm_start_since_seconds{pool=\"%s\"} %lu\n"
400+
"# HELP phpfpm_accepted_connections_total The number of requests accepted by the pool.\n"
401+
"# TYPE phpfpm_accepted_connections_total counter\n"
402+
"phpfpm_accepted_connections_total{pool=\"%s\"} %lu\n"
403403
"# HELP phpfpm_listen_queue The number of requests in the queue of pending connections.\n"
404404
"# TYPE phpfpm_listen_queue gauge\n"
405-
"phpfpm_listen_queue %d\n"
405+
"phpfpm_listen_queue{pool=\"%s\"} %d\n"
406406
"# HELP phpfpm_max_listen_queue The maximum number of requests in the queue of pending connections since FPM has started.\n"
407407
"# TYPE phpfpm_max_listen_queue counter\n"
408-
"phpfpm_max_listen_queue %d\n"
408+
"phpfpm_max_listen_queue{pool=\"%s\"} %d\n"
409409
"# TYPE phpfpm_listen_queue_length gauge\n"
410410
"# HELP phpfpm_listen_queue_length The size of the socket queue of pending connections.\n"
411-
"phpfpm_listen_queue_length %u\n"
412-
"# HELP phpfpm_idle_processes The number of idle processes.\n"
413-
"# TYPE phpfpm_idle_processes gauge\n"
414-
"phpfpm_idle_processes %d\n"
415-
"# HELP phpfpm_active_processes The number of active processes.\n"
416-
"# TYPE phpfpm_active_processes gauge\n"
417-
"phpfpm_active_processes %d\n"
418-
"# HELP phpfpm_total_processes The number of idle + active processes.\n"
419-
"# TYPE phpfpm_total_processes gauge\n"
420-
"phpfpm_total_processes %d\n"
411+
"phpfpm_listen_queue_length{pool=\"%s\"} %u\n"
412+
"# HELP phpfpm_processes The number of processes.\n"
413+
"# TYPE phpfpm_processes gauge\n"
414+
"phpfpm_processes{pool=\"%s\",state=\"idle\"} %d\n"
415+
"phpfpm_processes{pool=\"%s\",state=\"active\"} %d\n"
421416
"# HELP phpfpm_max_active_processes The maximum number of active processes since FPM has started.\n"
422417
"# TYPE phpfpm_max_active_processes counter\n"
423-
"phpfpm_max_active_processes %d\n"
418+
"phpfpm_max_active_processes{pool=\"%s\"} %d\n"
424419
"# HELP phpfpm_max_children_reached The number of times, the process limit has been reached, when pm tries to start more children (works only for pm 'dynamic' and 'ondemand').\n"
425420
"# TYPE phpfpm_max_children_reached counter\n"
426-
"phpfpm_max_children_reached %u\n"
427-
"# HELP phpfpm_slow_requests The number of requests that exceeded your 'request_slowlog_timeout' value.\n"
428-
"# TYPE phpfpm_slow_requests counter\n"
429-
"phpfpm_slow_requests %lu\n";
421+
"phpfpm_max_children_reached{pool=\"%s\"} %u\n"
422+
"# HELP phpfpm_slow_requests_total The number of requests that exceeded your 'request_slowlog_timeout' value.\n"
423+
"# TYPE phpfpm_slow_requests_total counter\n"
424+
"phpfpm_slow_requests_total{pool=\"%s\"} %lu\n";
430425

431426
has_start_time = 0;
432427
if (!full) {
@@ -435,31 +430,34 @@ int fpm_status_handle_request(void) /* {{{ */
435430
full_separator = "";
436431
full_pre = "";
437432
full_syntax =
433+
"# HELP phpfpm_process_pid The id of the process.\n"
434+
"# TYPE phpfpm_process_pid gauge\n"
435+
"phpfpm_process_pid{pool=\"%s\",child=\"%d\"} %d\n"
438436
"# HELP phpfpm_process_state The current state of the process (Idle, Running, ...).\n"
439437
"# TYPE phpfpm_process_state gauge\n"
440-
"phpfpm_process_state{pool=\"%s\",pid=\"%d\",state=\"%s\"} 1\n"
438+
"phpfpm_process_state{pool=\"%s\",child=\"%d\",state=\"%s\"} 1\n"
441439
"# HELP phpfpm_process_start_since_seconds The number of seconds since the process started.\n"
442440
"# TYPE phpfpm_process_start_since_seconds counter\n"
443441
"# UNIT phpfpm_process_start_since_seconds seconds\n"
444-
"phpfpm_process_start_since_seconds{pool=\"%s\",pid=\"%d\"} %lu\n"
442+
"phpfpm_process_start_since_seconds{pool=\"%s\",child=\"%d\"} %lu\n"
445443
"# HELP phpfpm_process_requests_total The total number of requests served.\n"
446444
"# TYPE phpfpm_process_requests_total counter\n"
447-
"phpfpm_process_requests_total{pool=\"%s\",pid=\"%d\"} %lu\n"
445+
"phpfpm_process_requests_total{pool=\"%s\",child=\"%d\"} %lu\n"
448446
"# HELP phpfpm_process_request_seconds Time in seconds serving the current or last request.\n"
449447
"# TYPE phpfpm_process_request_seconds gauge\n"
450448
"# UNIT phpfpm_process_request_seconds seconds\n"
451-
"phpfpm_process_request_seconds{pool=\"%s\",pid=\"%d\"} %.6f\n"
449+
"phpfpm_process_request_seconds{pool=\"%s\",child=\"%d\"} %.6f\n"
452450
"# HELP phpfpm_process_request_cpu The percentage of cpu of the last request. This will be 0 if the process is not Idle because the calculation is done when the request processing is complete.\n"
453451
"# TYPE phpfpm_process_request_cpu gauge\n"
454-
"phpfpm_process_request_cpu{pool=\"%s\",pid=\"%d\"} %.2f\n"
452+
"phpfpm_process_request_cpu{pool=\"%s\",child=\"%d\"} %.2f\n"
455453
"# HELP phpfpm_process_request_memory_bytes The maximum amount of memory consumed by the last request. This will be 0 if the process is not Idle because the calculation is done when the request processing is complete.\n"
456454
"# TYPE phpfpm_process_request_memory_bytes gauge\n"
457455
"# UNIT phpfpm_process_request_memory_bytes bytes\n"
458-
"phpfpm_process_request_memory_bytes{pool=\"%s\",pid=\"%d\"} %zu\n"
456+
"phpfpm_process_request_memory_bytes{pool=\"%s\",child=\"%d\"} %zu\n"
459457
"# HELP phpfpm_process_request_content_length_bytes The length of the request body, in bytes, of the last request.\n"
460458
"# TYPE phpfpm_process_request_content_length_bytes gauge\n"
461459
"# UNIT phpfpm_process_request_content_length_bytes bytes\n"
462-
"phpfpm_process_request_content_length_bytes{pool=\"%s\",pid=\"%d\"} %zu\n";
460+
"phpfpm_process_request_content_length_bytes{pool=\"%s\",child=\"%d\"} %zu\n";
463461
full_post = "# EOF\n";
464462
}
465463

@@ -523,20 +521,47 @@ int fpm_status_handle_request(void) /* {{{ */
523521
scoreboard_p->max_children_reached,
524522
scoreboard_p->slow_rq);
525523
} else {
526-
spprintf(&buffer, 0, short_syntax,
527-
scoreboard_p->pool,
528-
PM2STR(scoreboard_p->pm),
529-
(unsigned long) (now_epoch - scoreboard_p->start_epoch),
530-
scoreboard_p->requests,
531-
scoreboard_p->lq,
532-
scoreboard_p->lq_max,
533-
scoreboard_p->lq_len,
534-
scoreboard_p->idle,
535-
scoreboard_p->active,
536-
scoreboard_p->idle + scoreboard_p->active,
537-
scoreboard_p->active_max,
538-
scoreboard_p->max_children_reached,
539-
scoreboard_p->slow_rq);
524+
if (fpm_php_is_key_in_table(_GET_str, ZEND_STRL("openmetrics"))) {
525+
spprintf(&buffer, 0, short_syntax,
526+
scoreboard_p->pool,
527+
PM2STR(scoreboard_p->pm),
528+
scoreboard_p->pool,
529+
scoreboard_p->pool,
530+
(unsigned long) (now_epoch - scoreboard_p->start_epoch),
531+
scoreboard_p->pool,
532+
scoreboard_p->requests,
533+
scoreboard_p->pool,
534+
scoreboard_p->lq,
535+
scoreboard_p->pool,
536+
scoreboard_p->lq_max,
537+
scoreboard_p->pool,
538+
scoreboard_p->lq_len,
539+
scoreboard_p->pool,
540+
scoreboard_p->idle,
541+
scoreboard_p->pool,
542+
scoreboard_p->active,
543+
scoreboard_p->pool,
544+
scoreboard_p->active_max,
545+
scoreboard_p->pool,
546+
scoreboard_p->max_children_reached,
547+
scoreboard_p->pool,
548+
scoreboard_p->slow_rq);
549+
} else {
550+
spprintf(&buffer, 0, short_syntax,
551+
scoreboard_p->pool,
552+
PM2STR(scoreboard_p->pm),
553+
(unsigned long) (now_epoch - scoreboard_p->start_epoch),
554+
scoreboard_p->requests,
555+
scoreboard_p->lq,
556+
scoreboard_p->lq_max,
557+
scoreboard_p->lq_len,
558+
scoreboard_p->idle,
559+
scoreboard_p->active,
560+
scoreboard_p->idle + scoreboard_p->active,
561+
scoreboard_p->active_max,
562+
scoreboard_p->max_children_reached,
563+
scoreboard_p->slow_rq);
564+
}
540565
}
541566

542567
PUTS(buffer);
@@ -756,25 +781,28 @@ int fpm_status_handle_request(void) /* {{{ */
756781
if (fpm_php_is_key_in_table(_GET_str, ZEND_STRL("openmetrics"))) {
757782
spprintf(&buffer, 0, full_syntax,
758783
scoreboard_p->pool,
784+
i + 1,
759785
(int) proc->pid,
786+
scoreboard_p->pool,
787+
i + 1,
760788
fpm_request_get_stage_name(proc->request_stage),
761789
scoreboard_p->pool,
762-
(int) proc->pid,
790+
i + 1,
763791
(unsigned long) (now_epoch - proc->start_epoch),
764792
scoreboard_p->pool,
765-
(int) proc->pid,
793+
i + 1,
766794
proc->requests,
767795
scoreboard_p->pool,
768-
(int) proc->pid,
796+
i + 1,
769797
(duration.tv_sec * 1000000UL + duration.tv_usec) / 1000000.,
770798
scoreboard_p->pool,
771-
(int) proc->pid,
799+
i + 1,
772800
(proc->request_stage == FPM_REQUEST_ACCEPTING ? cpu : 0.),
773801
scoreboard_p->pool,
774-
(int) proc->pid,
802+
i + 1,
775803
(proc->request_stage == FPM_REQUEST_ACCEPTING ? proc->memory : 0),
776804
scoreboard_p->pool,
777-
(int) proc->pid,
805+
i + 1,
778806
proc->content_length);
779807
} else {
780808
strftime(time_buffer, sizeof(time_buffer) - 1, time_format, localtime(&proc->start_epoch));

‎sapi/fpm/tests/status.inc

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -232,40 +232,36 @@ class Status
232232
{
233233
$pattern = "(# HELP phpfpm_up Could pool " . $fields['pool'] . " using a " . $fields['process manager'] . " PM on PHP-FPM be reached\?\n" .
234234
"# TYPE phpfpm_up gauge\n" .
235-
"phpfpm_up 1\n" .
236-
"# HELP phpfpm_start_since The number of seconds since FPM has started\.\n" .
237-
"# TYPE phpfpm_start_since counter\n" .
238-
"phpfpm_start_since " . $fields['start since'] . "\n" .
239-
"# HELP phpfpm_accepted_connections The number of requests accepted by the pool\.\n" .
240-
"# TYPE phpfpm_accepted_connections counter\n" .
241-
"phpfpm_accepted_connections " . $fields['accepted conn'] . "\n" .
235+
"phpfpm_up{pool=\"" . $fields['pool'] . "\"} 1\n" .
236+
"# HELP phpfpm_start_since_seconds The number of seconds since FPM has started\.\n" .
237+
"# TYPE phpfpm_start_since_seconds counter\n" .
238+
"# UNIT phpfpm_start_since_seconds seconds\n" .
239+
"phpfpm_start_since_seconds{pool=\"" . $fields['pool'] . "\"} " . $fields['start since'] . "\n" .
240+
"# HELP phpfpm_accepted_connections_total The number of requests accepted by the pool\.\n" .
241+
"# TYPE phpfpm_accepted_connections_total counter\n" .
242+
"phpfpm_accepted_connections_total{pool=\"" . $fields['pool'] . "\"} " . $fields['accepted conn'] . "\n" .
242243
"# HELP phpfpm_listen_queue The number of requests in the queue of pending connections\.\n" .
243244
"# TYPE phpfpm_listen_queue gauge\n" .
244-
"phpfpm_listen_queue " . $fields['listen queue'] . "\n" .
245+
"phpfpm_listen_queue{pool=\"" . $fields['pool'] . "\"} " . $fields['listen queue'] . "\n" .
245246
"# HELP phpfpm_max_listen_queue The maximum number of requests in the queue of pending connections since FPM has started\.\n" .
246247
"# TYPE phpfpm_max_listen_queue counter\n" .
247-
"phpfpm_max_listen_queue " . $fields['max listen queue'] . "\n" .
248+
"phpfpm_max_listen_queue{pool=\"" . $fields['pool'] . "\"} " . $fields['max listen queue'] . "\n" .
248249
"# TYPE phpfpm_listen_queue_length gauge\n" .
249250
"# HELP phpfpm_listen_queue_length The size of the socket queue of pending connections\.\n" .
250-
"phpfpm_listen_queue_length " . $fields['listen queue len'] . "\n" .
251-
"# HELP phpfpm_idle_processes The number of idle processes\.\n" .
252-
"# TYPE phpfpm_idle_processes gauge\n" .
253-
"phpfpm_idle_processes " . $fields['idle processes'] . "\n" .
254-
"# HELP phpfpm_active_processes The number of active processes\.\n" .
255-
"# TYPE phpfpm_active_processes gauge\n" .
256-
"phpfpm_active_processes " . $fields['active processes'] . "\n" .
257-
"# HELP phpfpm_total_processes The number of idle \+ active processes\.\n" .
258-
"# TYPE phpfpm_total_processes gauge\n" .
259-
"phpfpm_total_processes " . $fields['total processes'] . "\n" .
251+
"phpfpm_listen_queue_length{pool=\"" . $fields['pool'] . "\"} " . $fields['listen queue len'] . "\n" .
252+
"# HELP phpfpm_processes The number of processes\.\n" .
253+
"# TYPE phpfpm_processes gauge\n" .
254+
"phpfpm_processes{pool=\"" . $fields['pool'] . "\",state=\"idle\"} " . $fields['idle processes'] . "\n" .
255+
"phpfpm_processes{pool=\"" . $fields['pool'] . "\",state=\"active\"} " . $fields['active processes'] . "\n" .
260256
"# HELP phpfpm_max_active_processes The maximum number of active processes since FPM has started\.\n" .
261257
"# TYPE phpfpm_max_active_processes counter\n" .
262-
"phpfpm_max_active_processes " . $fields['max active processes'] . "\n" .
258+
"phpfpm_max_active_processes{pool=\"" . $fields['pool'] . "\"} " . $fields['max active processes'] . "\n" .
263259
"# HELP phpfpm_max_children_reached The number of times, the process limit has been reached, when pm tries to start more children \(works only for pm 'dynamic' and 'ondemand'\)\.\n" .
264260
"# TYPE phpfpm_max_children_reached counter\n" .
265-
"phpfpm_max_children_reached " . $fields['max children reached'] . "\n" .
266-
"# HELP phpfpm_slow_requests The number of requests that exceeded your 'request_slowlog_timeout' value\.\n" .
267-
"# TYPE phpfpm_slow_requests counter\n" .
268-
"phpfpm_slow_requests " . $fields['slow requests'] . "\n" .
261+
"phpfpm_max_children_reached{pool=\"" . $fields['pool'] . "\"} " . $fields['max children reached'] . "\n" .
262+
"# HELP phpfpm_slow_requests_total The number of requests that exceeded your 'request_slowlog_timeout' value\.\n" .
263+
"# TYPE phpfpm_slow_requests_total counter\n" .
264+
"phpfpm_slow_requests_total{pool=\"" . $fields['pool'] . "\"} " . $fields['slow requests'] . "\n" .
269265
"# EOF)\n";
270266

271267
if (!preg_match($pattern, $body)) {

0 commit comments

Comments
 (0)