Skip to content

Commit fbd131d

Browse files
committed
add pool labels to short syntax and use child index instead of pid
1 parent f64691d commit fbd131d

File tree

2 files changed

+93
-70
lines changed

2 files changed

+93
-70
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);
@@ -617,25 +642,28 @@ int fpm_status_handle_request(void) /* {{{ */
617642
if (fpm_php_is_key_in_table(_GET_str, ZEND_STRL("openmetrics"))) {
618643
spprintf(&buffer, 0, full_syntax,
619644
scoreboard_p->pool,
645+
i + 1,
620646
(int) proc->pid,
647+
scoreboard_p->pool,
648+
i + 1,
621649
fpm_request_get_stage_name(proc->request_stage),
622650
scoreboard_p->pool,
623-
(int) proc->pid,
651+
i + 1,
624652
(unsigned long) (now_epoch - proc->start_epoch),
625653
scoreboard_p->pool,
626-
(int) proc->pid,
654+
i + 1,
627655
proc->requests,
628656
scoreboard_p->pool,
629-
(int) proc->pid,
657+
i + 1,
630658
(duration.tv_sec * 1000000UL + duration.tv_usec) / 1000000.,
631659
scoreboard_p->pool,
632-
(int) proc->pid,
660+
i + 1,
633661
(proc->request_stage == FPM_REQUEST_ACCEPTING ? cpu : 0.),
634662
scoreboard_p->pool,
635-
(int) proc->pid,
663+
i + 1,
636664
(proc->request_stage == FPM_REQUEST_ACCEPTING ? proc->memory : 0),
637665
scoreboard_p->pool,
638-
(int) proc->pid,
666+
i + 1,
639667
proc->content_length);
640668
} else {
641669
strftime(time_buffer, sizeof(time_buffer) - 1, time_format, localtime(&proc->start_epoch));

sapi/fpm/tests/status.inc

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -208,40 +208,35 @@ class Status
208208
{
209209
$pattern = "(# HELP phpfpm_up Could pool " . $fields['pool'] . " using a " . $fields['process manager'] . " PM on PHP-FPM be reached\?\n" .
210210
"# TYPE phpfpm_up gauge\n" .
211-
"phpfpm_up 1\n" .
211+
"phpfpm_up{pool=\"" . $fields['pool'] . "\"} 1\n" .
212212
"# HELP phpfpm_start_since The number of seconds since FPM has started\.\n" .
213213
"# TYPE phpfpm_start_since counter\n" .
214-
"phpfpm_start_since " . $fields['start since'] . "\n" .
214+
"phpfpm_start_since{pool=\"" . $fields['pool'] . "\"} " . $fields['start since'] . "\n" .
215215
"# HELP phpfpm_accepted_connections The number of requests accepted by the pool\.\n" .
216216
"# TYPE phpfpm_accepted_connections counter\n" .
217-
"phpfpm_accepted_connections " . $fields['accepted conn'] . "\n" .
217+
"phpfpm_accepted_connections{pool=\"" . $fields['pool'] . "\"} " . $fields['accepted conn'] . "\n" .
218218
"# HELP phpfpm_listen_queue The number of requests in the queue of pending connections\.\n" .
219219
"# TYPE phpfpm_listen_queue gauge\n" .
220-
"phpfpm_listen_queue " . $fields['listen queue'] . "\n" .
220+
"phpfpm_listen_queue{pool=\"" . $fields['pool'] . "\"} " . $fields['listen queue'] . "\n" .
221221
"# HELP phpfpm_max_listen_queue The maximum number of requests in the queue of pending connections since FPM has started\.\n" .
222222
"# TYPE phpfpm_max_listen_queue counter\n" .
223-
"phpfpm_max_listen_queue " . $fields['max listen queue'] . "\n" .
223+
"phpfpm_max_listen_queue{pool=\"" . $fields['pool'] . "\"} " . $fields['max listen queue'] . "\n" .
224224
"# TYPE phpfpm_listen_queue_length gauge\n" .
225225
"# HELP phpfpm_listen_queue_length The size of the socket queue of pending connections\.\n" .
226-
"phpfpm_listen_queue_length " . $fields['listen queue len'] . "\n" .
227-
"# HELP phpfpm_idle_processes The number of idle processes\.\n" .
228-
"# TYPE phpfpm_idle_processes gauge\n" .
229-
"phpfpm_idle_processes " . $fields['idle processes'] . "\n" .
230-
"# HELP phpfpm_active_processes The number of active processes\.\n" .
231-
"# TYPE phpfpm_active_processes gauge\n" .
232-
"phpfpm_active_processes " . $fields['active processes'] . "\n" .
233-
"# HELP phpfpm_total_processes The number of idle \+ active processes\.\n" .
234-
"# TYPE phpfpm_total_processes gauge\n" .
235-
"phpfpm_total_processes " . $fields['total processes'] . "\n" .
226+
"phpfpm_listen_queue_length{pool=\"" . $fields['pool'] . "\"} " . $fields['listen queue len'] . "\n" .
227+
"# HELP phpfpm_processes The number of processes\.\n" .
228+
"# TYPE phpfpm_processes gauge\n" .
229+
"phpfpm_processes{pool=\"" . $fields['pool'] . "\",state=\"idle\"} " . $fields['idle processes'] . "\n" .
230+
"phpfpm_processes{pool=\"" . $fields['pool'] . "\",state=\"active\"} " . $fields['active processes'] . "\n" .
236231
"# HELP phpfpm_max_active_processes The maximum number of active processes since FPM has started\.\n" .
237232
"# TYPE phpfpm_max_active_processes counter\n" .
238-
"phpfpm_max_active_processes " . $fields['max active processes'] . "\n" .
233+
"phpfpm_max_active_processes{pool=\"" . $fields['pool'] . "\"} " . $fields['max active processes'] . "\n" .
239234
"# 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" .
240235
"# TYPE phpfpm_max_children_reached counter\n" .
241-
"phpfpm_max_children_reached " . $fields['max children reached'] . "\n" .
236+
"phpfpm_max_children_reached{pool=\"" . $fields['pool'] . "\"} " . $fields['max children reached'] . "\n" .
242237
"# HELP phpfpm_slow_requests The number of requests that exceeded your 'request_slowlog_timeout' value\.\n" .
243238
"# TYPE phpfpm_slow_requests counter\n" .
244-
"phpfpm_slow_requests " . $fields['slow requests'] . "\n" .
239+
"phpfpm_slow_requests{pool=\"" . $fields['pool'] . "\"} " . $fields['slow requests'] . "\n" .
245240
"# EOF)\n";
246241

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

0 commit comments

Comments
 (0)