Bonjour,
Désolé pour le délai de ma réponse, d'autres priorités...
J'ai enfin réussi à parser mes logs correctement.
Voici la configuration fluent-bit :
1) l'input :
input-kubernetes.conf: |
[INPUT]
Name tail
Tag kube.*
Path /var/log/containers/*your-log-filename*.log
Parser json
DB /var/log/flb_kube.db
Mem_Buf_Limit 5MB
Skip_Long_Lines On
Refresh_Interval 10
2) le parser :
parsers.conf: |
[PARSER]
Name json
Format json
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L
# IMPORTANT pour parser les logs applicatifs
Decode_Field_As json log
3) les filters
filter-kubernetes.conf: |
[FILTER]
Name kubernetes
Match kube.*
Kube_URL https://kubernetes.default.svc:443
Kube_CA_File /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
Kube_Token_File /var/run/secrets/kubernetes.io/serviceaccount/token
Kube_Tag_Prefix kube.var.log.containers.
Merge_Log Off
Merge_Log_Key log_processed
K8S-Logging.Parser On
K8S-Logging.Exclude Off
[FILTER]
Name record_modifier
Match *
Record X-OVH-TOKEN ${FLUENT_LDP_TOKEN}
[FILTER]
Name record_modifier
Match *
Record fluent-bit-host ${HOSTNAME}
[FILTER]
Name nest
Match *
Wildcard pod_name
Operation lift
Nested_under kubernetes
Add_prefix kubernetes_
[FILTER]
Name modify
Match *
Copy kubernetes_pod_name host
[FILTER]
Name nest
Match *
Operation lift
# doit correspondre au champ log décodé par le parser
Nested_under log
l'output :
output-ldp.conf: |
# usefully to debug, log result in fluent-bit pods
# [OUTPUT]
# Name stdout
# Match *
[OUTPUT]
Name gelf
Match *
Host ${FLUENT_LDP_HOST}
Port ${FLUENT_LDP_PORT}
Mode tls
tls On
Compress False
# définit quel champ sera affiché dans graylog par défaut
Gelf_Short_Message_Key message
Tips :
Si votre app log un champ "level" "avec warn ou error, vous pouvez avoir une erreur de type :
level is 'WARN', but should be in 0..7 or a syslog keyword
La valeur ne correspond pas aux valeurs acceptées, cf https://en.wikipedia.org/wiki/Syslog#Severity_level
Dans ce cas, dans votre app, renommer le champ (ex: _level
).
Merci.
Je teste maintenant le system d'alerting dans OVH pour recevoir des emails en cas d'erreurs.
Cdt,
Johann