MOSQUITTO(8) Mosquitto MOSQUITTO(8)

mosquitto - یک کارگزار پیام پروتکل MQTT

mosquitto [-c پرونده پیکربندی] [-d | --aemon] [-p شماره درگاه] [-q] [-v] [--ls-keylog پرونده]

mosquitto یک کارگزار (broker) برای پروتکل MQTT نسخه‌های 5.0/3.1.1/3.1 است.

این ابزار بخشی از پروژه کلی mosquitto است. برای مروری بر تمامی صفحات راهنما، mosquitto(7) را ببینید.

-c, --onfig-file

بارگذاری پیکربندی از یک پرونده. در صورت عدم تعیین، کارگزار روی درگاه 1883 متصل به رابط محلی (loopback) گوش فرا می‌دهد و از مقادیر پیش‌فرضی که در mosquitto.conf(5) توصیف شده استفاده می‌شود.

مهم
گزینه -p را برای شرح تغییرات رفتار از نسخه 1.6.x به 2.0 مشاهده کنید.

-d, --aemon

اجرای mosquitto در پس‌زمینه به‌عنوان یک دیمن (daemon). سایر رفتارها بدون تغییر باقی می‌مانند.

-p, --ort

گوش فرا دادن روی درگاه (پورت) مشخص‌شده. می‌تواند تا ۱۰ بار تکرار شود تا سوکت‌های متعددی را روی درگاه‌های مختلف باز کند.

مهم
در نسخه 1.6.x و نسخه‌های قدیمی‌تر، شنونده‌ای که با -p (یا درگاه پیش‌فرض 1883) تعریف می‌شد به تمامی رابط‌های شبکه متصل می‌شد و بنابراین از هر شبکه‌ای در دسترس بود. همچنین می‌توانست در ترکیب با -c استفاده شود.

از نسخه 2.0 به بعد، شنوندگانی که با -p تعریف می‌شوند فقط به رابط محلی (loopback) متصل می‌شوند و بنابراین فقط می‌توان از همان ماشین محلی به آن‌ها متصل شد. اگر هم از -p استفاده شود و هم یک شنونده در پرونده پیکربندی تعریف شده باشد، گزینه‌های -p نادیده گرفته می‌شوند.

-q, --quiet

موجود از نسخه 2.1 به بعد.

غیرفعال‌سازی تمامی رویدادنگاری‌ها (لاگ‌ها). این معادل تنظیم log_type روی none در پرونده پیکربندی است. این گزینه هرگونه تنظیمات ثبت وقایع داده‌شده در پرونده پیکربندی را نادیده گرفته و همچنین بر -- اولویت دارد.

--est-config

موجود از نسخه 2.1 به بعد.

بارگذاری پرونده پیکربندی مشخص‌شده با -c و اعتبارسنجی آن بدون راه‌اندازی کارگزار. در صورتی که پیکربندی معتبر باشد کد خروج کارگزار 0 خواهد بود، و اگر پرونده پیکربندی تعیین نشده باشد یا نامعتبر باشد کدی غیرصفر بازگردانده می‌شود.

--ls-keylog file

موجود از نسخه 2.1 به بعد.

ثبت اطلاعات نشست TLS در file. این گزینه به ابزارهایی مانند tcpdump, wireshark و mqttshark اجازه می‌دهد تا ترافیک TLS را رمزگشایی کرده و ترافیک MQTT را بازرسی کنند. در Wireshark این کار می‌تواند با تنظیم گزینه (Pre)-Master-Secret log filename برای پروتکل Transport Layer Security انجام شود.

این گزینه صرفاً باید برای اشکال‌زدایی استفاده شود و هرگز نباید در محیط عملیاتی به کار رود.

-v, --

استفاده از ثبت وقایع پرگویی (verbose). این معادل تنظیم log_type روی all در پرونده پیکربندی است. این گزینه بر هرگونه گزینه ثبت وقایع تعیین‌شده در پرونده پیکربندی اولویت دارد.

