DuKKeR

Пример Мониторинг вашего сервера

Recommended Posts

DuKKeR    2

Доброго времени суток. Хочу представить пример парсинга мастер-листа и получения информации о вашем сервере.

Скриншот:

92LcpcbF3O4.jpg

Код на PHP:

$ip = '91.76.227.40'; 	//	Ip адрес сервера
$port = 22005;			//	Port сервера 
$ch = curl_init('https://ml.rage.mp/servers');
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
$resp = curl_exec( $ch );
curl_close( $ch );
$resp = json_decode($resp , true);
foreach($resp as $val)
	{
		if($val['ip'] == $ip and $val['port'] == $port)
			{
				echo 'PHP<hr>Id: '.$val['_id'];	
				echo '<br>Название: '.$val['name'];
				echo '<br>Слотов: '.$val['slots'];
				echo '<br>Игроков: '.$val['players'];
				echo '<br>Uptime: '.$val['uptime'];
				break;
			}			
	}	

Код на JavaScript:

var ip = '91.76.227.40',  	//	Ip адрес сервера
	port = 22005; 			//	Port сервера 
	$.getJSON('https://ml.rage.mp/servers', function(data) {
		$.each(data, function(key, val) {
			if(ip == val.ip && port == val.port) {
				document.write('JavaScript<hr>Id: '+val._id);	
				document.write('<br>Название: '+val.name);
				document.write('<br>Слотов: '+val.slots);
				document.write('<br>Игроков: '+val.players);
				document.write('<br>Uptime: '+val.uptime);
				return false;				
			}
		});
	});

Библиотека JQuery обязательна!

Edited by DuKKeR
  • Like 2

Share this post


Link to post
Share on other sites
tmaslov22    3

Можно проще на пыхе писать)
 

<?
$resp = json_decode(file_get_contents("https://ml.rage.mp/servers"), true);
foreach($resp as $val) {
    if($val['ip'] == '5.187.1.159' && $val['port'] == 22005) {
        echo 'Id: '.$val['_id'];
        echo '<br>Название: '.$val['name'];
        echo '<br>Слотов: '.$val['slots'];
        echo '<br>Игроков: '.$val['players'];
        echo '<br>Uptime: '.$val['uptime'];
        break;
    }
}

 

Edited by tmaslov22

Share this post


Link to post
Share on other sites
Danil_Valov    19

Обязательно требуется указать, что ваш вариант подходит только для тех серверов, которые являются публичными (у которых в `conf.json` выставлено `"announce": true`. Иначе они не будут на сайте мониторинга rage.mp отображаться, и не будут попадать в json.

 

И всё-таки, мне кажется, проще будет веб-сервер к вашему игровому серверу подключить (node-пакет `http` тот же) и через него выводить статистику. Как минимум, данные о сервере актуальнее будут. Да и нагрузка минимальна.

Вот так можно это реализовать:

 

Добавляем в папку `keker` файл monitoring.js со следующим содержанием:

// Подключаем модуль http
// (уже включён в nodejs, отдельно устанавливать не требуется)
const http = require('http');

// Создаём новый веб-сервер
const server = http.createServer(function(request, response) {
  // В ответ на любой запрос отдаём мониторинг
  response.writeHead(200, {"Content-Type": "text/html"});
  response.write(`<br>Players: ${mp.players.length}/${mp.players.size}`);
  response.write(`<br>Uptime: ${process.uptime()}`);
  response.end();
});

//Запускаем веб-сервер на порту 8080 (можно поменять на любой другой)
server.listen(8080);

// Выводим в консоль информацию, что сервер запущен
console.log('\nMonitoring Server is listening');

 

Добавляем в конец файла index.js, находящегося в этой же папке `keker`:

...

require('./monitoring');

 

И после перезапуска сервера в терминале появится надпись "Monitoring Server is listening":

Цитата

Starting RAGE Multiplayer server.

MaxPlayers: 100
Name: RAGE:MP Unofficial server

Loading packages
        "keker" loaded

Loading events:
        "commandhandler.js" - OK
        "common.js" - OK

Monitoring Server is listening

Loading commands:
        "basiccommands.js" - OK

 

И теперь при заходе на http://ip_вашего_сервера:8080 вы будете видеть:

Цитата

Players: 1/100
Uptime: 637.516

Uptime указывается в секундах.

Если вы на своём компьютере сервер запустили - то мониторинг будет доступен по ссылке: http://127.0.0.1:8080

 

Можно также в JSON выводить все эти данные в мониторинг, а потом сайтом подхватывать их.

Edited by Danil_Valov
  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.