一 應用場景描述
測試環境業務 OpenStack中搭建了rabbitmq作為RPC消息隊列,所以mq起到了很重要的角色,本案例是來如何使用zabbix監控
rabbitmq業務
二 Rabbitmq監控要點
RabbitMQ官方提供兩種方法來管理和監控RabbitMQ。
1.使用rabbitmqctl管理和監控
查看虛擬主機
# rabbitmqctl list_vhosts
查看隊列
# rabbitmqctl list_queues
查看exchanges
# rabbitmqctl list_exchanges
查看用戶
# rabbitmqctl list_users
查看連接
# rabbitmqctl list_connections
查看消費者信息
# rabbitmqctl list_consumers
查看環境變量
# rabbitmqctl environment
查看未被確認的隊列
# rabbitmqctl list_queues name messages_unacknowledged
查看單個隊列的內存使用
# rabbitmqctl list_queues name memory
查看准備就緒的隊列
# rabbitmqctl list_queues name messages_ready
2.使用RabbitMQ Management插件來監控和管理
開啟Management插件
# rabbitmq-plugins enable rabbitmq_management
通過這樣的網址訪問可以看到RabbitMQ的狀態
http://172.28.2.157:15672/cli/rabbitmqadmin
下載rabbitmqadmin管理工具
獲取vhost列表
# curl -i -u guest:guest http://localhost:15672/api/vhosts
獲取頻道列表,限制顯示格式
# curl -i -u guest:guest "http://localhost:15672/api/channels?sort=message_stats.publish_details.rate&sort_reverse=true&columns=name,message_stats.publish_details.rate,message_stats.deliver_get_details.rate"
顯示概括信息
# curl -i -u guest:guest "http://localhost:15672/api/overview"
management_version 管理插件版本
cluster_name 整個RabbitMQ集群的名稱,通過rabbitmqctl set_cluster_name 進行設置
publish 發布的消息總數
queue_totals 顯示准備就緒的消息,未確認的消息,未提交的消息等
statistics_db_event_queue 顯示還未必數據庫處理的事件數量
consumers 消費者個數
queues 隊列長度
exchanges 隊列交換機的數量
connections 連接數
channels 頻道數量
顯示節點信息
# curl -i -u guest:guest "http://localhost:15672/api/nodes"
disk_free 磁盤剩余空間,以字節表示
disk_free_limit 磁盤報警的閥值
fd_used 使用掉的文件描述符數量
fd_total 可用的文件描述符數量
io_read_avg_time 讀操作平均時間,毫秒為單位
io_read_bytes 總共讀入磁盤數據大小,以字節為單位
io_read_count 總共讀操作的數量
io_seek_avg_time seek操作的平均時間,毫秒單位
io_seek_count seek操作總量
io_sync_avg_time fsync操作的平均時間,毫秒為單位
io_sync_count fsync操作的總量
io_write_avg_time 每個磁盤寫操作的平均時間,毫秒為單位
io_write_bytes 寫入磁盤數據總量,以字節為單位
io_write_count 磁盤寫操作總量
mem_used 內存使用字節
mem_limit 內存報警閥值,默認是總的物理內存的40%
mnesia_disk_tx_count 需要寫入到磁盤的Mnesia事務的數量
mnesia_ram_tx_count 不需要寫入到磁盤的Mnesia事務的數量
msg_store_write_count 寫入到消息存儲的消息數量
msg_store_read_count 從消息存儲讀入的消息數量
proc_used Erlang進程的使用數量
proc_total Erlang進程的最大數量
queue_index_journal_write_count 寫入到隊列索引日志的記錄數量。每條記錄表示一個被發布到隊列,從消息隊列中被投遞出或者在消息隊列中被q確認的消息
queue_index_read_count 從隊列索引讀出的記錄數量
queue_index_write_count 寫入到隊列索引的記錄數量
sockets_used 以socket方式使用掉的文件描述符數量
partitions
uptime 自從Erlang VM啟動時,運行的時間,單位好毫秒
run_queue 等待運行的Erlang進程數量
processors 檢測到被Erlang進程使用到的內核數量
net_ticktime 當前設置的內核tick time
查看頻道信息
# curl -i -u guest:guest "http://localhost:15672/api/channels"
查看交換機信息
# curl -i -u guest:guest "http://localhost:15672/api/exchanges"
查看隊列信息
# curl -i -u guest:guest "http://localhost:15672/api/queues"
查看vhosts信息
# curl -i -u guest:guest "http://localhost:15672/api/vhosts/?name=/"