کارگزار را می‌توان با استفاده از یک پرونده پیکربندی همان‌گونه که در mosquitto.conf(5) توصیف شده پیکربندی کرد و این نقطه مرجع اصلی اطلاعات برای mosquitto است. پرونده‌های مورد نیاز برای پشتیبانی از SSL/TLS در mosquitto-tls(7) شرح داده شده‌اند.

برخی از نسخه‌های ویندوز به دلیل API ویندوزی که استفاده می‌شود، محدودیت‌هایی در تعداد اتصالات همزمان دارند. در نسخه‌های مدرن ویندوز، مانند Windows 10 یا Windows Server 2019، این مقدار تقریباً ۸۱۹۲ اتصال است. در نسخه‌های قدیمی‌تر ویندوز، این حد ۲۰۴۸ اتصال است.

کارگزار Mosquitto از نسخه‌های v5.0، v3.1.1 و v3.1 پروتکل MQTT پشتیبانی می‌کند.

کارگزار Mosquitto پشتیبانی کاملی از MQTT v5.0 فراهم می‌کند، اما برخی ویژگی‌ها به‌طور مستقیم استفاده نمی‌شوند. بخش‌های زیر ویژگی‌های جدید را توضیح داده و مشخص می‌کنند که Mosquitto در کجا از یک ویژگی استفاده نمی‌کند.

ویژگی‌ها (Features)

Enhanced authentication (احراز هویت پیشرفته)

احراز هویت پایه MQTT از بررسی نام کاربری/گذرواژه استفاده می‌کند. احراز هویت پیشرفته امکان ادغام طرح‌های احراز هویت مختلف در MQTT را فراهم می‌کند، حتی طرح‌هایی با فرآیندهای چندمرحله‌ای. کلاینت‌ها درخواست نوع خاصی از احراز هویت را ارسال می‌کنند و اگر کارگزار برای آن طرح پیکربندی شده باشد، احراز هویت ادامه می‌یابد. کارگزار Mosquitto از احراز هویت پیشرفته از طریق افزونه‌ها (plugins) پشتیبانی می‌کند.

Error handling (مدیریت خطا)

اکثر بسته‌های MQTT اکنون دارای مفهوم کد علت (reason code) هستند که موفقیت یا شکست و دلیل شکست را نشان می‌دهد. کارگزار Mosquitto پشتیبانی کاملی از کدهای علت ارائه می‌دهد، اما از ویژگی رشته علت (reason string) که می‌تواند برای ارائه یک رشته خطای قابل‌خواندن برای انسان جهت توضیح کد علت استفاده شود، استفاده نمی‌کند.

Flow control (کنترل جریان)

تعداد پیام‌های «در جریان» (in flight) برای QoS 1 و QoS 2 می‌تواند توسط هر دو سمت کلاینت و کارگزار کنترل شود.

Request / response (درخواست / پاسخ)

پروتکل MQTT v5.0 یک الگوی درخواست/پاسخ اضافه می‌کند که به یک کلاینت اجازه می‌دهد پیامی را منتشر کند و به مشترکین آن پیام آموزش دهد که پاسخ را در کجا منتشر کنند.

Server redirection (تغییر مسیر کارگزار)

تغییر مسیر کارگزار مفهومی است که به کلاینت دستور می‌دهد به کارگزار MQTT دیگری متصل شود، چه در زمان CONNECT یا با یک DISCONNECT که توسط کارگزار آغاز شده باشد. کارگزار Mosquitto در حال حاضر از این ویژگی استفاده نمی‌کند.

Shared subscriptions (اشتراک‌های اشتراکی)

هنگامی که چندین کلاینت در یک اشتراک اشتراکی یکسان عضو می‌شوند، تنها یک کلاینت از آن گروه هر پیام را دریافت می‌کند که این امکان توزیع بار کاری را فراهم می‌سازد.

ویژگی‌های بسته (Packet properties)

پروتکل MQTT v5.0 اجازه می‌دهد ویژگی‌هایی به بسته‌ها اضافه شوند تا رفتار خاصی را کنترل کنند. مگر در مواردی که ذکر شده باشد، Mosquitto از ویژگی‌های فهرست‌شده در زیر پشتیبانی می‌کند.

CONNECT

•Authentication data (داده‌های احراز هویت)
•Authentication method (روش احراز هویت)
•Maximum packet size (حداکثر اندازه بسته)
•Receive maximum (حداکثر دریافت)
•Request problem information - پشتیبانی می‌شود اما استفاده نمی‌شود
•Request response information - پشتیبانی می‌شود اما استفاده نمی‌شود
•Session expiry interval (فاصله انقضای نشست)
•Topic alias maximum (حداکثر نام مستعار موضوع)
•User property (ویژگی کاربر)

Last will and testament (وصیت‌نامه و آخرین خواست)

•Content type (نوع محتوا)
•Correlation data (داده‌های همبستگی)
•Message expiry interval (فاصله انقضای پیام)
•Payload format indicator (نشانگر قالب بار مفید)
•Response topic (موضوع پاسخ)
•User property (ویژگی کاربر)
•Will delay interval (فاصله تاخیر وصیت‌نامه)

CONNACK

•Assigned client identifier (شناسه کلاینت تخصیص‌یافته)
•Authentication data (داده‌های احراز هویت)
•Authentication method (روش احراز هویت)
•Maximum packet size (حداکثر اندازه بسته)
•Maximum qos (حداکثر کیفیت خدمات qos)
•Reason string - پشتیبانی می‌شود اما استفاده نمی‌شود
•Receive maximum (حداکثر دریافت)
•Response information - پشتیبانی می‌شود اما استفاده نمی‌شود
•Retain available (نگه‌داری در دسترس)
•Server keep alive (زنده نگه‌داشتن سرور)
•Server reference - پشتیبانی می‌شود اما استفاده نمی‌شود
•Session expiry interval (فاصله انقضای نشست)
•Shared subscription available (اشتراک اشتراکی در دسترس)
•Subscription identifiers available (شناسه‌های اشتراک در دسترس)
•Topic alias maximum (حداکثر نام مستعار موضوع)
•User property (ویژگی کاربر)
•Wildcard subscription available (اشتراک عامه‌نگاشت در دسترس)

PUBLISH

•Content type (نوع محتوا)
•Correlation data (داده‌های همبستگی)
•Message expiry interval (فاصله انقضای پیام)
•Payload format indicator (نشانگر قالب بار مفید)
•Response topic (موضوع پاسخ)
•Subscription identifier (شناسه اشتراک)
•Topic alias (نام مستعار موضوع)
•User property (ویژگی کاربر)

PUBACK / PUBREC / PUBREL / PUBCOMP / SUBACK / SUBSCRIBE / SUBACK

•Reason string - پشتیبانی می‌شود اما استفاده نمی‌شود
•User property (ویژگی کاربر)

SUBSCRIBE

•Subscription identifier (شناسه اشتراک)
•User property (ویژگی کاربر)

DISCONNECT

•Reason string - پشتیبانی می‌شود اما استفاده نمی‌شود
•Server reference - پشتیبانی می‌شود اما استفاده نمی‌شود
•Session expiry interval (فاصله انقضای نشست)
•User property (ویژگی کاربر)

AUTH

•Authentication method (روش احراز هویت)
•Authentication data (داده‌های احراز هویت)
•Reason string - پشتیبانی می‌شود اما استفاده نمی‌شود
•User property (ویژگی کاربر)

کارگزار Mosquitto پشتیبانی کاملی از MQTT v3.1.1 ارائه می‌دهد.

کارگزار Mosquitto پشتیبانی کاملی از MQTT v3.1 ارائه می‌دهد.

نسخه MQTT v3 نگارشی منسوخ‌شده از این پروتکل است که از احراز هویت نام کاربری/گذرواژه پشتیبانی نمی‌کند و از پرچم شروع تمیز (clean start) در بسته CONNECT استفاده می‌کرد که تنها در ابتدای یک نشست اعمال می‌شد. یک کلاینت MQTT v3 قادر خواهد بود با موفقیت به یک نمونه Mosquitto که نیازی به احراز هویت ندارد متصل شود.

کلاینت‌ها می‌توانند با عضویت در موضوعات سلسله‌مراتب $SYS به شرح زیر اطلاعاتی درباره کارگزار به دست آورند. موضوعاتی که به‌عنوان ایستا (static) مشخص شده‌اند، تنها یک‌بار به ازای هر کلاینت در زمان عضویت ارسال می‌شوند. سایر موضوعات هر sys_interval ثانیه یک‌بار به‌روزرسانی می‌شوند. اگر sys_interval برابر با 0 باشد، به‌روزرسانی‌ها ارسال نخواهند شد.

توجه داشته باشید که اگر از یک کلاینت خط فرمان برای تعامل با موضوعات $SYS استفاده می‌کنید و پوسته شما علامت $ را به‌عنوان متغیر محیطی تفسیر می‌کند، باید موضوع را داخل کوتیشن تکی قرار دهید '$SYS/...' یا علامت دلار را اسکیپ کنید: \$SYS/... در غیر این صورت $SYS به‌عنوان یک متغیر محیطی در نظر گرفته خواهد شد.

$SYS/broker/bytes/received

تعداد کل بایت‌های دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/bytes/sent

تعداد کل بایت‌های ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/clients/connected, $SYS/broker/clients/active (منسوخ‌شده)

تعداد کلاینت‌های متصل در حال حاضر.

$SYS/broker/clients/expired

تعداد کلاینت‌های ماندگار قطع‌شده که منقضی شده و از طریق گزینه persistent_client_expiration حذف شده‌اند.

$SYS/broker/clients/disconnected, $SYS/broker/clients/inactive (منسوخ‌شده)

تعداد کل کلاینت‌های ماندگار (با نشست تمیز غیرفعال) که در کارگزار ثبت شده‌اند اما در حال حاضر قطع هستند.

$SYS/broker/clients/maximum

حداکثر تعداد کلاینت‌هایی که به‌طور همزمان به کارگزار متصل بوده‌اند.

$SYS/broker/clients/total

تعداد کل نشست‌های کلاینت متصل و قطع‌شده که در حال حاضر روی کارگزار ثبت شده‌اند.

$SYS/broker/connection/#

هنگامی که پل‌ها (bridges) به یا از کارگزار پیکربندی می‌شوند، رویه معمول این است که یک موضوع وضعیت که حالت اتصال را نشان می‌دهد ارائه شود. این موضوع به‌طور پیش‌فرض در $SYS/broker/connection/ ارائه می‌شود. اگر مقدار موضوع 1 باشد اتصال فعال است، و اگر 0 باشد فعال نیست. برای اطلاعات بیشتر در مورد پل‌ها، بخش پل‌ها را در ادامه ببینید.

$SYS/broker/connections/socket/count

تعداد کل اتصالات سوکتی برقرار شده با کارگزار، صرف‌نظر از اینکه آیا اتصالات MQTT در نهایت موفقیت‌آمیز بوده‌اند یا خیر.

$SYS/broker/heap/current

اندازه فعلی حافظه هیپ (heap) در حال استفاده توسط mosquitto. توجه داشته باشید که این موضوع ممکن است بسته به گزینه‌های زمان کامپایل در دسترس نباشد.

$SYS/broker/heap/maximum

بیشترین میزان حافظه هیپ استفاده‌شده توسط mosquitto. توجه داشته باشید که این موضوع ممکن است بسته به گزینه‌های زمان کامپایل در دسترس نباشد.

$SYS/broker/load/connections/+

میانگین متحرک تعداد بسته‌های CONNECT دریافت شده توسط کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد اتصالات دریافت شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/bytes/received/+

میانگین متحرک تعداد بایت‌های دریافت شده توسط کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد بایت‌های دریافت شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/bytes/sent/+

میانگین متحرک تعداد بایت‌های ارسال شده توسط کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد بایت‌های ارسال شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/messages/received/+

میانگین متحرک تعداد پیام‌های MQTT از تمام انواع دریافت شده توسط کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد پیام‌های دریافت شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/messages/sent/+

میانگین متحرک تعداد پیام‌های MQTT از تمام انواع ارسال شده توسط کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد پیام‌های ارسال شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/publish/dropped/+

میانگین متحرک تعداد پیام‌های انتشار (publish) رها شده توسط کارگزار در بازه‌های زمانی مختلف. این نرخ از دست رفتن پیام‌ها برای کلاینت‌های ماندگاری را نشان می‌دهد که قطع شده‌اند. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد پیام‌های رها شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/publish/received/+

میانگین متحرک تعداد پیام‌های انتشار دریافت شده توسط کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد پیام‌های انتشار دریافت شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/publish/sent/+

میانگین متحرک تعداد پیام‌های انتشار ارسال شده توسط کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد پیام‌های انتشار ارسال شده در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/load/sockets/+

میانگین متحرک تعداد اتصالات سوکت باز شده به کارگزار در بازه‌های زمانی مختلف. علامت "+" پایانی در سلسله‌مراتب می‌تواند 1min، 5min یا 15min باشد. مقدار بازگردانده شده نشان‌دهنده تعداد اتصالات سوکت در ۱ دقیقه است که روی بازه ۱، ۵ یا ۱۵ دقیقه میانگین‌گیری شده است.

$SYS/broker/messages/received

تعداد کل پیام‌ها از هر نوع که از زمان شروع به کار کارگزار دریافت شده‌اند.

$SYS/broker/messages/sent

تعداد کل پیام‌ها از هر نوع که از زمان شروع به کار کارگزار ارسال شده‌اند.

$SYS/broker/mqtt/connect/received

تعداد کل پیام‌های MQTT CONNECT دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/connack/sent

تعداد کل پیام‌های MQTT CONNACK ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/publish/dropped, $SYS/broker/publish/messages/dropped

تعداد کل پیام‌های MQTT PUBLISH که به دلیل محدودیت‌های پیام‌های در جریان/صف‌بندی رها شده‌اند. برای اطلاعات بیشتر، گزینه‌های max_inflight_messages و max_queued_messages را در mosquitto.conf(5) ببینید.

$SYS/broker/mqtt/publish/received, $SYS/broker/publish/messages/received

تعداد کل پیام‌های MQTT PUBLISH دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/publish/sent, $SYS/broker/publish/messages/sent

تعداد کل پیام‌های MQTT PUBLISH ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/puback/received

تعداد کل پیام‌های MQTT PUBACK دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/puback/sent

تعداد کل پیام‌های MQTT PUBACK ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pubrec/received

تعداد کل پیام‌های MQTT PUBREC دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pubrec/sent

تعداد کل پیام‌های MQTT PUBREC ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pubrel/received

تعداد کل پیام‌های MQTT PUBREL دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pubrel/sent

تعداد کل پیام‌های MQTT PUBREL ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pubcomp/received

تعداد کل پیام‌های MQTT PUBCOMP دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pubcomp/sent

تعداد کل پیام‌های MQTT PUBCOMP ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/subscribe/received

تعداد کل پیام‌های MQTT SUBSCRIBE دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/suback/sent

تعداد کل پیام‌های MQTT SUBACK ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/unsubscribe/received

تعداد کل پیام‌های MQTT UNSUBSCRIBE دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/unsuback/sent

تعداد کل پیام‌های MQTT UNSUBACK ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pingreq/received

تعداد کل پیام‌های MQTT PINGREQ دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/pingresp/sent

تعداد کل پیام‌های MQTT PINGRESP ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/disconnect/received

تعداد کل پیام‌های MQTT DISCONNECT دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/disconnect/sent

تعداد کل پیام‌های MQTT DISCONNECT ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/auth/received

تعداد کل پیام‌های MQTT AUTH دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/mqtt/auth/sent

تعداد کل پیام‌های MQTT AUTH ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/packet/out/count

تعداد فعلی بسته‌های صف‌بندی‌شده برای تحویل در تمام کلاینت‌ها. یک مقدار بزرگ و رو به افزایش در اینجا ممکن است نشان دهد پیام‌ها سریع‌تر از توان انتقال شبکه در حال ارسال هستند.

$SYS/broker/packet/out/bytes

تعداد فعلی بایت‌ها در بسته‌های صف‌بندی‌شده برای تحویل در تمام کلاینت‌ها. یک مقدار بزرگ و رو به افزایش در اینجا ممکن است نشان دهد پیام‌ها سریع‌تر از توان انتقال شبکه در حال ارسال هستند.

