Kibana ens ajuda amb els logs de AWS Cloudfront i WAF Akamai

L’anàlisis dels logs en qualsevol plataforma és molt important ja que ens permet veure quin és el comportament de cadascun dels components, alhora, ens permet des de corregir error, preveure averies a millorar el producte. De totes les solucions que he tingut la sort de probar, Splunk és la que més m’ha agradat. L’unic inconvenient d’utilitzar l’Splunk és el seu preu.

Degut al alt cost de l’Splunk i aprofitant que l’empresa on treballo necessita analitzar els logs de les CDNs de AWS Cloudfront i Akamai, vaig aprofitar per probar Kibana+Elastcisearch+Logstash. L’objectiu d’aquest post és mostrar el potencial d’aquesta combinació, una solució més econòmica que el gran tot poderos Splunk.

Comencem amb els logs de Akmaai, aquí us paso el format de log que volem analitzar, extret de la documentació oficial:

waf_logformat

apache_logformat

El filtre de logstash que he implementat és :

filter {
    grok {
      type => "esw3c_waf"
      match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] (?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest}) %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{QS:cookies} \"%{WORD:WafPolicy}\|%{DATA:WafAlertRules}\|%{DATA:WafDenyRules}\"" }
    }

    date {
      type => "esw3c_waf"
      match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
      locale => "en"
    }

}

Pel que fa als logs de AWS Cloudfront, el format del log esta documentat en aquest , però basicament és:

#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query cs(Cookie) x-edge-result-type x-edge-request-id x-host-header cs-protocol cs-bytes 
07/01/2012 01:13:11 FRA2 182 192.0.2.10 GET d111111abcdef8.cloudfront.net /view/my/file.html 200 www.displaymyfiles.com Mozilla/4.0%20(compatible;%20MSIE%205.0b1;%20Mac_PowerPC) - zip=98101 RefreshHit MRVMF7KydIvxMWfJIglgwHQwZsbG2IhRJ07sn9AkKUFSHS9EXAMPLE== d111111abcdef8.cloudfront.net http -

A més, logstash té implementat un input contra S3, ideal per a aquest cas.
Per la part del filtre, l’expressió és la seguent:

filter {
    grok {
    type => "aws"
    pattern => "%{DATE_EU:date}\t%{TIME:time}\t%{WORD:x-edge-location}\t(?:%{NUMBER:sc-bytes}|-)\t%{IPORHOST:c-ip}\t%{WORD:cs-method}\t%{HOSTNAME:cs-host}\t%{NOTSPACE:cs-uri-stem}\t%{NUMBER:sc-status}\t%{GREEDYDATA:referrer}\t%{GREEDYDATA:User-Agent}\t%{GREEDYDATA:cs-uri-stem}\t%{GREEDYDATA:cookies}\t%{WORD:x-edge-result-type}\t%{NOTSPACE:x-edge-request-id}\t%{HOSTNAME:x-host-header}\t%{URIPROTO:cs-protocol}\t%{INT:cs-bytes}"
}
mutate {
    type => "aws"
        add_field => [ "listener_timestamp", "%{date} %{time}" ]
    }
date {
      type => "aws"
      match => [ "listener_timestamp", "yy-MM-dd HH:mm:ss" ]
    }
}

Per cert, recomenar-vos activar el LifeCycle en el Bucket de S3 per a configurar un purgat de logs, creix ràpid (evidentment, el creixement també depen del vostre tràfic).

Un cop definit com farem la importació passem a comentar on guardarem les dades, ho farem en el Elasticsearch 1.0 aprofitant que ha sortit recentment. Vull destarcar 2 pluguins que als sysadmins els agradara conèixer, el pluguin HEAD i MARVEL.

Captura de pantalla del pluguin HEAD, on hem fet un index per dia/cdn
ElasticHead

Captura de pantalla del pluguin MARVEL
Marvel

Abans de pasar a la part de pintar les dades, us paso dos links amb les GROKS disponibles i una eina per a contruir-les
Llista de patrons GROK disponibles
Eina per construir les configuracions

Per acabar, per a pintar totes aquestes dades utilitzarem la aplicació de Kibana, una aplicació javascript que utilitza les dades del elaticsearch per a poder crear informes, gràfiques i filtres acurats.

Per començar he fet 2 dashboards molt simples, per una banda el de WAF de Akamai i per una altra el de Cloudfront.

Dashboard de Cloudfront:
CloudfrontDashboard

Dashboard de Akamai:
AkamaiDashboard

blog personal amb domini .CAT propi, distribució i hospedatge per menys de 7€/any

Avui és un dia trist professionalment parlant perquè el passat divendres en Tomas Nuñez, company de feina amb qui m’ho he passat molt bé durant els darrers 2 anys, va finalitzar el contracte i ha marxat al Canada a començar una nova experiència  aprofito el post per desitjar-li tota la bona sort en la seva nova aventura on estic convençut que s’ho passarà molt bé!

A més, també cal remarcar que la motivació inicial de trastejar tot l’esmentat en aquest post va néixer sopant amb els ex-companys de la EGB, on un d’ells, l’Estanis Plantada, un geògraf viatger apassionat de la bicicleta vol fer montar-se un site per anar publicant les seves experiències.

Dit això, vaig per feina, en aquest post us explicaré com publicar un blog (en el meu cas el que tenia en la RaspberryPi) en el “cloud” (Amazon) on l’hi traurem un millor rendiment per menys de 8€ el primer any, no entraré molt en detall tècnic, únicament el que és important és tenir recopilades TOTES les funcionalitats implementades amb un cost molt baix, alhora, recopilo els links de les diferents fonts que he anat coneixent i jugant. Per a cada punt teniu el link de les fonts consultades on he tret la informació.

    • Registre de domini

En poc menys d’uns mesos els dominis .puntCAT han baixat molt el seu preu, vaig repassar els registradors i el més econòmic va ser CDMON que per 6.95€. Els amics de Google han llençat als EUA, Canada i ha algun país més el projecte GYBO, on pots conseguir gratis el primer any el registre de un 1 domini amb TLD del tipus .ORG .COM .CA .IN, després val 5$/mes.

    • Distribució i securització del blog gràcies a la CDN de CloudFlare

Si volem minitzar el trafic entre el usuari final i el hosting que tindrem en Amazon, podem activar gratuitament la funcionalitat de CDN de Cloudfare, a més, també hi afegim un petit control de seguretat. L’unic inconvenient és que la versió gratuita no soporta la distribució de continguts utilitzant el protocol segur HTTPS.

Muntem un node virtual en Amazon EC2 on hi posarem el blog (en el meu cas he migrat el blog de la RaspberryPi), aquí és on els tècnics posem més de la nostre part :). A més, cal remarcar que tindrem control total d’una maquina virtual en 1 dels CPD’s, molt útil per qualsevol tècnic que ho munti on ho aprofitarà per trastejar i implementar altres eines (ja podeu estar segurs). A destacar! tenim gratis fins a un volum de 30GB en Amazon S3! (podem muntar un owncloud i ja tenim més que GoogleDrive i Dropbox!)

Doncs tot això ho tenim muntat en poc més d’unes hores on només hi hem invertit menys de 7€!