Skip to content

Instantly share code, notes, and snippets.

@trangnth
Last active June 4, 2021 04:10
Show Gist options
  • Save trangnth/b1a967c16fa9d368632fe956199619b8 to your computer and use it in GitHub Desktop.
Save trangnth/b1a967c16fa9d368632fe956199619b8 to your computer and use it in GitHub Desktop.
RabbitMQ

Từ version 3.8.0, rabbitmq có tích hợp prometheus native

  • enable plugin trên tất cả các node trong cluster
rabbitmq-plugins enable rabbitmq_prometheus
  • Mặc định thì metrics sẽ được export ra port 15692 vs /metric
curl -v -H "Accept:text/plain" "http://localhost:15692/metrics"
  • Thêm job trên prometheus, ví dụ:
   - job_name: 'ctl-rabbitmq'
    scrape_interval: 30s
    metrics_path: /metrics
    static_configs:
    - targets: ['172.1.1.1:15692','172.1.1.2:15692','172.1.1.3:15692']
      labels:
          alias: 'ctl-rabbitmq'
  • Thêm dashboard trên grafana, tham khảo thêm ở link dưới đây

https://grafana.com/rabbitmq

upgrade rabbitmq từ 3.6.x -> 3.8.16

backup lại user password

Listing users
monitor [monitoring]
openstack       [None]
guest   [administrator]

Listing permissions in vhost "/"
openstack       .*      .*      .*
guest   .*      .*      .*
monitor .*      .*      .*

Listing policies
/       ha-all  all     ^(?!amq\\.).*   {"ha-mode":"all"}       0
  • Thực hiện stop lần lượt tất cả các neutron-dhcp agent
  • Sau đó thực hiện stop_app, stop service rabbitmq-server, thực hiện trên trên tất cả các node rabbitmq trong cluster, sau đó cài đặt rabbitmq-server lastest
rabbitmqctl stop_app
sudo systemctl stop rabbitmq-server
sudo apt-get install curl gnupg debian-keyring debian-archive-keyring apt-transport-https -y

sudo apt-key adv --keyserver "hkps://keys.openpgp.org" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
curl -1sLf https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/gpg.E495BB49CC4BBE5B.key | sudo apt-key add -
curl -1sLf https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key | sudo apt-key add -

sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu bionic main
deb-src https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu bionic main

## Provides RabbitMQ
##
deb https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu bionic main
deb-src https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu bionic main
EOF

## Update package indices
sudo apt-get update -y

## Install Erlang packages
sudo apt-get install -y erlang-base \
                        erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                        erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                        erlang-runtime-tools erlang-snmp erlang-ssl \
                        erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

2 node đầu, cài sẽ bị lỗi, không start được rabbitmq, đến node cuối cùng thì sẽ ko lỗi gì, tự start được, lúc đó chỉ cần quay lại start rabbitmq-server service trên tất cả các node còn lại là được

ko cần start_app lại luôn =))

  • check lại cluster status node
root@controller-1:~# rabbitmqctl cluster_status
Cluster status of node rabbit@controller-1 ...
Basics

Cluster name: rabbit@controller-1

Disk Nodes

rabbit@controller-1
rabbit@controller-2
rabbit@controller-3

Running Nodes

rabbit@controller-1
rabbit@controller-2
rabbit@controller-3

Versions

rabbit@controller-1: RabbitMQ 3.8.16 on Erlang 24.0.2
rabbit@controller-2: RabbitMQ 3.8.16 on Erlang 24.0.2
rabbit@controller-3: RabbitMQ 3.8.16 on Erlang 24.0.2

Maintenance status

Node: rabbit@controller-1, status: not under maintenance
Node: rabbit@controller-2, status: not under maintenance
Node: rabbit@controller-3, status: not under maintenance

Alarms

(none)

Network Partitions

(none)

Listeners

Node: rabbit@controller-1, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@controller-1, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@controller-1, interface: 172.1.1.1, port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@controller-2, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@controller-2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@controller-2, interface: 172.1.1.2, port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@controller-3, interface: [::], port: 15672, protocol: http, purpose: HTTP API
Node: rabbit@controller-3, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@controller-3, interface: 172.1.1.3, port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0

Feature flags

Flag: drop_unroutable_metric, state: disabled
Flag: empty_basic_get_metric, state: disabled
Flag: implicit_default_bindings, state: disabled
Flag: maintenance_mode_status, state: disabled
Flag: quorum_queue, state: disabled
Flag: user_limits, state: disabled
Flag: virtual_host_metadata, state: disabled

======================================

  • list queue -> delete multi queue
rabbitmqctl list_queues | grep senlin | wc -l
rabbitmqctl list_queues | grep senlin | awk '{print $1}' > senlin_queue1.txt
for i in $(cat senlin_queue1.txt); do rabbitmqadmin -H 172.1.1.1 -u monitor -p dsdndasd2p delete queue name=$i ; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment