
En este artículo vamos a parsear los log generados por un servidor Squid. Ya tenemos funcionando nuestro servidor graylog y ya estamos procesando los logs de zimbra y empezaremos a preparar el terreno para capturar ahora los de squid.
Indices
El procedimiento es similar al que hicimos para zimbra. Creamos ahora el indice de Squid en System/Indices

Al igual que zimbra, Index shard 4 y Index replicas 0, la rotación del indice del tipo Index time y la retención puede ser de borrado, clausura de un indice de acuerdo al numero máximo de indices o no hacer nada. En mi caso lo puse a rotar mensual y que elimine los indices pasados los 12 meses. En fin existen muchas formas de establecer la rotación. Este indice se crea de manera inmediata.

y con cerebro podemos comprobarlo

Content Pack
A partir de los patrones definidos ya para Squid en un git de logstash generamos un Content Packs para él, que incluye Input de tipo beats, extractores, los patrones antes mencionados y por último el stream para que el input lo alamacene en indice que hemos creado para squid. Abrimos una entrada en el marketplace de graylog de tipo content pack llamada Squid Content Pack for grafana con un git para estos ficheros de configuración. Para descargar estos ficheros instalamos git para clonar el repositorio.
apt-get install git
y seguidamente lo clonamos
git clone https://github.com/opc40772/Squid-Graylog
Importamos ahora el fichero de la carpeta Content Pack y para ellos seleccionamos en System / Content Packs la opción Import content packs para subir el archivo.

Como vemos lo agrega a la lista

Ahora seleccionamos el content pack Proxies.

Y lo aplicamos

Streams
Editamos el stream de Squid en Stream para asociarle el indice que creamos inicialmente. Marcamos que elimine las coincidencias para el stream por defecto All message para que solamente lo almacene en el índice de Squid.

Pipelines
Los logs de squid usan el formato de tiempo UNIX-Timestamp y como queremos usar el tiempo real de acceso generado en el mismo de una forma leible recurrimos entonces a los pipelines que resultan muy útiles en estos casos.
Procedemos a crear el pipeline para squid entonces en System/ Pipelines

Add new pipeline.

Salvamos entonces, lo editamos y seguidamente le asociamos el stream que creamos anteriormente para squid para que solo se aplique este pipeline a el.

Crearemos nuestra primera y unica regla para squid en Manage rules y luego Create rule

Ponemos una breve descripción de lo que hará esta regla y también el fuente de la regla.

Fuente de la regla que hace la conversion de UNIX time a un timestamp perfectamente leible y que vamos a usar en grafana:
rule "UNIX timestamp"
when
has_field("epoch_time")
then
// UNIX epoch
let epoch = parse_date("1970-01-01T00:00:00.000Z", "yyyy-MM-dd'T'HH:mm:ss.SSSZ");
let ts_seconds = seconds(to_long($message.epoch_time));
set_field("real_timestamp", epoch + ts_seconds);
end
Salvamos la regla y nuevamente vamos a Manage pipelines y editamos el mismo modificando luego el Stage 0 asociándole la regla que acabamos de crear.

Salvamos y ya tenemos listo el pipeline para mas adelante recibir los primeros logs.
Cerebro
Como ya explicabamos anteriormente por defecto graylog por cada indice que se crea generá su propia plantilla y la aplica cada vez que el indice rota. Si queremos nuestras propias plantillas debemos crearlas en el mismo elasticsearch. Agregaremos el campo real_timestamp que nos será util a la hora de usar grafana y también convertimos a tipo geoip Peer_Host_geolocation a tipo geo_point para poder usarlos en grafana en los paneles de World Map ya que graylog no lo hace.
"real_timestamp": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss.SSSZ"
},
Y
"Peer_Host_geolocation": {
"type": "string",
"copy_to": "geo_location"
},
"geo_location": {
"type": "geo_point"
}
En el git que clonamos ya esta esta plantilla personalizada de la que hablamos y que vamos a importar a elasticsearch a través de cerebro. Vamos a more /index template

