Skip to content

Instantly share code, notes, and snippets.

@theist
Last active August 19, 2017 23:44
Show Gist options
  • Save theist/ef711ee1b71484b2cbeb5596874a83f8 to your computer and use it in GitHub Desktop.
Save theist/ef711ee1b71484b2cbeb5596874a83f8 to your computer and use it in GitHub Desktop.
input {
s3 {
# KEY / Secret de amazon, editar segun convenga
access_key_id => "AKIATITELAVOYADECIR"
secret_access_key => "876af98asd6f98ew6fasd98f"
# Bucket de s3 dodne se guarda el billing
bucket => "billing-bucket"
# prefijo (comienzo del nombre de fichero)
prefix => "555555555555555-aws-billing-csv-"
}
}
filter {
csv {
## Columnas extraidas tal cual de la primera linea de la factura
columns => ["InvoiceID","PayerAccountId","LinkedAccountId","RecordType",
"RecordID","BillingPeriodStartDate","BillingPeriodEndDate",
"InvoiceDate","PayerAccountName","LinkedAccountName","TaxationAddress",
"PayerPONumber","ProductCode","ProductName","SellerOfRecord","UsageType",
"Operation","RateId","ItemDescription","UsageStartDate","UsageEndDate",
"UsageQuantity","BlendedRate","CurrencyCode","CostBeforeTax","Credits",
"TaxAmount","TaxType","TotalCost"]
## Columnas que seran indexadas como tipo "float" (si no lo son es imposible hacer cálculos)
convert => { "UsageQuantity" => "float" }
convert => { "BlendedRate" => "float" }
convert => { "CostBeforeTax" => "float" }
convert => { "Credits" => "float" }
convert => { "TaxAmount" => "float" }
convert => { "TotalCost" => "float" }
}
# Retirar todo lo que no sean cargos
if [RecordType] not in ["LinkedLineItem","PayerLineItem"] { drop {} }
## Fecha del evento modificada
date {
locale => "en_US"
match => ["BillingPeriodEndDate","yyyy/MM/dd HH:mm:ss"]
tag_on_failure => ["date_error"]
}
## Campos de fecha que queramos guardar como tal
date {
target => "BillingPeriodStartDate"
locale => "en_US"
match => ["BillingPeriodStartDate","yyyy/MM/dd HH:mm:ss"]
tag_on_failure => ["date_error"]
}
date {
target => "UsageStartDate"
locale => "en_US"
match => ["UsageStartDate","yyyy/MM/dd HH:mm:ss"]
tag_on_failure => ["date_error"]
}
date {
target => "UsageEndDate"
locale => "en_US"
match => ["UsageEndDate","yyyy/MM/dd HH:mm:ss"]
tag_on_failure => ["date_error"]
}
date {
target => "BillingPeriodEndDate"
locale => "en_US"
match => ["BillingPeriodEndDate","yyyy/MM/dd HH:mm:ss"]
tag_on_failure => ["date_error"]
}
}
## Salida
output {
if [date_error] in [tags] {
## mostrar fallidos si hay error de conversion de fecha
stdout { codec => plain }
} else {
## Volcar como un punto en pantalla y en elastic
stdout { codec => dots }
elasticsearch {
hosts => ["elasticsearch:9200"]
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment