خواندن JMX از طریق پروکسی HTTP با Jolokia
وقتی یک کلاینت پایش باید از پروکسی وب پیشرو عبور کند، از رابط HTTP در Jolokia استفاده کنید، با اعتبارنامههای جداگانه برای پروکسی و مدیریت.
اگر یک استقرار Java از پیش یک نقطه پایانی مجاز Jolokia ارائه میدهد، یک کلاینت پایش میتواند ویژگیهای JMX را از طریق یک پروکسی HTTP پیشرو معمولی بخواند. کلاینت با Jolokia به HTTP صحبت میکند و Jolokia عملیات JMX را در سمت برنامه انجام میدهد.
monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean
این مسیر به نقطه پایانی مدیریتی با پشتیبانی HTTP نیاز دارد. هدایت یک کلاینت بومی JMX بدون تغییر به پروکسی وب، چنین نقطهای ایجاد نمیکند.
برای نمونه، خواندن مصرف heap ماشین مجازی Java را میتوان بهصورت درخواست POST بیان کرد:
curl --proxy http://proxy.example.net:8080 \
--header 'Content-Type: application/json' \
--data '{"type":"read","mbean":"java.lang:type=Memory","attribute":"HeapMemoryUsage","path":"used"}' \
https://monitor.example.net/jolokia/
نقطه پایانی و پروکسی جاینگهدارند. اینجا از عملیات خواندن استفاده میشود؛ متد HTTP یعنی POST درخواست JSON در Jolokia را حمل میکند و به معنای نوشتن JMX نیست. Jolokia درخواستهای GET را نیز برای عملیات ساده پشتیبانی میکند، در حالی که JSON POST از بخشی از گریز URL که برای نامهای پیچیده MBean لازم است پرهیز میکند.
برای نقطه پایانی مدیریتی HTTPS، پروکسی پیشرو باید مقصد تونل مربوط را مجاز کند. TLS هنوز باید monitor.example.net را بررسی کند. نام میزبان و گواهی خود پروکسی، اگر خود اتصال پروکسی از TLS استفاده کند، یک پرش جداگانه را توصیف میکنند.
دو تصمیم احراز هویت را جدا نگه دارید. گزینههای احراز هویت پروکسی در curl یک حساب پروکسی فراهم میکنند. احراز هویت نقطه پایانی هویت مدیریت را فراهم میکند و سیاست Jolokia تعیین میکند که به کدام MBeanها و عملیات دسترسی دارد. اجازه استفاده از پروکسی پیشرو اجازه مدیریت JVM نیست.
پاسخ نیز دو لایه دارد: وضعیت انتقال HTTP و نتیجه عملیات JSON در Jolokia. status و value بازگشتی را بررسی کنید، نه اینکه هر بدنهای را سنجهای موفق بپذیرید. خطاهای پروکسی، شکست احراز هویت نقطه پایانی و MBeanهای غایب تغییرات متفاوتی میخواهند.
اگر استقرار فقط یک اتصالدهنده بومی JMX ارائه میدهد، مسیری سازگار با آن اتصالدهنده انتخاب کنید یا نقطه پایانی مدیریت HTTP تأییدشدهای ترتیب دهید. هدایت محلی SSH طراحی انتقال دیگری است، اما همچنان اتصال به سرویس بومی میماند؛ پروتکل آن را به HTTP API در Jolokia تبدیل نمیکند.