Search in sources :

Example 6 with TransportConfigurationException

use of org.graylog2.plugin.alarms.transports.TransportConfigurationException in project graylog2-server by Graylog2.

the class FormattedEmailAlertSender method sendEmail.

private void sendEmail(String emailAddress, Stream stream, AlertCondition.CheckResult checkResult, List<Message> backlog) throws TransportConfigurationException, EmailException {
    LOG.debug("Sending mail to " + emailAddress);
    if (!configuration.isEnabled()) {
        throw new TransportConfigurationException("Email transport is not enabled in server configuration file!");
    }
    final Email email = emailFactory.simpleEmail();
    if (pluginConfig != null && !isNullOrEmpty(pluginConfig.getString("sender"))) {
        email.setFrom(pluginConfig.getString("sender"));
    }
    email.setSubject(buildSubject(stream, checkResult, backlog));
    email.setMsg(buildBody(stream, checkResult, backlog));
    email.addTo(emailAddress);
    email.send();
}
Also used : Email(org.apache.commons.mail.Email) TransportConfigurationException(org.graylog2.plugin.alarms.transports.TransportConfigurationException)

Example 7 with TransportConfigurationException

use of org.graylog2.plugin.alarms.transports.TransportConfigurationException in project graylog2-server by Graylog2.

the class AlarmCallbacksResource method test.

@POST
@Timed
@Path("/{alarmCallbackId}/test")
@ApiOperation(value = "Send a test alert for a given alarm callback")
@ApiResponses(value = { @ApiResponse(code = 404, message = "Alarm callback not found."), @ApiResponse(code = 400, message = "Invalid ObjectId."), @ApiResponse(code = 500, message = "Error while testing alarm callback") })
@NoAuditEvent("only used to test alert notifications")
public Response test(@ApiParam(name = "alarmCallbackId", value = "The alarm callback id to send a test alert for.", required = true) @PathParam("alarmCallbackId") String alarmCallbackId) throws TransportConfigurationException, EmailException, NotFoundException {
    final AlarmCallbackConfiguration alarmCallbackConfiguration = alarmCallbackConfigurationService.load(alarmCallbackId);
    final String streamId = alarmCallbackConfiguration.getStreamId();
    checkPermission(RestPermissions.STREAMS_EDIT, streamId);
    final Stream stream = streamService.load(streamId);
    final DummyAlertCondition testAlertCondition = new DummyAlertCondition(stream, null, Tools.nowUTC(), getSubject().getPrincipal().toString(), Collections.emptyMap(), "Test Alert");
    try {
        AbstractAlertCondition.CheckResult checkResult = testAlertCondition.runCheck();
        AlarmCallback alarmCallback = alarmCallbackFactory.create(alarmCallbackConfiguration);
        alarmCallback.call(stream, checkResult);
    } catch (Exception e) {
        throw new InternalServerErrorException(e.getMessage(), e);
    }
    return Response.ok().build();
}
Also used : InternalServerErrorException(javax.ws.rs.InternalServerErrorException) Stream(org.graylog2.plugin.streams.Stream) EmailAlarmCallback(org.graylog2.alarmcallbacks.EmailAlarmCallback) AlarmCallback(org.graylog2.plugin.alarms.callbacks.AlarmCallback) AbstractAlertCondition(org.graylog2.alerts.AbstractAlertCondition) DummyAlertCondition(org.graylog2.alerts.types.DummyAlertCondition) TransportConfigurationException(org.graylog2.plugin.alarms.transports.TransportConfigurationException) NotFoundException(org.graylog2.database.NotFoundException) InternalServerErrorException(javax.ws.rs.InternalServerErrorException) EmailException(org.apache.commons.mail.EmailException) AlarmCallbackConfiguration(org.graylog2.alarmcallbacks.AlarmCallbackConfiguration) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST) Timed(com.codahale.metrics.annotation.Timed) ApiOperation(io.swagger.annotations.ApiOperation) ApiResponses(io.swagger.annotations.ApiResponses) NoAuditEvent(org.graylog2.audit.jersey.NoAuditEvent)

Example 8 with TransportConfigurationException

use of org.graylog2.plugin.alarms.transports.TransportConfigurationException in project graylog2-server by Graylog2.

the class EmailSender method sendEmails.

// TODO: move EmailRecipients class to events code
void sendEmails(EmailEventNotificationConfig notificationConfig, EventNotificationContext ctx, ImmutableList<MessageSummary> backlog) throws TransportConfigurationException, EmailException, ConfigurationError {
    if (!emailFactory.isEmailTransportEnabled()) {
        throw new TransportConfigurationException("Email transport is not enabled in server configuration file!");
    }
    final EmailRecipients emailRecipients = emailRecipientsFactory.create(new ArrayList<>(notificationConfig.userRecipients()), new ArrayList<>(notificationConfig.emailRecipients()));
    if (emailRecipients.isEmpty()) {
        LOG.debug("Cannot send emails: empty recipient list.");
        return;
    }
    final Set<String> recipientsSet = emailRecipients.getEmailRecipients();
    if (recipientsSet.size() == 0) {
        final Notification notification = notificationService.buildNow().addNode(nodeId.toString()).addType(Notification.Type.GENERIC).addSeverity(Notification.Severity.NORMAL).addDetail("title", "No recipients have been defined!").addDetail("description", "To fix this, go to the notification configuration and add at least one alert recipient.");
        notificationService.publishIfFirst(notification);
    }
    final Map<String, Object> model = getModel(ctx, backlog, notificationConfig.timeZone());
    for (String email : recipientsSet) {
        sendEmail(notificationConfig, email, model);
    }
}
Also used : TransportConfigurationException(org.graylog2.plugin.alarms.transports.TransportConfigurationException) EmailRecipients(org.graylog2.alerts.EmailRecipients) Notification(org.graylog2.notifications.Notification)

Aggregations

TransportConfigurationException (org.graylog2.plugin.alarms.transports.TransportConfigurationException)7 Notification (org.graylog2.notifications.Notification)4 Timed (com.codahale.metrics.annotation.Timed)2 ApiOperation (io.swagger.annotations.ApiOperation)2 ApiResponses (io.swagger.annotations.ApiResponses)2 InternalServerErrorException (javax.ws.rs.InternalServerErrorException)2 POST (javax.ws.rs.POST)2 Path (javax.ws.rs.Path)2 Email (org.apache.commons.mail.Email)2 AlarmCallbackConfiguration (org.graylog2.alarmcallbacks.AlarmCallbackConfiguration)2 AbstractAlertCondition (org.graylog2.alerts.AbstractAlertCondition)2 EmailRecipients (org.graylog2.alerts.EmailRecipients)2 DummyAlertCondition (org.graylog2.alerts.types.DummyAlertCondition)2 NoAuditEvent (org.graylog2.audit.jersey.NoAuditEvent)2 AlarmCallback (org.graylog2.plugin.alarms.callbacks.AlarmCallback)2 AlarmCallbackConfigurationException (org.graylog2.plugin.alarms.callbacks.AlarmCallbackConfigurationException)2 AlarmCallbackException (org.graylog2.plugin.alarms.callbacks.AlarmCallbackException)2 Stream (org.graylog2.plugin.streams.Stream)2 BadRequestException (javax.ws.rs.BadRequestException)1 EmailException (org.apache.commons.mail.EmailException)1