Search in sources :

Example 1 with Stream

use of org.graylog2.plugin.streams.Stream in project graylog2-server by Graylog2.

the class Message method getStreamIds.

@SuppressWarnings("unchecked")
public Collection<String> getStreamIds() {
    Collection<String> streamField;
    try {
        streamField = getFieldAs(Collection.class, FIELD_STREAMS);
    } catch (ClassCastException e) {
        LOG.trace("Couldn't cast {} to List", FIELD_STREAMS, e);
        streamField = Collections.emptySet();
    }
    final Set<String> streamIds = streamField == null ? new HashSet<>(streams.size()) : new HashSet<>(streamField);
    for (Stream stream : streams) {
        streamIds.add(stream.getId());
    }
    return streamIds;
}
Also used : Collection(java.util.Collection) Stream(org.graylog2.plugin.streams.Stream)

Example 2 with Stream

use of org.graylog2.plugin.streams.Stream in project graylog2-server by Graylog2.

the class V20161116172100_DefaultIndexSetMigration method upgrade.

@Override
public void upgrade() {
    // Do not run again if the migration marker can be found in the database.
    if (clusterConfigService.get(DefaultIndexSetCreated.class) != null) {
        return;
    }
    final IndexManagementConfig indexManagementConfig = clusterConfigService.get(IndexManagementConfig.class);
    checkState(indexManagementConfig != null, "Couldn't find index management configuration");
    final IndexSetConfig config = IndexSetConfig.builder().title("Default index set").description("The Graylog default index set").indexPrefix(elasticsearchConfiguration.getIndexPrefix()).shards(elasticsearchConfiguration.getShards()).replicas(elasticsearchConfiguration.getReplicas()).rotationStrategy(getRotationStrategyConfig(indexManagementConfig)).retentionStrategy(getRetentionStrategyConfig(indexManagementConfig)).creationDate(ZonedDateTime.now(ZoneOffset.UTC)).indexAnalyzer(elasticsearchConfiguration.getAnalyzer()).indexTemplateName(elasticsearchConfiguration.getTemplateName()).indexOptimizationMaxNumSegments(elasticsearchConfiguration.getIndexOptimizationMaxNumSegments()).indexOptimizationDisabled(elasticsearchConfiguration.isDisableIndexOptimization()).build();
    final IndexSetConfig savedConfig = indexSetService.save(config);
    clusterConfigService.write(DefaultIndexSetConfig.create(savedConfig.id()));
    clusterConfigService.write(DefaultIndexSetCreated.create());
    // Publish event to cluster event bus so the stream router will reload.
    clusterEventBus.post(IndexSetCreatedEvent.create(savedConfig));
    LOG.debug("Successfully created default index set: {}", savedConfig);
}
Also used : IndexSetConfig(org.graylog2.indexer.indexset.IndexSetConfig) DefaultIndexSetConfig(org.graylog2.indexer.indexset.DefaultIndexSetConfig) DefaultIndexSetCreated(org.graylog2.indexer.indexset.DefaultIndexSetCreated) IndexManagementConfig(org.graylog2.indexer.management.IndexManagementConfig)

Example 3 with Stream

use of org.graylog2.plugin.streams.Stream in project graylog2-server by Graylog2.

the class V20161122174500_AssignIndexSetsToStreamsMigration method upgrade.

@Override
public void upgrade() {
    // Only run this migration once.
    if (clusterConfigService.get(MigrationCompleted.class) != null) {
        LOG.debug("Migration already completed.");
        return;
    }
    final IndexSetConfig indexSetConfig = findDefaultIndexSet();
    final ImmutableSet.Builder<String> completedStreamIds = ImmutableSet.builder();
    final ImmutableSet.Builder<String> failedStreamIds = ImmutableSet.builder();
    // index sets, so the only one that exists is the "default" one created by an earlier migration.
    for (Stream stream : streamService.loadAll()) {
        if (isNullOrEmpty(stream.getIndexSetId())) {
            LOG.info("Assigning index set <{}> ({}) to stream <{}> ({})", indexSetConfig.id(), indexSetConfig.title(), stream.getId(), stream.getTitle());
            stream.setIndexSetId(indexSetConfig.id());
            try {
                streamService.save(stream);
                completedStreamIds.add(stream.getId());
            } catch (ValidationException e) {
                LOG.error("Unable to save stream <{}>", stream.getId(), e);
                failedStreamIds.add(stream.getId());
            }
        }
    }
    // Mark this migration as done.
    clusterConfigService.write(MigrationCompleted.create(indexSetConfig.id(), completedStreamIds.build(), failedStreamIds.build()));
    // Make sure the stream router will reload the changed streams.
    clusterEventBus.post(StreamsChangedEvent.create(completedStreamIds.build()));
}
Also used : ValidationException(org.graylog2.plugin.database.ValidationException) ImmutableSet(com.google.common.collect.ImmutableSet) IndexSetConfig(org.graylog2.indexer.indexset.IndexSetConfig) Stream(org.graylog2.plugin.streams.Stream)

Example 4 with Stream

use of org.graylog2.plugin.streams.Stream in project graylog2-server by Graylog2.

the class V20161124104700_AddRetentionRotationAndDefaultFlagToIndexSetMigration method upgrade.

@Override
public void upgrade() {
    if (clusterConfigService.get(MigrationCompleted.class) != null) {
        LOG.debug("Migration already completed!");
        return;
    }
    final ImmutableSet.Builder<String> updatedIds = ImmutableSet.builder();
    final ImmutableSet.Builder<String> skippedIds = ImmutableSet.builder();
    final IndexManagementConfig indexManagementConfig = clusterConfigService.get(IndexManagementConfig.class);
    checkState(indexManagementConfig != null, "Couldn't find index management configuration");
    for (final IndexSetConfig indexSetConfig : indexSetService.findAll()) {
        final IndexSetConfig.Builder updated = indexSetConfig.toBuilder();
        if (isNullOrEmpty(indexSetConfig.rotationStrategyClass())) {
            // Paranoia
            checkState(indexSetConfig.rotationStrategy().type().startsWith(indexManagementConfig.rotationStrategy()), "rotation strategy config type <%s> does not match rotation strategy <%s>", indexSetConfig.rotationStrategy().type(), indexManagementConfig.rotationStrategy());
            LOG.info("Adding rotation_strategy_class <{}> to index set <{}>", indexManagementConfig.rotationStrategy(), indexSetConfig.id());
            updated.rotationStrategyClass(indexManagementConfig.rotationStrategy());
        }
        if (isNullOrEmpty(indexSetConfig.retentionStrategyClass())) {
            // Paranoia
            checkState(indexSetConfig.retentionStrategy().type().startsWith(indexManagementConfig.retentionStrategy()), "retention strategy config type <%s> does not match retention strategy <%s>", indexSetConfig.retentionStrategy().type(), indexManagementConfig.retentionStrategy());
            LOG.info("Adding retention_strategy_class <{}> to index set <{}>", indexManagementConfig.retentionStrategy(), indexSetConfig.id());
            updated.retentionStrategyClass(indexManagementConfig.retentionStrategy());
        }
        if (!indexSetConfig.equals(updated.build())) {
            indexSetService.save(updated.build());
            updatedIds.add(Optional.ofNullable(indexSetConfig.id()).orElseThrow(() -> new IllegalStateException("no id??")));
        } else {
            skippedIds.add(Optional.ofNullable(indexSetConfig.id()).orElseThrow(() -> new IllegalStateException("no id??")));
        }
    }
    // Mark the oldest index set (there should be only one at this point, though) as default.
    final IndexSetConfig defaultIndexSetConfig = indexSetService.findAll().stream().sorted(Comparator.comparing(IndexSetConfig::creationDate)).findFirst().orElseThrow(() -> new IllegalStateException("Unable to find any index set - this should not happen!"));
    LOG.info("Setting index set <{}> as default", defaultIndexSetConfig.id());
    clusterConfigService.write(DefaultIndexSetConfig.create(defaultIndexSetConfig.id()));
    clusterConfigService.write(MigrationCompleted.create(updatedIds.build(), skippedIds.build(), defaultIndexSetConfig.id()));
}
Also used : ImmutableSet(com.google.common.collect.ImmutableSet) IndexSetConfig(org.graylog2.indexer.indexset.IndexSetConfig) DefaultIndexSetConfig(org.graylog2.indexer.indexset.DefaultIndexSetConfig) IndexManagementConfig(org.graylog2.indexer.management.IndexManagementConfig)

