Il existe plusieurs alternatives à carbon, la plus connu étant surement influxdb. Celle ci est basée sur cassandra!
+https://github.com/kairosdb/kairos-carbon
via arnaudb
Le principe des table de hash distribuées
When receiving messages using the UDP protocol, increase the size of the UDP receive buffer on the receiver host (that is, the syslog-ng OSE server or relay receiving the messages). Note that on certain platforms, for example, on Red Hat Enterprise Linux 5, even low message load (~200 messages per second) can result in message loss, unless the so_rcvbuf() option of the source is increased. In such cases, you will need to increase the net.core.rmem_max parameter of the host (for example, to 1024000), but do not modify net.core.rmem_default parameter.
As a general rule, increase the so_rcvbuf() so that the buffer size in kilobytes is higher than the rate of incoming messages per second. For example, to receive 2000 messages per second, set the so_rcvbuf() at least to 2 097 152 bytes.
Prenons un bash qui ouput sur sa sortie standard (stdout) et sur sa sortie d'erreur (stderr) :
echo good
echo bad >&2
echo vanish >&2
echo good!
Comment faire pour rediriger la sortie standard vers un fichier (ou /dev/null pour l'exemple) et filter la sortie d'erreur pour retirer la ligne "vanish" ?
Pour ça il faut utiliser un process substitution :
/root/test.bash 2> >(grep -v vanish >&2) >/dev/null
Bien pratique dans un crontab pour recevoir un peu moins de mail lorsqu'on a des "erreurs" acceptables (rsync vanished par exemple)
SHELL=/bin/bash
Pour en savoir plus sur les process substitution : http://tldp.org/LDP/abs/html/process-sub.html
Pas con le coup de bien formater les logs pour que logstash ait moins de boulot de parsing de son côté.
Bon article, résume très bien les volumes dans docker
Ok j'ai eu le meme probleme : le syslog input de logstash tombe systématiquement en grok failure..
Remplaçable facilement par un udp input !
Je prends de plus en plus le réflexe de "git init" dans certains dossiers un peu chaud qui bougent beaucoup comme des dossiers de configuration..
Et là arrive le moment où je me pose la question : qu'est ce que j'ai touché depuis que j'ai fais mon git ini ? Et voilà la commande magique qui répond à ma question :
git diff --name-only SHA1 SHA2
Après si vous voulez la liste entre le premier et le dernier commit :
git diff --name-only HEAD $(git log --format=%H | tail -1)
destination mail-alert-perl { program("/usr/local/bin/syslog-mail-perl"); };
Bon à savoir, pour rediriger la sortie standard d'un cron dans un fichier avec la date, penser à échapper les "%"
/path/to/log/dir/$(date +\%Y-\%m-\%d).log
D'après la doc :
don't confuse RUN with CMD.
RUN actually runs a command and commits the result;
CMD does not execute anything at build time, but specifies the intended command for the image.
An ENTRYPOINT helps you to configure a container that you can run as an executable. That is, when you specify an ENTRYPOINT, then the whole container runs as if it was just that executable.
Unlike the behavior of the CMD instruction, The ENTRYPOINT instruction adds an entry command that will not be overwritten when arguments are passed to docker run. This allows arguments to be passed to the entry point, i.e. docker run <image> -d will pass the -d argument to the entry point.
You can specify parameters either in the ENTRYPOINT JSON array (as in "like an exec" above), or by using a CMD instruction. Parameters in the ENTRYPOINT instruction will not be overridden by the docker run arguments, but parameters specified via a CMD instruction will be overridden by docker run arguments.
Le RUN sert à build l'image
Le CMD et l'ENTRYPOINT servent au moment du docker run
Donc au final, il vaut mieux avoir un ENTRYPOINT avec des paramètres qu'on ne peut pas écraser (non overridable)
Pourquoi pas un CMD avec des paramètres par défauts overridable
docker dispo sur le lab d'online
hebergement à base de docker