成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控-創(chuàng)新互聯(lián)

本系列是「RabbitMQ實(shí)戰(zhàn):高效部署分布式消息隊(duì)列」書籍的總結(jié)筆記。

目前創(chuàng)新互聯(lián)建站已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、陸豐網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

上一篇總結(jié)了可能出現(xiàn)的異常場(chǎng)景,并對(duì)RabbitMQ提供的可用性保證進(jìn)行了分析,在出現(xiàn)服務(wù)器宕機(jī)后,仍然可以正常服務(wù)。另外,需要盡快恢復(fù)異常的服務(wù)器,重新加入集群,推送未消費(fèi)的消息,通過監(jiān)控可第一時(shí)間接收到錯(cuò)誤并進(jìn)行處理。

另外,我們想主動(dòng)了解消息堆積和消費(fèi)的情況,以及服務(wù)器節(jié)點(diǎn)的壓力,RabbitMQ提供了幾種方式便捷、直觀的了解,包括Web管理插件、REST API、rabbitmqadmin腳本。

通過介紹,你會(huì)了解到:

  • web管理插件
  • REST API
  • rabbitmqadmin腳本
  • Nagios和監(jiān)控RabbitMQ
web管理插件

RabbitMQ的插件是由Erlang語(yǔ)言寫的,并且和服務(wù)器一同運(yùn)行在同一個(gè)Erlang VM中,通過下面的命令啟用web管理插件:

sudo ./rabbitmq-plugins enable rabbitmq_management

啟動(dòng)之后,訪問15672端口,可看到Web管理頁(yè)面主頁(yè)面:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

添加用戶

默認(rèn)會(huì)提供一個(gè)默認(rèn)用戶guest,密碼也是guest,線上環(huán)境需要?jiǎng)?chuàng)建一個(gè)新用戶,并把guest用戶刪除。

首先切換到Admin標(biāo)簽頁(yè),可以查看或添加用戶,添加用戶時(shí),可指定Tags,相當(dāng)于角色,會(huì)擁有對(duì)應(yīng)的權(quán)限:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

點(diǎn)擊用戶列表的用戶名,可分配權(quán)限、編輯或刪除用戶,分配權(quán)限時(shí),可細(xì)化到某個(gè)virtual下的某個(gè)topic,并按讀、寫、配置類別進(jìn)行分開:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

管理隊(duì)列、交換器、綁定

切換到“Exchanges”標(biāo)簽,可查看和管理交換器,單擊交換器名稱,可查看到更多詳細(xì)信息,比如交換器綁定,還可以添加新的綁定:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

切換到“Queues”標(biāo)簽,可以查看隊(duì)列信息,點(diǎn)擊隊(duì)列名稱,可查看隊(duì)列所有狀態(tài)的消息數(shù)量和大小等統(tǒng)計(jì)信息:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

還可以查看消費(fèi)者和綁定,發(fā)布、獲取消息:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

REST API

有時(shí)需要初始化一些列隊(duì)列和交換器,每次部署一套新環(huán)境后,都需要一步一步創(chuàng)建會(huì)有點(diǎn)麻煩,通過REST API可方便的實(shí)現(xiàn)自動(dòng)化腳本。

當(dāng)啟用web管理插件后,不僅獲得了WEB UI,也擁一個(gè)REST化的WEB管理API,任何語(yǔ)言或腳本只要有HTTP庫(kù),都能調(diào)用。

接口會(huì)返回json串,比如獲取所有隊(duì)列:

curl -i -u admin:admin http://localhost:15672/api/queues

會(huì)返回一個(gè)json數(shù)組,每個(gè)元素是一個(gè)隊(duì)列,包含隊(duì)列的各種屬性:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

rabbitmqadmin腳本

另外,還提供了rabbitmqadmin腳本的方式查看元數(shù)據(jù)信息和一些統(tǒng)計(jì)數(shù)據(jù),它會(huì)包裝REST API,使用干凈的接口與其交互,而且輸出內(nèi)容也是格式化過的,方便我們查看。

比如查看所有隊(duì)列,可以這樣寫:

./rabbitmqadmin list queues

會(huì)返回如下結(jié)果:

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

監(jiān)控

監(jiān)控RabbitMQ并不只是確保端口5672是開啟的并能接收TCP連接而已,還要能夠模擬AMQP客戶端來確保連接之后獲取信道,如果能使用REST API找出是否所有構(gòu)成RabbitMQ部件都正常運(yùn)行,并且之間能正常通信,就更好了。

書中介紹使用Nagios監(jiān)控框架進(jìn)行監(jiān)控,我之前沒有使用,這里搜集了一些資料,會(huì)做下簡(jiǎn)單介紹。

Nagios

Nagios是一款開源的監(jiān)控工具,能有效監(jiān)控Windows、Linux和Unix的主機(jī)狀態(tài),交換機(jī)路由器等網(wǎng)絡(luò)設(shè)置,打印機(jī)等。在系統(tǒng)或服務(wù)狀態(tài)異常時(shí)發(fā)出郵件或短信報(bào)警第一時(shí)間通知網(wǎng)站運(yùn)維人員,在狀態(tài)恢復(fù)后發(fā)出正常的郵件或短信通知。

