wiki/HowtoRabbitMQ.md
2016-12-26 17:26:24 +01:00

4.3 KiB

Howto RabbitMQ

https://www.rabbitmq.com/

Installation

# apt install rabbitmq-server
# rabbitmqctl status

 {running_applications,[{rabbit,"RabbitMQ","3.3.5"},
                        {mnesia,"MNESIA  CXC 138 12","4.12.3"},
                        {os_mon,"CPO  CXC 138 46","2.3"},
                        {xmerl,"XML parser","1.3.7"},
                        {sasl,"SASL  CXC 138 11","2.4.1"},
                        {stdlib,"ERTS  CXC 138 10","2.2"},
                        {kernel,"ERTS  CXC 138 10","3.0.3"}]},
 {os,{unix,linux}},
 {erlang_version,"Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:4:4] [async-threads:30] [kernel-poll:true]\n"},

Configuration

La configuration par défaut de RabbitMQ est souvent utilisable en l'état, sans besoin de modification.

Si l'on doit modifier la configuration, voici les fichiers :

  • /etc/rabbitmq/rabbitmq-env.conf : variables d'environnement pour RabbitMQ
  • /etc/rabbitmq/rabbitmq.config : options pour RabbitMQ
  • /etc/default/rabbitmq-server : configuration système (ulimit)

Variables d'environnement pour RabbitMQ

Il faut donc créer le fichier :

# touch /etc/rabbitmq/rabbitmq-env.conf
# chmod 600 /etc/rabbitmq/rabbitmq-env.conf
# chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq-env.conf

Différentes variables RABBITMQ_* sont utilisables :

RABBITMQ_NODE_PORT=672
RABBITMQ_SERVER_ERL_ARGS="+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true}]"

Options pour rabbitmq.config

Il faut donc créer le fichier :

# touch /etc/rabbitmq/rabbitmq.config
# chmod 600 /etc/rabbitmq/rabbitmq.config
# chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq.config

Différentes options sont utilisables (voir /usr/share/doc/rabbitmq-server/rabbitmq.config.example.gz pour un exemple).

Si l'on veut que RabbitMQ n'écoute que sur l'interface localhost :

[
  {rabbit, [
    {tcp_listeners, [{"127.0.0.1", 5672},
                     {"::1",       5672}]}
  ]}
].

Configuration système

/etc/default/rabbitmq-server :

ulimit -n 2048

Management RabbitMQ

rabbitmqctl

# rabbitmqctl status
# rabbitmqctl list_connections
# rabbitmqctl list_queues

Activation de l'interface web de management

Pour activer l'interface web de management :

# rabbitmq-plugins enable rabbitmq_management
# chown rabbitmq:rabbitmq /etc/rabbitmq/enabled_plugins
# systemctl restart rabbitmq-server
# rabbitmqctl add_user admin PASSWORD
# rabbitmqctl set_user_tags admin administrator

On a ainsi accès à l'interface web via http://127.0.0.1:15672/

On peut aussi mettre en place un proxy via Nginx :

location /rabbitmq/ {
    proxy_pass http://127.0.0.1:15672/;
    include proxy_params;
}                                       

Activation CLI (TODO: à vérifier)

https://www.rabbitmq.com/management-cli.html

On peut installer un binaire permettant d'avoir un mode CLI pour RabbitMQ :

{{{ $ curl localhost:15672/cli/rabbitmqadmin > /usr/local/bin/rabbitmqadmin $ chmod 755 /usr/local/bin/rabbitmqadmin $ rabbitmqadmin --bash-completion > /etc/bash_completion.d/rabbitmqadmin }}}

/root/.rabbitmqadmin.conf {{{ [default] username = admin password = PASSWORD }}}

Sauvegarde

À l'aide du CLI :

# rabbitmqadmin export rabbitmq.config

Munin

On utilise rabbitmq_connections :

$ wget https://raw.githubusercontent.com/ask/rabbitmq-munin/master/rabbitmq_connections
$ chmod +x rabbitmq_connections
$ ./rabbitmq_connections

Attention, rabbitmq_connections utilise la commande rabbitmqctl vous devez donc adapter le script ou configurer /etc/munin/plugin-conf.d/munin-node ainsi :

[rabbitmq_connections]
user rabbitmq
EOT

Nagios

On utilise check_rabbitmq (merci à https://github.com/CaptPhunkosis) :

# apt install python-requests
$ wget https://raw.githubusercontent.com/CaptPhunkosis/check_rabbitmq/master/check_rabbitmq
$ chmod +x check_rabbitmq
$ ./check_rabbitmq -a connection_count -C 100 -W 80

Attention, check_rabbitmq utilise la commande sudo rabbitmqctl vous devez donc adapter le script ou configurer sudo.

nagios ALL = (rabbitmq) NOPASSWD: /usr/sbin/rabbitmqctl list_connections
nagios ALL = (rabbitmq) NOPASSWD: /usr/sbin/rabbitmqctl list_queues
nagios ALL = (rabbitmq) NOPASSWD: /usr/sbin/rabbitmqctl list_status