$SYS/broker/publish/bytes/received

تعداد کل بایت‌های بار مفید (payload) پیام‌های PUBLISH دریافت شده از زمان شروع به کار کارگزار.

$SYS/broker/publish/bytes/sent

تعداد کل بایت‌های بار مفید پیام‌های PUBLISH ارسال شده از زمان شروع به کار کارگزار.

$SYS/broker/retained messages/count

تعداد کل پیام‌های ماندگار (retained) فعال روی کارگزار.

$SYS/broker/store/messages/count, $SYS/broker/messages/stored (منسوخ‌شده)

تعداد پیام‌هایی که در حال حاضر در مخزن پیام نگهداری می‌شوند. این شامل پیام‌های ماندگار و پیام‌های صف‌بندی‌شده برای کلاینت‌های پایدار است.

$SYS/broker/store/messages/bytes

تعداد بایت‌هایی که در حال حاضر توسط بار مفید پیام‌ها در مخزن پیام اشغال شده است. این شامل پیام‌های ماندگار و پیام‌های صف‌بندی‌شده برای کلاینت‌های پایدار است.

$SYS/broker/shared_subscriptions/count

تعداد کل اشتراک‌های اشتراکی فعال روی کارگزار.

$SYS/broker/subscriptions/count

تعداد کل اشتراک‌های فعال روی کارگزار.

$SYS/broker/version

نسخه کارگزار. ایستا (Static).

علاوه بر اجازه دادن به کلاینت‌ها برای عضویت در موضوعات خاص، mosquitto امکان استفاده از دو نویسه عام (wildcard) را نیز در اشتراک‌ها فراهم می‌کند. + نویسه عامی است که برای تطبیق با یک سطح منفرد از سلسله‌مراتب استفاده می‌شود. برای مثال، برای موضوع "a/b/c/d"، نمونه اشتراک‌های زیر مطابقت خواهند داشت:

•a/b/c/d
•+/b/c/d
•a/+/c/d
•a/+/+/d
•+/+/+/+

اشتراک‌های زیر مطابقت نخواهند داشت:

•a/b/c
•b/+/c/d
•+/+/+

دومین نویسه عام # است و برای مطابقت با تمام سطوح بعدی سلسله‌مراتب استفاده می‌شود. با موضوع "a/b/c/d"، نمونه اشتراک‌های زیر مطابقت خواهند داشت:

•a/b/c/d
•#
•a/#
•a/b/#
•a/b/c/#
•+/b/c/#

سلسله‌مراتب $SYS با اشتراک "#" مطابقت ندارد. اگر می‌خواهید کل سلسله‌مراتب $SYS را مشاهده کنید، در $SYS/# مشترک شوید.

توجه داشته باشید که نویسه‌های عام همیشه باید به تنهایی استفاده شوند، بنابراین اشتراکی مانند "a/b+/c" استفاده معتبری از یک نویسه عام نیست. نویسه عام # تنها باید به‌عنوان آخرین نویسه در یک اشتراک استفاده شود.

می‌توان چندین کارگزار را با استفاده از قابلیت پل‌زدن (bridging) به یکدیگر متصل کرد. این قابلیت در مواردی مفید است که به اشتراک گذاشتن اطلاعات بین مکان‌های مختلف مطلوب باشد، اما نیازی به اشتراک‌گذاری تمام اطلاعات نباشد. برای مثال، حالتی را در نظر بگیرید که تعدادی از کاربران برای ثبت میزان مصرف برق و به دلایل متعدد دیگر، یک کارگزار را اجرا می‌کنند. مصرف برق می‌تواند از طریق پل زدن کارگزاران تمام کاربران به یک کارگزار مشترک به اشتراک گذاشته شود و امکان جمع‌آوری و مقایسه مصرف برق همه کاربران فراهم آید. سایر اطلاعات برای هر کارگزار به‌صورت محلی باقی می‌ماند.

برای اطلاعات بیشتر در مورد پیکربندی پل‌ها، mosquitto.conf(5) را ببینید.