它本身不包括這部分功能,所有的監(jiān)控、檢測(cè)功能都是通過各種插件完成的,啟動(dòng)Nagios后,它會(huì)周期性的自動(dòng)調(diào)用插件去檢測(cè)服務(wù)器狀態(tài),同時(shí)Nagios會(huì)維持一個(gè)隊(duì)列,所有插件返回來的狀態(tài)信息都進(jìn)入隊(duì)列,Nagios每次都從隊(duì)首開始讀取信息,并進(jìn)行處理后,把狀態(tài)結(jié)果通過web顯示出來。

Nagios可以識(shí)別4種狀態(tài)返回信息:

  • 0(OK)表示狀態(tài)正常/綠色;
  • 1(WARNING)表示出現(xiàn)警告/×××;
  • 2(CRITICAL)表示出現(xiàn)非常嚴(yán)重的錯(cuò)誤/紅色;
  • 3(UNKNOWN)表示未知錯(cuò)誤/深×××;

Nagios根據(jù)插件返回來的值,來判斷監(jiān)控對(duì)象的狀態(tài),并通過web顯示出來,以供管理員及時(shí)發(fā)現(xiàn)故障。

它是如何管理遠(yuǎn)端服務(wù)器對(duì)象的,使用NRPE插件,主要過程如下:

  • Nagios 執(zhí)行安裝在它里面的check_nrpe插件,并告訴check_nrpe去檢測(cè)哪些服務(wù);
  • 通過SSL,check_nrpe連接遠(yuǎn)端機(jī)子上的NRPE daemon;
  • NRPE 運(yùn)行本地的各種插件去檢測(cè)本地的服務(wù)和狀態(tài);
  • NRPE把檢測(cè)的結(jié)果傳給主機(jī)端的check_nrpe,check_nrpe再把結(jié)果送到Nagios狀態(tài)隊(duì)列中;
  • Nagios 依次讀取隊(duì)列中的信息,再把結(jié)果顯示出來;
監(jiān)控RabbitMQ

書中提到監(jiān)控RabbitMQ的各個(gè)方面,比如:監(jiān)控Rabbit內(nèi)部狀態(tài)、確認(rèn)RabbitMQ可用并且能夠響應(yīng)、觀察隊(duì)列狀態(tài)檢測(cè)消費(fèi)者異常、檢測(cè)消息通信結(jié)構(gòu)中不合需求的配置更改等。

基本思路都是通過編寫Nagios需要的檢測(cè)腳本,使用AMQP客戶端或REST API的方式,獲取關(guān)心的監(jiān)控信息,根據(jù)情況返回不同的狀態(tài)碼。

具體的腳本腳本就不一一介紹了,這里舉個(gè)例子,監(jiān)控隊(duì)列的持久化配置是否正確,通過api/queues/<vhost>/<queueName>獲取隊(duì)列信息,判斷它的durable屬性是否為true,腳本如下:

import sys, json, httplib, urllib, base64, socket

# 1.定義狀態(tài)碼
EXIT_OK = 0
EXIT_WARNING = 1
EXIT_CRITICAL = 2
EXIT_UNKNOWN = 3

# 2.解析參數(shù)
server, port = sys.argv[1].split(":")
vhost = sys.argv[2]
username = sys.argv[3]
password = sys.argv[4]
queue_name = sys.argv[5]
auto_delete = json.loads(sys.argv[6].lower())
durable = json.loads(sys.argv[7].lower())

# 3.連接服務(wù)器
conn = httplib.HTTPConnection(server, port)

# 4.構(gòu)建api路徑
path = "/api/queues/%s/%s" % (urllib.quote(vhost, safe=""),
                              urllib.quote(queue_name))
method = "GET"

# 5.執(zhí)行http請(qǐng)求
credentials = base64.b64encode("%s:%s" % (username, password))
try:
    conn.request(method, path, "",
                 {"Content-Type" : "application/json",
                  "Authorization" : "Basic " + credentials})

# 6.連接異常,退出
except socket.error:
    print "UNKNOWN: Could not connect to %s:%s" % (server, port)
    exit(EXIT_UNKNOWN)

response = conn.getresponse()

# 7.狀態(tài)碼為404,說明隊(duì)列不存在,退出
if response.status == 404:
    print "CRITICAL: Queue %s does not exist." % queue_name
    exit(EXIT_CRITICAL)

# 8.durable屬性是否正確
if response["durable"] != durable:
    print "WARN: Queue '%s' - durable flag is NOT %s." % \
          (queue_name, durable)
    exit(EXIT_WARNING)

# 9.返回正常
print "OK: Queue %s configured correctly." % queue_name
exit(EXIT_OK)

下一篇將介紹RabbitMQ安全和性能方面的考慮。

歡迎掃描下方二維碼,關(guān)注我的個(gè)人微信公眾號(hào) ~

RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

網(wǎng)站名稱:RabbitMQ實(shí)戰(zhàn):界面管理和監(jiān)控-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://jinyejixie.com/article44/csdshe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、動(dòng)態(tài)網(wǎng)站外貿(mào)建站、服務(wù)器托管、電子商務(wù)網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
襄樊市| 原阳县| 秀山| 林西县| 子长县| 鹿邑县| 龙川县| 突泉县| 临安市| 汶上县| 遂昌县| 永泰县| 太原市| 依兰县| 井陉县| 承德县| 开远市| 兴化市| 大名县| 大英县| 宜春市| 昔阳县| 石阡县| 万载县| 黎平县| 霍山县| 兰州市| 常州市| 云浮市| 历史| 莒南县| 太仆寺旗| 天柱县| 墨竹工卡县| 庆阳市| 香港| 昆山市| 上饶市| 沐川县| 雷州市| 南川市|