यदि कोई Java परिनियोजन पहले से एक अधिकृत Jolokia एंडपॉइंट उजागर करता है, तो एक मॉनिटरिंग क्लाइंट सामान्य HTTP फ़ॉरवर्ड प्रॉक्सी के ज़रिए JMX विशेषताएँ पढ़ सकता है। क्लाइंट HTTP में Jolokia से बात करता है, और Jolokia एप्लिकेशन पक्ष पर JMX संक्रिया करता है।

monitor → HTTP proxy → HTTPS Jolokia endpoint → MBean

इस मार्ग के लिए HTTP-सक्षम प्रबंधन एंडपॉइंट चाहिए। किसी अपरिवर्तित मूल JMX क्लाइंट को वेब प्रॉक्सी की ओर इंगित करने से वह नहीं बनता।

उदाहरण के लिए, JVM के heap उपयोग का पठन 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 JMX लेखन का संकेत देने के बजाय Jolokia का JSON अनुरोध ले जाती है। Jolokia सरल संक्रियाओं के लिए GET अनुरोध भी समर्थित करता है, जबकि JSON POST जटिल MBean नामों के लिए आवश्यक URL एस्केपिंग का कुछ भाग टाल देता है।

HTTPS प्रबंधन एंडपॉइंट के लिए फ़ॉरवर्ड प्रॉक्सी को संबंधित टनल गंतव्य की अनुमति देनी होगी। TLS को अब भी monitor.example.net सत्यापित करना चाहिए। प्रॉक्सी का अपना होस्टनाम और प्रमाणपत्र, यदि प्रॉक्सी कनेक्शन स्वयं TLS उपयोग करता है, एक अलग हॉप बताते हैं।

दोनों प्रमाणीकरण निर्णय अलग रखें। curl के प्रॉक्सी-प्रमाणीकरण विकल्प प्रॉक्सी खाता देते हैं। एंडपॉइंट का प्रमाणीकरण प्रबंधन पहचान देता है, और Jolokia की नीति तय करती है कि किन MBeans और संक्रियाओं तक पहुँच है। फ़ॉरवर्ड प्रॉक्सी उपयोग करने की अनुमति JVM का प्रशासन करने की अनुमति नहीं है।

प्रतिक्रिया के भी दो स्तर हैं: HTTP परिवहन स्थिति और Jolokia का JSON संक्रिया परिणाम। लौटाए गए status और value जाँचें, किसी भी body को सफल मीट्रिक मानने के बजाय। प्रॉक्सी त्रुटियाँ, एंडपॉइंट प्रमाणीकरण विफलताएँ और अनुपस्थित MBeans भिन्न बदलाव माँगते हैं।

यदि परिनियोजन केवल मूल JMX कनेक्टर उजागर करता है, तो उस कनेक्टर के अनुकूल मार्ग चुनें या स्वीकृत HTTP प्रबंधन एंडपॉइंट की व्यवस्था करें। SSH स्थानीय फ़ॉरवर्ड एक अन्य परिवहन डिज़ाइन है, परंतु यह मूल सेवा से कनेक्शन ही रहता है; यह उसके प्रोटोकॉल को Jolokia के HTTP API में नहीं बदलता।

संबंधित लेख