Kubetail permet d'agréger et d'afficher en temps réel les logs d'un ou plusieurs pods
Pour centraliser les logs des pods dans Cloudwatch Logs avec un cluster Kubernetes provisionné par KOPS:
$ kops edit cluster
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: kops/v1alpha2
kind: Cluster
spec:
...
additionalPolicies:
node: |
[
{
"Effect": "Allow",
"Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": ["*"]
}
]
master: |
[
{
"Effect": "Allow",
"Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
"Resource": ["*"]
}
]
docker:
logDriver: awslogs
logOpt:
- awslogs-region=eu-west-1
- awslogs-group=k8s
...
$ kops update cluster --yes # used only to update additional iam policies
$ kops rolling-update --yes --force # used to recreate every k8s cluster members (docker logdriver and logopt will be added to /etc/sysconfig/docker at the first boot)
Attention les noms des streams de logs dans cloudwatch correspondent aux id des containers, ce n'est pas très pratique...
EDIT: en utilisant cette méthode, les logs ne sont plus accessible via la commande kubectl logs
. Du coup je ne recommande pas cette approche...
L'article explique comment streamer des logs de Cloudwatch logs dans un cluster Amazon ElasticSearch
Une excellente explication du GELF driver Docker qui permet de centraliser les logs des containers dans un ELK, Graylog ou autre solution de centralisation de log du même type.
LinkedIn utilise un outils maison pour analyser les exceptions dans les logs applicatifs. Chaque nouvelle exception est enregistrée dans une base avec son hash. Le nombre d'occurrence de chaque exception par période de temps est ensuite enregistré dans une autre table. Cette solution nécessite seulement 30Gb pour stocker l'ensemble des exceptions alors qu'une solution ELK nécessiterait 50Pb pour centraliser l'ensemble des logs de leurs applications.
Un tuto pour parser et centraliser les logs avec logstash. La possibilité d'envoyer des alertes via PagerDuty ou mail directement depuis logstash est intéressante aussi
Comment centraliser les logs des containers Docker dans Cloudwatch en utilisant awslogs et comment les envoyer par la suite dans une stack ELK en passant par un export S3.
Un analyseur de logs de serveurs web qui fonctionne avec Apache, Nginx, AWS S3, AWS ELB et fonctionne dans un terminal ou avec des exports HTML