DuKKeR

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

7 posts in this topic

Posted (edited)

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

Скриншот:

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
2 people like this

Share this post


Link to post
Share on other sites

Posted (edited)

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

<?
$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

Posted (edited)

Обязательно требуется указать, что ваш вариант подходит только для тех серверов, которые являются публичными (у которых в `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
1 person likes this

Share this post


Link to post
Share on other sites

Извините за флуд, можно функции мультиплеера, что то вроде samp-wiki, это будет ?

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.