व्यक्तिगत स्थिति पृष्ठ

Home PDF Audio

ऐसा लगता है कि आपके द्वारा इंस्टॉल किया गया vnstat का संस्करण -u पैरामीटर का समर्थन नहीं करता है। चलिए vnstat को कॉन्फ़िगर करने और बैंडविड्थ मॉनिटरिंग API सेट अप करने के सही चरणों के साथ आगे बढ़ते हैं।

चरण 1: vnstat को कॉन्फ़िगर करें

अपने नेटवर्क इंटरफ़ेस के लिए vnstat को इनिशियलाइज़ करें:

sudo vnstat -i eth0

व्याख्या:
यह कमांड vnstat टूल का उपयोग करके eth0 नेटवर्क इंटरफेस के नेटवर्क ट्रैफिक डेटा को प्रदर्शित करता है। sudo का उपयोग करके यह कमांड रूट या एडमिनिस्ट्रेटर प्रिविलेज के साथ चलाई जाती है। -i eth0 ऑप्शन यह निर्दिष्ट करता है कि eth0 इंटरफेस के लिए डेटा दिखाया जाए।

चरण 2: डेटा संग्रह के लिए प्रतीक्षा करें

vnstat को डेटा एकत्र करने के लिए समय की आवश्यकता होती है। समय-समय पर स्थिति की जांच करें:

sudo vnstat -l

(यह कमांड नेटवर्क ट्रैफ़िक को रियल-टाइम में मॉनिटर करने के लिए उपयोग की जाती है। इसे हिंदी में अनुवाद करने की आवश्यकता नहीं है क्योंकि यह एक टर्मिनल कमांड है।)

कुछ समय बाद, डेटा संग्रहण की जांच करें:

sudo vnstat -d

(यह कमांड हिंदी में अनुवाद नहीं किया जाएगा क्योंकि यह एक टर्मिनल कमांड है और इसे मूल रूप में ही रहना चाहिए।)

चरण 3: बैंडविड्थ डेटा को एक्सपोज़ करने के लिए एक API बनाएं

Flask इंस्टॉल करें:

pip install Flask

एक Python स्क्रिप्ट (bandwidth_api.py) बनाएं:

from flask import Flask, jsonify
from flask_cors import CORS
import subprocess
app = Flask(__name__)
CORS(app)  # सभी रूट्स के लिए CORS सक्षम करें
@app.route('/bandwidth', methods=['GET'])
def get_bandwidth():
    # eth0 के लिए 5-मिनट के अंतराल पर ट्रैफ़िक सांख्यिकी प्राप्त करने के लिए vnstat कमांड चलाएं
    result = subprocess.run(['vnstat', '-i', 'eth0', '-5', '--json'], capture_output=True, text=True)
    data = result.stdout
# कैप्चर किए गए डेटा को JSON प्रतिक्रिया के रूप में वापस करें
return jsonify(data)
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

यह कोड Python में एक Flask एप्लिकेशन को चलाने के लिए उपयोग किया जाता है। if __name__ == '__main__': यह सुनिश्चित करता है कि स्क्रिप्ट को सीधे चलाया जा रहा है, न कि किसी अन्य मॉड्यूल के रूप में इम्पोर्ट किया गया है। app.run(host='0.0.0.0', port=5000) एप्लिकेशन को सभी उपलब्ध IP एड्रेस (0.0.0.0) पर और पोर्ट 5000 पर चलाता है।


स्क्रिप्ट चलाएं:

```sh
python bandwidth_api.py

चरण 4: अपने ब्लॉग के साथ एकीकृत करें

निम्नलिखित HTML और JavaScript का उपयोग करके बैंडविड्थ डेटा को प्राप्त करें और प्रदर्शित करें:

document.addEventListener('DOMContentLoaded', function () {
    fetch('https://www.lzwjava.xyz/bandwidth')
        .then(response => response.json())
        .then(data => {
            var bandwidthData = JSON.parse(data);
        // समय के लिए एक कंटेनर बनाएं
        var timesContainer = document.createElement('div');
var currentUtcTime = new Date();
var currentLocalTime = new Date(currentUtcTime.getTime());
            var pUtcTime = document.createElement('p');
            pUtcTime.textContent = `UTC Time: ${currentUtcTime.toUTCString()}`;
            timesContainer.appendChild(pUtcTime);
var pLocalTime = document.createElement('p');
pLocalTime.textContent = `मेरा स्थानीय समय: ${currentLocalTime.toString()}`;
timesContainer.appendChild(pLocalTime);
        // टाइम्स कंटेनर को स्टेटस डिव में जोड़ें
        document.getElementById('status').appendChild(timesContainer);

        // एक टेबल बनाएं
        var table = document.createElement('table');
        table.border = '1';
        table.style.borderCollapse = 'collapse';
        table.style.width = '100%';

        // टेबल हेडर बनाएं
        var thead = document.createElement('thead');
        var tr = document.createElement('tr');
        var headers = ['समय', 'ट्रैफिक (KB/s)', 'स्थिति'];
        headers.forEach(headerText => {
            var th = document.createElement('th');
            th.textContent = headerText;
            tr.appendChild(th);
        });
        thead.appendChild(tr);
        table.appendChild(thead);

        // टेबल बॉडी बनाएं
        var tbody = document.createElement('tbody');

        // ट्रैफ़िक डेटा को प्रोसेस करें
        var fiveMinuteData = bandwidthData.interfaces[0].traffic.fiveminute.reverse();
        fiveMinuteData.forEach(interval => {
            var tr = document.createElement('tr');
var dataTime = new Date(Date.UTC(interval.date.year, interval.date.month - 1, interval.date.day, interval.time.hour, interval.time.minute));
var timeDifference = Math.round((currentUtcTime - dataTime) / (1000 * 60)); // समय अंतर मिनटों में
var tdTimeDifference = document.createElement('td');
tdTimeDifference.textContent = timeDifference + ' mins ago';
tr.appendChild(tdTimeDifference);
var averageTraffic = (interval.rx + interval.tx) / 2; // RX और TX का औसत निकालें
var tdTrafficKBs = document.createElement('td');
var trafficKBs = (averageTraffic / (5 * 60 * 1024)).toFixed(2); // KB/s में बदलें
tdTrafficKBs.textContent = trafficKBs;
tr.appendChild(tdTrafficKBs);
var tdStatus = document.createElement('td');
tdStatus.textContent = trafficKBs > 5 ? 'Online' : 'Offline';
tdStatus.className = trafficKBs > 5 ? 'status-online' : 'status-offline';
tr.appendChild(tdStatus);
tbody.appendChild(tr);
});
table.appendChild(tbody);
// टेबल को स्टेटस डिव में जोड़ें
document.getElementById('status').appendChild(table);
})
.catch(error => {
    console.error('बैंडविड्थ डेटा प्राप्त करने में त्रुटि:', error);
});

```

http://your-droplet-ip:5000/bandwidth को अपने droplet के IP पते से बदलें।

अतिरिक्त विचार

इन चरणों का पालन करके, आप अपने ब्लॉग पर एक स्टेटस पेज बना सकते हैं जो आपके DigitalOcean droplet के बैंडविड्थ उपयोग के आधार पर दर्शाता है कि क्या आप ऑनलाइन हैं।


Back 2025.01.18 Donate