गाइड

कच्चे IP पता लॉग से हीटमैप बनाएँ

IP पतों से भरे एक्सेस लॉग में असली भौगोलिक जानकारी छिपी होती है, लेकिन तभी जब हर पते को ऐसे निर्देशांकों में रिज़ॉल्व कर दिया जाए जिन्हें कोई मैपिंग टूल वास्तव में प्लॉट कर सके।

लॉग से पते निकालना

हर लॉग लाइन को अलग से लुकअप करने के बजाय पहले अपनी लॉग फ़ाइल से यूनिक IP पते निकालें, क्योंकि एक ही विज़िटर का पता आमतौर पर एक सेशन में कई बार आता है और एक ही लुकअप के लिए बार-बार भुगतान करने का कोई कारण नहीं है।

sort logfile.txt | awk '{print $1}' | sort -u > unique_ips.txt

बल्क में रिज़ॉल्व करना

यूनिक पतों की सूची को बल्क POST array के रूप में /v1/ip पर भेजें।

POST /v1/ip
Content-Type: application/json

["203.0.113.10", "198.51.100.25", "192.0.2.44"]
{
  "status": "ok",
  "results": [
    {"ip": "203.0.113.10", "version": 4, "found": true, "country": "Germany", "country_code": "DE", "region": "Berlin", "city": "Berlin", "postcode": "10115", "lat": 52.5300, "lon": 13.3800, "timezone": "Europe/Berlin", "asn": 1111, "org": "Example ISP"},
    {"ip": "198.51.100.25", "version": 4, "found": true, "country": "Spain", "country_code": "ES", "region": "Madrid", "city": "Madrid", "postcode": "28001", "lat": 40.4168, "lon": -3.7038, "timezone": "Europe/Madrid", "asn": 2222, "org": "Example Networks"},
    {"ip": "192.0.2.44", "version": 4, "found": false}
  ]
}

हीटमैप डेटासेट बनाना

हर लौटाए गए lat और lon को आपके लॉग में उस मूल पते की आवृत्ति गिनती के साथ जोड़ें, ताकि जो विज़िटर लॉग में सौ बार आता है उसका भार एक बार आने वाले विज़िटर से अनुपात में ज़्यादा हो। भार वाले निर्देशांक बिंदुओं की परिणामी सूची को उस मैपिंग या चार्टिंग टूल में डालें जिससे आप हीटमैप रेंडर करते हैं।

दूसरा उदाहरण: इसके बजाय देश स्तर का विभाजन

अगर बिंदु-दर-बिंदु सटीक हीटमैप आपकी ज़रूरत से ज़्यादा विस्तृत है, तो कच्चे निर्देशांकों के बजाय country_code के अनुसार समूह बनाने से एक सरल choropleth जैसा व्यू मिलता है, बिंदुओं के बिखरे बादल के बजाय प्रति देश एक आँकड़ा। इसमें बिल्कुल वही बल्क लुकअप इस्तेमाल होता है, बस परिणाम आने के बाद उन्हें अलग तरह से समूहित किया जाता है, इसलिए एक ही रिज़ॉल्व किए गए डेटा से दोनों व्यू बनाने में कोई अतिरिक्त लागत नहीं है।

रिज़ॉल्व न होने वाले पतों को संभालना

found: false वाली एंट्री को, जैसे ऊपर का तीसरा परिणाम, किसी डिफ़ॉल्ट लोकेशन पर प्लॉट करने के बजाय हीटमैप से बस बाहर रखना चाहिए, क्योंकि उसे शामिल करने से अनसुलझा ट्रैफ़िक मैप पर किसी ऐसी जगह भ्रामक रूप से इकट्ठा हो जाएगा जिसका उसके वास्तविक स्रोत से कोई संबंध नहीं है।

एक आम गलती जिससे बचना चाहिए

यूनिक पतों की सूची बनाने से पहले साफ़ तौर पर गैर-विज़िटर ट्रैफ़िक को छाँटना न भूलें, जैसे आंतरिक हेल्थ चेक या मॉनिटरिंग सेवाएँ जो किसी तय पते से लगातार आपके सर्वर पर आती हैं। हर मिनट पोल करने वाली मॉनिटरिंग सेवा अनुपात से कहीं ज़्यादा लॉग लाइनें जमा कर सकती है जिनका विज़िटर के असली भूगोल से कोई संबंध नहीं है, और भले ही डुप्लिकेट हटाना उसे पहले से एक रिज़ॉल्व किए गए बिंदु तक सीमित कर देता है, वह एक बिंदु भी दिखने में हीटमैप पर उस वास्तविक ट्रैफ़िक पैटर्न के अनुपात से कहीं ज़्यादा हावी हो सकता है जिसे वह दर्शाता है।

एक खास मामला: होस्टिंग और डेटा सेंटर ट्रैफ़िक

रिज़ॉल्व किए गए पते का org फ़ील्ड अक्सर बताता है कि ट्रैफ़िक किसी आवासीय या मोबाइल कनेक्शन के बजाय किसी डेटा सेंटर या क्लाउड होस्टिंग रेंज से आ रहा है, जो असली विज़िटर लोकेशन दर्शाने वाले हीटमैप को बिगाड़ने से पहले बॉट या स्क्रेपर ट्रैफ़िक को छाँटने का एक उचित संकेत है।

इसकी लागत क्या है

हर लॉग लाइन के बजाय यूनिक पतों को रिज़ॉल्व करना ही इसे किफ़ायती रखता है, क्योंकि अनुरोध की लागत प्रति यूनिक पता एक है, प्रति लॉग लाइन एक नहीं। दस लाख लाइनों वाले लेकिन केवल कुछ हज़ार यूनिक विज़िटर पतों वाले लॉग की लागत कुछ हज़ार अनुरोध है, दस लाख नहीं, जो बड़ी साइट के लिए प्रीपेड क्रेडिट या Unlimited पैकेज से आराम से संभल जाती है, और छोटी साइट के लिए अक्सर मुफ़्त कोटा के भीतर रहती है। बड़े बैच जॉब के दौरान X-Quota-Used हेडर पर नज़र रखना यह पुष्टि करने का सरल तरीका है कि जॉब खत्म होने से पहले उपयोग अपेक्षा के अनुसार चल रहा है।

रिज़ॉल्व करने से पहले डुप्लिकेट हटाना लॉग आधारित हीटमैप को किफ़ायती रखने का सबसे बड़ा उपाय है। IPv4 लुकअप दस्तावेज़ में बल्क अनुरोध फ़ॉर्मेट का पूरा विवरण है।