Search in sources :

Example 1 with TelemetryConfig

use of org.terasology.engine.config.TelemetryConfig in project Terasology by MovingBlocks.

the class TelemetryScreen method pushAddServerPopupAndStartLogBackAppender.

private void pushAddServerPopupAndStartLogBackAppender() {
    AddServerPopup addServerPopup = nuiManager.pushScreen(AddServerPopup.ASSET_URI, AddServerPopup.class);
    addServerPopup.removeTip();
    ServerInfo serverInfo;
    TelemetryConfig telemetryConfig = config.getTelemetryConfig();
    if (telemetryConfig.getErrorReportingDestination() != null) {
        try {
            URL url = new URL("http://" + telemetryConfig.getErrorReportingDestination());
            serverInfo = new ServerInfo(telemetryConfig.getErrorReportingServerName(), url.getHost(), url.getPort());
            serverInfo.setOwner(telemetryConfig.getErrorReportingServerOwner());
        } catch (Exception e) {
            logger.error("Exception when get telemetry server information", e);
            serverInfo = new ServerInfo(TelemetryLogstashAppender.DEFAULT_LOGSTASH_NAME, TelemetryLogstashAppender.DEFAULT_LOGSTASH_HOST, TelemetryLogstashAppender.DEFAULT_LOGSTASH_PORT);
            serverInfo.setOwner(TelemetryLogstashAppender.DEFAULT_LOGSTASH_OWNER);
        }
    } else {
        serverInfo = new ServerInfo(TelemetryLogstashAppender.DEFAULT_LOGSTASH_NAME, TelemetryLogstashAppender.DEFAULT_LOGSTASH_HOST, TelemetryLogstashAppender.DEFAULT_LOGSTASH_PORT);
        serverInfo.setOwner(TelemetryLogstashAppender.DEFAULT_LOGSTASH_OWNER);
    }
    addServerPopup.setServerInfo(serverInfo);
    addServerPopup.onSuccess((item) -> {
        String destinationLogstash = item.getAddress() + ":" + item.getPort();
        TelemetryLogstashAppender telemetryLogstashAppender = TelemetryUtils.fetchTelemetryLogstashAppender();
        if (telemetryLogstashAppender != null) {
            telemetryLogstashAppender.addDestination(destinationLogstash);
            telemetryLogstashAppender.start();
        }
        // Save the destination
        telemetryConfig.setErrorReportingDestination(destinationLogstash);
        telemetryConfig.setErrorReportingServerName(item.getName());
        telemetryConfig.setErrorReportingServerOwner(item.getOwner());
    });
    addServerPopup.onCancel((button) -> telemetryConfig.setErrorReportingEnabled(false));
}
Also used : ServerInfo(org.terasology.engine.config.ServerInfo) TelemetryLogstashAppender(org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender) AddServerPopup(org.terasology.engine.rendering.nui.layers.mainMenu.AddServerPopup) URL(java.net.URL) TelemetryConfig(org.terasology.engine.config.TelemetryConfig)

Example 2 with TelemetryConfig

use of org.terasology.engine.config.TelemetryConfig in project Terasology by MovingBlocks.

the class TelemetrySubSystem method setTelemetryDestination.

private void setTelemetryDestination(Context rootContext) {
    Config config = rootContext.get(Config.class);
    TelemetryConfig telemetryConfig = config.getTelemetryConfig();
    String telemetryDestination = telemetryConfig.getTelemetryDestination();
    if (telemetryDestination != null) {
        try {
            URL url = new URL(telemetryDestination);
            TelemetryEmitter telemetryEmitter = (TelemetryEmitter) emitter;
            telemetryEmitter.changeUrl(url);
        } catch (MalformedURLException e) {
            logger.error("URL malformed", e);
        }
    } else {
        telemetryConfig.setTelemetryDestination(TelemetryEmitter.getDefaultCollectorURL(DEFAULT_COLLECTOR_PROTOCOL, DEFAULT_COLLECTOR_HOST, DEFAULT_COLLECTOR_PORT).toString());
    }
}
Also used : MalformedURLException(java.net.MalformedURLException) Config(org.terasology.engine.config.Config) TelemetryConfig(org.terasology.engine.config.TelemetryConfig) TelemetryEmitter(org.terasology.engine.telemetry.TelemetryEmitter) URL(java.net.URL) TelemetryConfig(org.terasology.engine.config.TelemetryConfig)

Example 3 with TelemetryConfig

use of org.terasology.engine.config.TelemetryConfig in project Terasology by MovingBlocks.

the class StateMainMenu method pushLaunchPopup.

private void pushLaunchPopup() {
    Config config = context.get(Config.class);
    TelemetryConfig telemetryConfig = config.getTelemetryConfig();
    TranslationSystem translationSystem = context.get(TranslationSystem.class);
    TelemetryLogstashAppender appender = TelemetryUtils.fetchTelemetryLogstashAppender();
    if (!telemetryConfig.isLaunchPopupDisabled()) {
        String telemetryTitle = translationSystem.translate("${engine:menu#telemetry-launch-popup-title}");
        String telemetryMessage = translationSystem.translate("${engine:menu#telemetry-launch-popup-text}");
        LaunchPopup telemetryConfirmPopup = nuiManager.pushScreen(LaunchPopup.ASSET_URI, LaunchPopup.class);
        telemetryConfirmPopup.setMessage(telemetryTitle, telemetryMessage);
        telemetryConfirmPopup.setYesHandler(() -> {
            telemetryConfig.setTelemetryAndErrorReportingEnable(true);
            // Enable error reporting
            appender.start();
        });
        telemetryConfirmPopup.setNoHandler(() -> {
            telemetryConfig.setTelemetryAndErrorReportingEnable(false);
            // Disable error reporting
            appender.stop();
        });
        telemetryConfirmPopup.setOptionButtonText(translationSystem.translate("${engine:menu#telemetry-button}"));
        telemetryConfirmPopup.setOptionHandler(() -> {
            nuiManager.pushScreen(TelemetryScreen.ASSET_URI, TelemetryScreen.class);
        });
    }
}
Also used : TranslationSystem(org.terasology.engine.i18n.TranslationSystem) LaunchPopup(org.terasology.engine.rendering.nui.layers.mainMenu.LaunchPopup) Config(org.terasology.engine.config.Config) TelemetryConfig(org.terasology.engine.config.TelemetryConfig) TelemetryLogstashAppender(org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender) TelemetryConfig(org.terasology.engine.config.TelemetryConfig)

Example 4 with TelemetryConfig

use of org.terasology.engine.config.TelemetryConfig in project Terasology by MovingBlocks.

the class TelemetrySubSystem method addTelemetryLogstashAppender.

private void addTelemetryLogstashAppender(Context rootContext) {
    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
    TelemetryLogstashAppender telemetryLogstashAppender = new TelemetryLogstashAppender(rootContext);
    lc.getLogger(Logger.ROOT_LOGGER_NAME).addAppender(telemetryLogstashAppender);
    Config config = rootContext.get(Config.class);
    TelemetryConfig telemetryConfig = config.getTelemetryConfig();
    String errorReportingDestination = telemetryConfig.getErrorReportingDestination();
    if (errorReportingDestination == null) {
        errorReportingDestination = TelemetryLogstashAppender.DEFAULT_LOGSTASH_HOST + ":" + TelemetryLogstashAppender.DEFAULT_LOGSTASH_PORT;
        telemetryConfig.setErrorReportingDestination(errorReportingDestination);
    }
    if (telemetryConfig.isErrorReportingEnabled()) {
        telemetryLogstashAppender.addDestination(errorReportingDestination);
        telemetryLogstashAppender.start();
    }
}
Also used : TelemetryLogstashAppender(org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender) Config(org.terasology.engine.config.Config) TelemetryConfig(org.terasology.engine.config.TelemetryConfig) LoggerContext(ch.qos.logback.classic.LoggerContext) TelemetryConfig(org.terasology.engine.config.TelemetryConfig)

Example 5 with TelemetryConfig

use of org.terasology.engine.config.TelemetryConfig in project Terasology by MovingBlocks.

the class TelemetrySubSystem method postInitialise.

@Override
public void postInitialise(Context rootContext) {
    metrics.initialise(rootContext);
    // Add the telemetryConfig adapter to context. It could be used in modules.
    Config config = rootContext.get(Config.class);
    TelemetryConfig telemetryConfig = config.getTelemetryConfig();
    TelemetryConfiguration telemetryConfiguration = new TelemetryConfigurationImpl(telemetryConfig);
    rootContext.put(TelemetryConfiguration.class, telemetryConfiguration);
    addTelemetryLogstashAppender(rootContext);
    setTelemetryDestination(rootContext);
}
Also used : TelemetryConfiguration(org.terasology.engine.config.facade.TelemetryConfiguration) Config(org.terasology.engine.config.Config) TelemetryConfig(org.terasology.engine.config.TelemetryConfig) TelemetryConfigurationImpl(org.terasology.engine.config.facade.TelemetryConfigurationImpl) TelemetryConfig(org.terasology.engine.config.TelemetryConfig)

Aggregations

TelemetryConfig (org.terasology.engine.config.TelemetryConfig)6 Config (org.terasology.engine.config.Config)4 URL (java.net.URL)3 TelemetryLogstashAppender (org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender)3 ServerInfo (org.terasology.engine.config.ServerInfo)2 AddServerPopup (org.terasology.engine.rendering.nui.layers.mainMenu.AddServerPopup)2 LoggerContext (ch.qos.logback.classic.LoggerContext)1 MalformedURLException (java.net.MalformedURLException)1 TelemetryConfiguration (org.terasology.engine.config.facade.TelemetryConfiguration)1 TelemetryConfigurationImpl (org.terasology.engine.config.facade.TelemetryConfigurationImpl)1 TranslationSystem (org.terasology.engine.i18n.TranslationSystem)1 LaunchPopup (org.terasology.engine.rendering.nui.layers.mainMenu.LaunchPopup)1 TelemetryEmitter (org.terasology.engine.telemetry.TelemetryEmitter)1