Estadísticas de códigos de respuesta HTTP en Apache con plugin tail de Collectd

By | August 17, 2019

Collectd ya cuenta con un plugin nativo de Apache que permite recopilar métricas haciendo consultas a mod_status. Si queremos complementar esos datos o simplemente prescindir del plugin de Apache podemos utilizar el plugin tail para parsear los códigos de respuesta HTTP de los logs de acceso.

Una vez activado en el fichero de configuración collectd.conf pasamos a configurar la sección específica:

<Plugin tail>
  # Apache HTTP response codes
  <File "/var/log/apache/ssl_access.log">
    Instance "apache_access"

    # HTTP 2xx Ok
    <Match>
      Regex "HTTP/1..\" 2[0-9][0-9].*"
      DSType "GaugeInc"
      Type "gauge"
      Instance "http_2xx"
    </Match>

    # HTTP 3xx Redirect
    <Match>
      Regex "HTTP/1..\" 3[0-9][0-9].*"
      DSType "GaugeInc"
      Type "gauge"
      Instance "http_3xx"
    </Match>

    # HTTP 4xx Client errors
    <Match>
      Regex "HTTP/1..\" 4[0-9][0-9].*"
      DSType "GaugeInc"
      Type "gauge"
      Instance "http_4xx"
    </Match>

    # HTTP 5xx Server errors
    <Match>
      Regex "HTTP/1..\" 5[0-9][0-9].*"
      DSType "GaugeInc"
      Type "gauge"
      Instance "http_5xx"
    </Match>
  </File>
</Plugin>

En mi caso me interesa parsear por “familias” de código HTTP (2xx,3xx…) aunque podemos ajustar los parseos para crear distintas instancias más específicas según queramos.

Si almacenamos en InfluxDB los datos podemos crear un panel fácilmente:

Y tener una gráfica como la siguiente: