Search in sources :

Example 1 with Node

use of org.graylog2.indexer.cluster.Node in project graylog2-server by Graylog2.

the class PeriodicalsService method startUp.

@Override
protected void startUp() throws Exception {
    LOG.info("Starting {} periodicals ...", periodicalSet.size());
    for (Periodical periodical : periodicalSet) {
        try {
            periodical.initialize();
            if (periodical.masterOnly() && !serverStatus.hasCapability(ServerStatus.Capability.MASTER)) {
                LOG.info("Not starting [{}] periodical. Only started on Graylog master nodes.", periodical.getClass().getCanonicalName());
                continue;
            }
            if (!periodical.startOnThisNode()) {
                LOG.info("Not starting [{}] periodical. Not configured to run on this node.", periodical.getClass().getCanonicalName());
                continue;
            }
            // Register and start.
            periodicals.registerAndStart(periodical);
        } catch (Exception e) {
            LOG.error("Could not initialize periodical.", e);
        }
    }
}
Also used : Periodical(org.graylog2.plugin.periodical.Periodical)

Example 2 with Node

use of org.graylog2.indexer.cluster.Node in project graylog2-server by Graylog2.

the class EsNodeProviderTest method noEsFileValuesFromGraylog2Config.

@Test
public void noEsFileValuesFromGraylog2Config() {
    // checks that all values in the node settings are from the graylog2 conf and that no extra settings remain untested
    Map<String, String> settings = Maps.newHashMap();
    Map<String, String> esPropNames = Maps.newHashMap();
    // add all ES settings here that are configurable via graylog.conf
    addEsConfig(esPropNames, settings, "cluster.name", "elasticsearch_cluster_name", "garylog5");
    addEsConfig(esPropNames, settings, "node.name", "elasticsearch_node_name_prefix", "garylord-");
    addEsConfig(esPropNames, settings, "node.master", "elasticsearch_node_master", "true");
    addEsConfig(esPropNames, settings, "node.data", "elasticsearch_node_data", "true");
    addEsConfig(esPropNames, settings, "path.home", "elasticsearch_path_home", "data/elasticsearch");
    addEsConfig(esPropNames, settings, "path.data", "elasticsearch_path_data", "data/elasticsearch");
    addEsConfig(esPropNames, settings, "transport.tcp.port", "elasticsearch_transport_tcp_port", "9999");
    addEsConfig(esPropNames, settings, "http.enabled", "elasticsearch_http_enabled", "true");
    addEsConfig(esPropNames, settings, "discovery.zen.ping.unicast.hosts.0", "elasticsearch_discovery_zen_ping_unicast_hosts", "example.net");
    addEsConfig(esPropNames, settings, "discovery.initial_state_timeout", "elasticsearch_discovery_initial_state_timeout", "5s");
    esPropNames.put("action.auto_create_index", "false");
    esPropNames.put("node.client", "true");
    ElasticsearchConfiguration config = setupConfig(settings);
    Settings nodeSettings = EsNodeProvider.readNodeSettings(config, nodeId);
    assertThat(Sets.symmetricDifference(esPropNames.keySet(), nodeSettings.getAsMap().keySet())).isEmpty();
    assertThat(nodeSettings.get("node.name")).isEqualTo(settings.get("elasticsearch_node_name_prefix") + nodeId);
    for (Map.Entry<String, String> property : esPropNames.entrySet()) {
        final String key = property.getKey();
        // The node name is being constructed and not used verbatim.
        if ("node.name".equals(key)) {
            continue;
        }
        final String settingValue = nodeSettings.get(key);
        // the node setting value should be whatever we have put in.
        assertThat(settingValue).isEqualTo(property.getValue());
    }
}
Also used : ElasticsearchConfiguration(org.graylog2.configuration.ElasticsearchConfiguration) ImmutableMap(com.google.common.collect.ImmutableMap) Map(java.util.Map) Settings(org.elasticsearch.common.settings.Settings) Test(org.junit.Test)

Example 3 with Node

use of org.graylog2.indexer.cluster.Node in project opennms by OpenNMS.

the class SyslogEventForwarder method getTranslatedMessage.

/**
 * Gets the translated message.
 *
 * @param event the event
 * @param node the node
 * @param msgFormat the message format
 * @return the translated message
 */
private String getTranslatedMessage(Event event, OnmsNode node, String msgFormat) {
    StandardEvaluationContext context = new StandardEvaluationContext(event);
    if (node != null) {
        context.setVariable("node", node);
    }
    ExpressionParser parser = new SpelExpressionParser();
    Expression exp = parser.parseExpression(msgFormat, new TemplateParserContext("${", "}"));
    try {
        final String msg = (String) exp.getValue(context, String.class);
        LOG.debug("getTranslatedMessage: {} ==> {}", msgFormat, msg);
        return msg;
    } catch (Exception e) {
        LOG.warn("getTranslatedMessage: can't evaluate expression {} for alarm {} because: {}", msgFormat, event.getUei(), e.getMessage());
    }
    return null;
}
Also used : StandardEvaluationContext(org.springframework.expression.spel.support.StandardEvaluationContext) SpelExpressionParser(org.springframework.expression.spel.standard.SpelExpressionParser) Expression(org.springframework.expression.Expression) TemplateParserContext(org.springframework.expression.common.TemplateParserContext) ExpressionParser(org.springframework.expression.ExpressionParser) SpelExpressionParser(org.springframework.expression.spel.standard.SpelExpressionParser) IOException(java.io.IOException) SyslogRuntimeException(org.graylog2.syslog4j.SyslogRuntimeException)

Example 4 with Node

use of org.graylog2.indexer.cluster.Node in project graylog2-server by Graylog2.

the class ContentPackPersistenceService method filterMissingResourcesAndInsert.

public Optional<ContentPack> filterMissingResourcesAndInsert(final ContentPack pack) {
    ContentPackV1 cpv1 = (ContentPackV1) pack;
    final Set<String> allStreams = streamService.loadAll().stream().map(stream -> stream.getTitle()).collect(Collectors.toSet());
    final Map<String, String> streamsInContentPack = new HashMap<>();
    cpv1.entities().stream().filter(entity -> "stream".equals(entity.type().name()) && "1".equals(entity.type().version())).map(entity -> new Tuple2<String, JsonNode>(entity.id().id(), ((EntityV1) entity).data().findValue("title"))).forEach(tuple2 -> {
        JsonNode title = tuple2.v2().findValue("@value");
        streamsInContentPack.put(tuple2.v1(), title.textValue());
    });
    cpv1.entities().stream().filter(entity -> "dashboard".equals(entity.type().name()) && "2".equals(entity.type().version())).map(entity -> ((EntityV1) entity).data().findValue("search")).map(node -> node.findValue("queries")).map(node -> node.findValue("search_types")).forEach(node -> {
        final ObjectNode parent = (ObjectNode) node.findParent("streams");
        final ArrayNode streams = (ArrayNode) node.findValue("streams");
        if (streams != null) {
            final ArrayNode filtered = streams.deepCopy();
            filtered.removeAll();
            streams.forEach(stream -> {
                final String sid = stream.textValue();
                final String stitle = streamsInContentPack.get(sid);
                if (allStreams.contains(stitle))
                    filtered.add(stream);
            });
            parent.replace("streams", filtered);
        }
    });
    return this.insert(cpv1);
}
Also used : DuplicateKeyException(com.mongodb.DuplicateKeyException) Identified(org.graylog2.contentpacks.model.Identified) ContentPack(org.graylog2.contentpacks.model.ContentPack) ContentPackV1(org.graylog2.contentpacks.model.ContentPackV1) LoggerFactory(org.slf4j.LoggerFactory) ImmutableCollection(com.google.common.collect.ImmutableCollection) HashMap(java.util.HashMap) Singleton(javax.inject.Singleton) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) Revisioned(org.graylog2.contentpacks.model.Revisioned) WriteResult(org.mongojack.WriteResult) Inject(javax.inject.Inject) HashSet(java.util.HashSet) Tuple2(org.jooq.lambda.tuple.Tuple2) Map(java.util.Map) JsonNode(com.fasterxml.jackson.databind.JsonNode) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) NotFoundException(org.graylog2.database.NotFoundException) ImmutableSet(com.google.common.collect.ImmutableSet) Logger(org.slf4j.Logger) ModelId(org.graylog2.contentpacks.model.ModelId) DBCursor(org.mongojack.DBCursor) BasicDBObject(com.mongodb.BasicDBObject) MongoJackObjectMapperProvider(org.graylog2.bindings.providers.MongoJackObjectMapperProvider) JacksonDBCollection(org.mongojack.JacksonDBCollection) Set(java.util.Set) DBQuery(org.mongojack.DBQuery) Collectors(java.util.stream.Collectors) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) EntityV1(org.graylog2.contentpacks.model.entities.EntityV1) StreamService(org.graylog2.streams.StreamService) ObjectId(org.bson.types.ObjectId) Optional(java.util.Optional) MongoConnection(org.graylog2.database.MongoConnection) Comparator(java.util.Comparator) Collections(java.util.Collections) EntityV1(org.graylog2.contentpacks.model.entities.EntityV1) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) HashMap(java.util.HashMap) Tuple2(org.jooq.lambda.tuple.Tuple2) ContentPackV1(org.graylog2.contentpacks.model.ContentPackV1) JsonNode(com.fasterxml.jackson.databind.JsonNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode)

Example 5 with Node

use of org.graylog2.indexer.cluster.Node in project graylog2-server by Graylog2.

the class IndexerClusterCheckerThread method publishDiskUsageNotifications.

private void publishDiskUsageNotifications(Map<Notification.Type, List<String>> notificationTypePerNodeIdentifier) {
    for (Map.Entry<Notification.Type, List<String>> entry : notificationTypePerNodeIdentifier.entrySet()) {
        if (!notificationExists(entry.getKey())) {
            Notification notification = notificationService.buildNow().addType(entry.getKey()).addSeverity(Notification.Severity.URGENT).addDetail("nodes", String.join(", ", entry.getValue()));
            notificationService.publishIfFirst(notification);
            for (String node : entry.getValue()) {
                LOG.warn("Elasticsearch node [{}] triggered [{}] due to low free disk space", node, entry.getKey());
            }
        }
    }
}
Also used : List(java.util.List) ImmutableList(com.google.common.collect.ImmutableList) HashMap(java.util.HashMap) Map(java.util.Map) Notification(org.graylog2.notifications.Notification)

Aggregations

Timed (com.codahale.metrics.annotation.Timed)29 ApiOperation (io.swagger.annotations.ApiOperation)28 MessageInput (org.graylog2.plugin.inputs.MessageInput)23 ApiResponses (io.swagger.annotations.ApiResponses)19 Path (javax.ws.rs.Path)19 Input (org.graylog2.inputs.Input)15 AuditEvent (org.graylog2.audit.jersey.AuditEvent)14 Test (org.junit.Test)14 GET (javax.ws.rs.GET)13 Produces (javax.ws.rs.Produces)12 Node (org.graylog2.cluster.Node)12 Map (java.util.Map)7 WebApplicationException (javax.ws.rs.WebApplicationException)7 PUT (javax.ws.rs.PUT)6 RequiresPermissions (org.apache.shiro.authz.annotation.RequiresPermissions)6 Notification (org.graylog2.notifications.Notification)6 Activity (org.graylog2.shared.system.activities.Activity)6 JsonNode (com.fasterxml.jackson.databind.JsonNode)5 EventBus (com.google.common.eventbus.EventBus)5 URI (java.net.URI)5