<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/fpm.observability.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'fpm.status.php',
    1 => 'P&aacute;gina de status',
    2 => 'P&aacute;gina de status',
  ),
  'up' => 
  array (
    0 => 'fpm.observability.php',
    1 => 'Observabilidade',
  ),
  'prev' => 
  array (
    0 => 'fpm.observability.php',
    1 => 'Observabilidade',
  ),
  'next' => 
  array (
    0 => 'ref.fpm.php',
    1 => 'Fun&ccedil;&otilde;es de FPM',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/fpm/status.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="fpm.status" class="sect1">
 <h2 class="title">Página de status</h2>

 <p class="simpara">
  Esta página fornece informações sobre a configuração e o conteúdo da página de status do FPM. Veja também
  <span class="function"><a href="function.fpm-get-status.php" class="function">fpm_get_status()</a></span>.
 </p>

 <div class="sect2" id="fpm.status.configuration">
  <h3 class="title">Configuração</h3>

  <p class="simpara">
   A página de status do FPM pode ser habilitada definindo o parâmetro de configuração
   <a href="install.fpm.configuration.php#pm.status-path" class="link">pm.status_path</a> na configuração do pool
   FPM.
  </p>

  <div class="caution"><strong class="caution">Cuidado</strong>
   <p class="simpara">
    Por segurança, a página de status do FPM deve ser restrita apenas a solicitações internas ou IPs
    de clientes conhecidos, pois a página revela URLs de solicitação e informações sobre os recursos disponíveis.
   </p>
  </div>

  <p class="simpara">
   Dependendo da configuração do servidor web, pode ser necessário configurá-lo para
   permitir solicitações diretamente para este caminho, ignorando quaisquer scripts PHP. Um exemplo de configuração
   para Apache com FPM escutando em UDS e <code class="literal">pm.status_path</code> definido como
   <code class="literal">/fpm-status</code> seria assim:
  </p>

  <div class="informalexample">
   <div class="example-contents">
    <div class="apache-confcode"><pre class="apache-confcode">&lt;LocationMatch &quot;/fpm-status&quot;&gt;
 Require local
 ProxyPass &quot;unix:/var/run/php-fpm.sock|fcgi://localhost/&quot;
&lt;/LocationMatch&gt;</pre>
</div>
   </div>

  </div>

  <p class="simpara">
   Após recarregar ou reiniciar o FPM e o servidor web, a página de status estará acessível a partir
   do navegador (desde que a solicitação venha de um endereço IP permitido se a restrição de IP tiver sido
   configurada).
  </p>
 </div>

 <div class="sect2" id="fpm.status.parameters">
  <h3 class="title">Parâmetros de consulta</h3>

  <p class="simpara">
   O formato da saída da página de status pode ser alterado especificando um dos seguintes parâmetros
   de consulta:
  </p>

  <ul class="simplelist">
   <li><code class="literal">html</code></li>
   <li><code class="literal">json</code></li>
   <li><code class="literal">openmetrics</code></li>
   <li><code class="literal">xml</code></li>
  </ul>

  <p class="simpara">
   Informações adicionais também podem ser retornadas usando o parâmetro de consulta <code class="literal">full</code>.
  </p>

  <p class="simpara">
   Exemplos de URLs de páginas de status:
  </p>

  <ul class="simplelist">
   <li>
    <code class="literal">https://localhost/fpm-status</code>
    - Breve saída no formato de texto padrão
   </li>
   <li>
    <code class="literal">https://localhost/fpm-status?full</code>
    - Saída completa no formato de texto padrão
   </li>
   <li>
    <code class="literal">https://localhost/fpm-status?json</code>
    - Breve saída em formato JSON
   </li>
   <li>
    <code class="literal">https://localhost/fpm-status?html&amp;full</code>
    - Saída completa em formato HTML
   </li>
  </ul>
 </div>

 <div class="sect2" id="fpm.status.contents">
  <h3 class="title">Informações exibidas</h3>

  <p class="simpara">
   Os valores de data/hora usam o formato de timestamp Unix na saída JSON e XML; caso contrário, eles usam
   o formato que resulta no seguinte exemplo de data:
   <code class="literal">&quot;03/Jun/2021:07:21:46 +0100&quot;</code>.
  </p>

  <table class="doctable table">
   <caption><strong>Informações básicas - Sempre exibidas na página de status</strong></caption>
   
    <thead>
     <tr>
      <th>Parâmetro</th>
      <th>Descrição</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>pool</td>
      <td>O nome do pool de processos FPM.</td>
     </tr>

     <tr>
      <td>proccess manager</td>
      <td>O tipo de gerenciador de processos - estático, dinâmico ou sob demanda.</td>
     </tr>

     <tr>
      <td>start time</td>
      <td>A data/hora em que o pool de processos foi iniciado pela última vez.</td>
     </tr>

     <tr>
      <td>start since</td>
      <td>O tempo em segundos desde que o pool de processos foi iniciado pela última vez.</td>
     </tr>

     <tr>
      <td>accepted conn</td>
      <td>O número total de conexões aceitas.</td>
     </tr>

     <tr>
      <td>listen queue</td>
      <td>O número de solicitações (backlog) aguardando atualmente por um processo livre.</td>
     </tr>

     <tr>
      <td>max listen queue</td>
      <td>O número máximo de solicitações vistas na fila de escuta a qualquer momento.</td>
     </tr>

     <tr>
      <td>listen queue len</td>
      <td>O tamanho máximo permitido da fila de escuta.</td>
     </tr>

     <tr>
      <td>idle processes</td>
      <td>O número de processos que estão atualmente ociosos (aguardando solicitações).</td>
     </tr>

     <tr>
      <td>active processes</td>
      <td>O número de processos que estão processando solicitações no momento.</td>
     </tr>

     <tr>
      <td>total processes</td>
      <td>O número total atual de processos.</td>
     </tr>

     <tr>
      <td>max active processes</td>
      <td>O número máximo de processos ativos simultaneamente.</td>
     </tr>

     <tr>
      <td>max children reached</td>
      <td>
       O número máximo de processos já foi atingido? Nesse caso, o valor exibido é maior ou igual a
       <code class="literal">1</code> caso contrário, o valor é <code class="literal">0</code>.
      </td>
     </tr>

     <tr>
      <td>slow requests</td>
      <td>
       O número total de solicitações que atingiram o
       <code class="literal">request_slowlog_timeout</code> configurado.
      </td>
     </tr>

     <tr>
      <td>memory peak</td>
      <td>
       O pico de uso de memória desde a inicialização do FPM.
      </td>
     </tr>

    </tbody>
   
  </table>


  <table class="doctable table">
   <caption><strong>Informações por processo - exibidas apenas no modo de saída <code class="literal">full</code></strong></caption>
   
    <thead>
     <tr>
      <th>Parâmetro</th>
      <th>Descrição</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>pid</td>
      <td>O PID de sistema do processo.</td>
     </tr>

     <tr>
      <td>state</td>
      <td>O estado do processo - Inativo, Em execução, ...</td>
     </tr>

     <tr>
      <td>start time</td>
      <td>A data/hora em que o processo foi iniciado.</td>
     </tr>

     <tr>
      <td>start since</td>
      <td>O número de segundos desde que o processo foi iniciado.</td>
     </tr>

     <tr>
      <td>requests</td>
      <td>O número total de solicitações atendidas.</td>
     </tr>

     <tr>
      <td>request duration</td>
      <td>O tempo total em microssegundos gasto atendendo à última solicitação.</td>
     </tr>

     <tr>
      <td>request method</td>
      <td>O método HTTP da última solicitação atendida.</td>
     </tr>

     <tr>
      <td>request uri</td>
      <td>
       O URI da última solicitação atendida (após o processamento do servidor web, pode sempre ser
       <code class="literal">/index.php</code> se for usado um modelo de redirecionamento central).
      </td>
     </tr>

     <tr>
      <td>content length</td>
      <td>O comprimento do corpo da solicitação, em bytes, da última solicitação.</td>
     </tr>

     <tr>
      <td>user</td>
      <td>O usuário HTTP (<code class="literal">PHP_AUTH_USER</code>) da última solicitação.</td>
     </tr>

     <tr>
      <td>script</td>
      <td>
       O caminho completo do script executado pela última solicitação. Será
       <code class="literal">&#039;-&#039;</code> se não for aplicável (por exemplo, solicitações de página de status).
      </td>
     </tr>

     <tr>
      <td>last request cpu</td>
      <td>
       A %cpu da última solicitação. Será 0 se o processo não estiver ocioso porque o
       cálculo é feito quando o processamento da solicitação é concluído.
       O valor pode exceder 100%, porque a métrica dirá qual porcentagem do tempo total da CPU foi usada na última solicitação -
       leva em consideração os processos em todos os núcleos, enquanto 100% é para apenas um núcleo.
      </td>
     </tr>

     <tr>
      <td>last request memory</td>
      <td>
       A quantidade máxima de memória consumida pela última solicitação. Será 0 se o processo não
       estiver ocioso porque o cálculo é feito quando o processamento da solicitação é concluído.
      </td>
     </tr>

    </tbody>
   
  </table>


  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    Todos os valores são específicos do pool e são redefinidos quando o FPM é reiniciado.
   </span>
  </p></blockquote>

  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    A saída do formato OpenMetrics usa diferentes tipos de parâmetros para melhor se adequar ao formato OpenMetrics.
    Os parâmetros e as descrições de seus valores estão incluídos na saída do formato OpenMetrics.
   </span>
  </p></blockquote>
 </div>

 <div class="sect2">
  <h3 class="title">Registro de Alterações</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versão</th>
      <th>Descrição</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.1.0</td>
      <td>O formato openmetrics foi adicionado.</td>
     </tr>

    </tbody>
   
  </table>

 </div>
</div><?php manual_footer($setup); ?>