Example 5 with Stream

use of org.graylog2.plugin.streams.Stream in project graylog2-server by Graylog2.

the class V20161125161400_AlertReceiversMigration method updateConfiguration.

private Optional<String> updateConfiguration(Stream stream, AlarmCallbackConfiguration callbackConfiguration) {
    final Map<String, List<String>> alertReceivers = stream.getAlertReceivers();
    final List<String> usernames = alertReceivers.get("users");
    final List<String> emails = alertReceivers.get("emails");
    final Map<String, Object> configuration = callbackConfiguration.getConfiguration();
    if (usernames != null && !usernames.isEmpty()) {
        LOG.debug("Moving users alert receivers from stream <" + stream.getId() + ">");
        configuration.put(EmailAlarmCallback.CK_USER_RECEIVERS, usernames);
    }
    if (emails != null && !emails.isEmpty()) {
        LOG.debug("Moving emails alert receivers from stream <" + stream.getId() + ">");
        configuration.put(EmailAlarmCallback.CK_EMAIL_RECEIVERS, emails);
    }
    final AlarmCallbackConfigurationImpl updatedConfiguration = ((AlarmCallbackConfigurationImpl) callbackConfiguration).toBuilder().setConfiguration(configuration).build();
    try {
        final String callbackId = this.alarmCallbackService.save(updatedConfiguration);
        LOG.debug("Successfully created email alarm callback <" + callbackId + "> for stream <" + stream.getId() + ">.");
        return Optional.of(callbackId);
    } catch (ValidationException e) {
        LOG.error("Unable to create email alarm callback for stream <" + stream.getId() + ">: ", e);
    }
    return Optional.empty();
}
Also used : ValidationException(org.graylog2.plugin.database.ValidationException) List(java.util.List) BasicDBObject(com.mongodb.BasicDBObject) AlarmCallbackConfigurationImpl(org.graylog2.alarmcallbacks.AlarmCallbackConfigurationImpl)

Aggregations

Stream (org.graylog2.plugin.streams.Stream)96 Test (org.junit.Test)70 Timed (com.codahale.metrics.annotation.Timed)42 ApiOperation (io.swagger.annotations.ApiOperation)42 AlertCondition (org.graylog2.plugin.alarms.AlertCondition)35 ApiResponses (io.swagger.annotations.ApiResponses)32 Message (org.graylog2.plugin.Message)30 Path (javax.ws.rs.Path)29 AuditEvent (org.graylog2.audit.jersey.AuditEvent)27 Produces (javax.ws.rs.Produces)26 ObjectId (org.bson.types.ObjectId)21 StreamRule (org.graylog2.plugin.streams.StreamRule)20 BadRequestException (javax.ws.rs.BadRequestException)18 GET (javax.ws.rs.GET)18 POST (javax.ws.rs.POST)18 AlarmCallbackConfiguration (org.graylog2.alarmcallbacks.AlarmCallbackConfiguration)17 IndexSet (org.graylog2.indexer.IndexSet)16 DateTime (org.joda.time.DateTime)15 List (java.util.List)14 Map (java.util.Map)14