mmd/mc-monitor

Minecraft服务器监控服务

安装: 23

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master 2016-04-02 15:05 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:34:16 UTC


README

创建自己的服务,该服务定期向Minecraft服务器请求数据,并将信息发送到webhook(您的网站)。

这将防止您的网站在向服务器请求数据时被屏蔽。

安装

  • 安装包及其依赖项

    composer require \
        'mmd/mc-monitor:dev-master' \
        'sensio/buzz-bundle:dev-master' \
        'neitanod/forceutf8:dev-master' \
        'xpaw/php-minecraft-query:dev-master'
  • app/AppKernel.php中包含包

    $bundles = array(
        ...
        new Mmd\Bundle\McMonitorBundle\MmdMcMonitorBundle(),
    );
  • app/config/routing.yml中包含路由

    mmd_mc_monitor:
        resource: "@MmdMcMonitorBundle/Resources/config/routing.yml"
        prefix:   /mc-monitor
  • app/config/parameters.yml中添加参数

    # The secret used in API requests
    mmd.mc_monitor.secret: "my-secret"
    
    # The url to your site (with server list) where monitoring will send servers status updates
    mmd.mc_monitor.webhook: "https://my-site.com/monitoring-updates"
  • 创建数据库表

    php app/console doctrine:schema:update --force

配置

  • 设置crontab执行检查服务器状态并发送信息到webhook的命令

    cd /path/to/project/root/
    sudo -u www-data php app/console mmd:mc-monitor:check 3

您可以指定一次检查多少个服务器。

服务器将按最后检查时间升序排列。

以apache用户www-data运行命令,以防止出现无法写入缓存目录错误。在这种情况下,cron必须设置为root用户,以便sudo命令在后台工作。

用法

  • 将服务器IP添加到监控

    # Request
    GET /mc-monitor/api/v1/<secret>/add/<ip>
    
    # Response
    {"status":true, "message": "Server added"}
    # or
    {"status":false, "message": "Invalid ip"}
    
  • 在您的应用中,您必须处理到mmd.mc_monitor.webhook参数设置的URL的监控服务器更新请求

监控将以以下格式进行请求

POST https://site.com/secret-url-for-mc-monitor/
{
    secret: "<secret-set-in-parameters>",
    servers: {
        "<server-ip>": {
            status: true, /* true=online, false=offline */
            data: {
                'hostname': '<span style="color:#00AAAA;">Awesome</span> <strong>minecraft</strong> server motd',
                'numplayers': 7,
                'maxplayers': 20,
                'version': '1.<span style="color:#AA00AA;">8</span>'
            }
        },
        "<server-ip>": {...},
        ...
    }
}
  • 从监控中移除服务器

无法直接从监控中移除服务器。这是为了防止有人知道您的密钥,他无法移除所有服务器。

可以通过向API发送JSON响应来从监控中移除服务器,当它向指定的webhook URL请求数据时,格式如下

{
    "remove": [
        "127.0.0.1:25565",
        "192.168.1.100",
        "<server-ip>"
    ]
}