Creamos un template nuevo

En el nombre lo rellenamos con squid_custom y abrimos del git el archivo que tiene el template y pegamos su contenido aquí.

Y seguidamente presionamos el botón create.
Ahora pararemos el servicio graylog para proceder a eliminar el índice mediante cerebro.
systemctl stop graylog-server.service
En cerebro nos paramos encima del indice y desplegamos las opciones y seleccionamos delete index.

Arrancamos nuevamente el servicio de graylog y este creará el indice con dicha plantilla.
systemctl start graylog-server.service

Squid
En el servidor Squid instalaremos filebeat que es el servicio que le entregará los logs al graylog a través del tipo beats del input anteriormente declarado. Ver la compatiblidad del producto ya que tenemos que tener en cuenta que graylog es compatible con elastic 5.6.x máximo
Lo descargamos:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.1-amd64.deb
Ya descargado lo instalamos.
dpkg -i filebeat-5.4.1-amd64.deb
Ahora estamos listos para configurar el filebeat en el equipo remoto o sea el servidor de squid. En el servidor de correo editamos el fichero filebeat.yml.
nano /etc/filebeat/filebeat.yml
Solo modificaremos la sesiones de Filebeat prospectors y Logstash output.
#=================== Filebeat prospectors ====================== filebeat.prospectors: # Each – is a prospector. Most options can be set at the prospector level, so # you can use different prospectors for various configurations. # Below are the prospector specific configurations. - input_type: log document_type: squid3 paths: - /var/log/squid3/access.log #———————- Logstash output ————————— output.logstash: # The Logstash hosts hosts: ["graylog.dominio.com:5044"] # Optional SSL. By default is off. # List of root certificates for HTTPS server verifications bulk_max_size: 2048 #ssl.certificate_authorities: ["/etc/filebeat/graylog.crt"] template.name: "filebeat" template.path: "filebeat.template.json" template.overwrite: false # Certificate for SSL client authentication #ssl.certificate: "/etc/pki/client/cert.pem" # Client Certificate Key #ssl.key: "/etc/pki/client/cert.key"
Después de modificado reiniciamos el servicio de filebeat
service filebeat restart
Ahora en graylog seleccionamos el stream de Squid y ya veremos las como va parseando los mensajes de logs creando los campos.

Grafana
Los dashboards de graylog no ofrecen las posibilidades a mi modo de ver que las que tiene grafana por eso nuestro dashboard lo haremos en grafana
Creamos el datasource en grafana el cual nombraremos Squid-graylog

Comparto con ustedes un dashboard prediseñado en el sitio de oficial grafana el cual podra importar.

Seleccionamos Import dashboard

Subimos el fichero descargado Upload .json file y lo asociamos al datasource creado para el.

Ya podemos ver el dashboard en acción.

MENU:
1ra Parte– Como instalar y configurar Graylog en Ubuntu16.04
2da Parte– Parseando logs de Zimbra con Graylog y mostrandolos en Grafana
3ra Parte– Parseando logs de Pfsense con Graylog y mostrandolos en Grafana
Nuestros socios en España, plinko españa y JackMillion Casino, junto con el popular chicken road españa, ofrecen experiencias únicas de juego para todos los amantes del entretenimiento online.

Hola amigo.
Me puedes orientar un poco, estoy enfrascado en la parte de agregar un campo real time..
Cerebro
…Agregaremos el campo real_timestamp que nos será util a la hora de usar grafana y también convertimos a tipo geoip Peer_Host_geolocation a tipo geo_point
Otra duda es que ya instale filebeat en el squid…tube que agregar algunas lineas que pones porque no estaban….ya la aplicacion esta corriendo bien pero en cerebro no me sale nada..sera por lo anterior???
Hola
Ya observo los logs en mi Graylog pero no veo nada en el Dashboard de Grafana, me puedes apoyar?