در سیستم‌های پوزیکس (POSIX)، کارگزار Mosquitto می‌تواند سیگنال‌ها را دریافت کرده و همان‌گونه که در زیر توصیف شده روی آن‌ها عمل کند. برای ارسال سیگنال‌ها، برای مثال از دستور زیر استفاده کنید: kill -HUP <process id of mosquitto>

SIGHUP

با دریافت سیگنال SIGHUP، کارگزار mosquitto تلاش خواهد کرد داده‌های پرونده پیکربندی را مجدداً بارگذاری کند، با این فرض که آرگومان -c در زمان شروع mosquitto ارائه شده باشد. همه پارامترهای پیکربندی را نمی‌توان بدون راه‌اندازی مجدد بازنشانی کرد. برای جزئیات به mosquitto.conf(5) مراجعه کنید.

اگر گواهی‌های TLS در حال استفاده باشند، mosquitto با دریافت SIGHUP گواهی‌ها را نیز مجدداً بارگذاری خواهد کرد.

همچنین پرونده‌های لاگ بسته شده و مجدداً باز خواهند شد.

SIGRTMIN

با دریافت سیگنال SIGRTMIN، کارگزار mosquitto لاگ‌ها را برای پشتیبانی از چرخش لاگ (log rotation) بسته و دوباره باز می‌کند.

SIGUSR1

با دریافت سیگنال SIGUSR1، کارگزار mosquitto پایگاه‌داده ماندگاری را روی دیسک می‌نویسد. این سیگنال تنها در صورتی عمل می‌کند که ماندگاری (persistence) فعال باشد.

SIGUSR2

سیگنال SIGUSR2 باعث می‌شود mosquitto درخت اشتراک فعلی را به همراه اطلاعات مربوط به محل وجود پیام‌های نگه‌داشته‌شده (retained) چاپ کند. این صرفاً به‌عنوان یک قابلیت آزمایشی در نظر گرفته شده و ممکن است در هر زمانی حذف شود.

MOSQUITTO_UNSAFE_ALLOW_SYMLINKS

به‌طور پیش‌فرض، از بارگذاری پرونده‌های حساسی که مسیر آن‌ها شامل پیوند نمادین (symlink) باشد خودداری می‌شود. این متغیر محیطی را روی هر مقداری تنظیم کنید تا بارگذاری پرونده‌ها از طریق پیوندهای نمادین مجاز شود. توجه داشته باشید که استفاده از این متغیر می‌تواند شما را در معرض حملات پیوند نمادین قرار دهد و بنابراین فقط در مواردی باید استفاده شود که کاملاً مطمئن باشید چنین خطری وجود ندارد.

/etc/mosquitto/mosquitto.conf

پرونده پیکربندی. مراجعه کنید به mosquitto.conf(5).

/var/lib/mosquitto/mosquitto.db

محل ذخیره‌سازی داده‌های پیام‌های ماندگار در صورت فعال بودن ماندگاری.

/etc/hosts.allow, /etc/hosts.deny

کنترل دسترسی میزبان از طریق tcp-wrappers همان‌طور که در hosts_access(5) توصیف شده است.

اطلاعات مربوط به اشکالات mosquitto را می‌توان در نشانی زیر یافت: https://github.com/eclipse-mosquitto/mosquitto/issues

mosquitto(7), mqtt(7), mosquitto-tls(7), mosquitto.conf(5), mosquitto_ctrl(1), mosquitto_passwd(1), mosquitto_pub(1), mosquitto_rr(1), mosquitto_sub(1), libmosquitto(3)

با تشکر از Andy Stanford-Clark برای اینکه یکی از افرادی بود که در وهله اول ایده MQTT را مطرح کرد. با تشکر از Andy و Nicholas O'Leary برای ارائه توضیحات و شفاف‌سازی‌های مربوط به پروتکل.

همچنین با تشکر از همه دست‌اندرکاران پادکست Ubuntu UK Podcast و Linux Outlaws برای سازمان‌دهی رویداد OggCamp، جایی که Andy سخنرانی کرد و الهام‌بخش ساخت mosquitto شد.

Roger Light <roger@atchoo.org>

04/03/2026 Mosquitto Project