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);
}
}
}
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());
}
}
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;
}
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);
}
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());
}
}
}
}
Aggregations