= ELK: Beats (filebeats) {{ :info:cursos:openwebinars:elk:beats:4.2_filebeats.pdf |}} * archivos en formato log * servicio ligero * robusto: filebeat lee y reenvía logs. Recuerda una interrupción y por donde se quedó. * módulos: (apache, system, mysql, ...) para facilitar la captura * no sobrecarga el sistema (back-pressure sensitive protocol):{{ :info:cursos:openwebinars:elk:beats:pasted:20211205-014114.png?600 }} * prospector: monitoriza ficheros, uno por cada uno, enviado a un spooler == instalación y configuración * curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.2-amd64.deb sudo dpkg -i filebeat-5.4.2-amd64.deb service filebeat { start | status | stop} * como metricbeats, puede enviar a logstatsh o elasticsearh directamente * **/etc/filebeat/filebeat.yml**:filebeat.prospectors: - input_type: log paths: - /var/log/apache2/access.log* - /var/log/apache2/other_vhosts_access.log* exclude_files: [".gz$"] output.logstash: hosts:["172.16.2.21:61000"] * parámetros de autenticación para Elasticsearch * certificados para Logstash * input { beats { port=>"61000" tags => ["apache2"] } } filter { grok { match => { "message" => ["%{IPORHOST:[apache2][access][remote_ip]} - %{DATA:[apache2][access][user_name]} \[%{HTTPDATE:[apache2][access][time]}\] \"%{WORD:[apache2][access][method]} %{DATA:[apache2][access][url]} HTTP/%{NUMBER:[apache2][access][http_version]}\" %{NUMBER:[apache2][access][response_code]} %{NUMBER:[apache2][access][body_sent][bytes]}( \"%{DATA:[apache2][access][referrer]}\")?( \"%{DATA:[apache2][access][agent]}\")?", "%{IPORHOST:[apache2][access][remote_ip]} - %{DATA:[apache2][access][user_name]} \\[%{HTTPDATE:[apache2][access][time]}\\] \"-\" %{NUMBER:[apache2][access][response_code]} -" ] } remove_field => "message" } mutate { add_field => { "read_timestamp" => "%{@timestamp}" } } date { match => [ "[apache2][access][time]", "dd/MMM/YYYY:H:m:s Z" ] remove_field => "[apache2][access][time]" } useragent { source => "[apache2][access][agent]" target => "[apache2][access][user_agent]" remove_field => "[apache2][access][agent]" } geoip { source => "[apache2][access][remote_ip]" target => "[apache2][access][geoip]" } } output { elasticsearch { host => ... manage_template => false index=>"%{[@metadata][beat]-%{YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } * crear indice en kibana **filebeats-%%*%%**