Class ElasticsearchAuditEventHandler
java.lang.Object
org.forgerock.audit.events.handlers.AuditEventHandlerBase
org.forgerock.audit.handlers.elasticsearch.ElasticsearchAuditEventHandler
- All Implemented Interfaces:
AuditEventHandler
,BatchConsumer
AuditEventHandler
for Elasticsearch.-
Field Summary
Fields inherited from class org.forgerock.audit.events.handlers.AuditEventHandlerBase
eventTopicsMetaData
-
Constructor Summary
ConstructorsConstructorDescriptionElasticsearchAuditEventHandler
(ElasticsearchAuditEventHandlerConfiguration configuration, EventTopicsMetaData eventTopicsMetaData, org.forgerock.http.Client client) Create a newElasticsearchAuditEventHandler
instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addToBatch
(String topic, org.forgerock.json.JsonValue event, StringBuilder payload) Adds an audit event to an Elasticsearch Bulk API payload.protected String
Builds an Elasticsearch API base URI.protected String
Builds a basic authentication header-value, if username and password are provided in configuration.protected String
Builds an Elasticsearch API URI for Bulk API.protected String
buildEventUri
(String topic, String eventId) Builds an Elasticsearch API URI for operating on a single event (e.g., index, get, etc.).protected String
buildSearchUri
(String topic, int pageSize, int offset) Builds an Elasticsearch API URI for Search API.org.forgerock.util.promise.Promise<Void,
BatchException> publishBatch
(String payload) Publishes a Bulk API payload to Elasticsearch.org.forgerock.util.promise.Promise<ResourceResponse,
ResourceException> publishEvent
(org.forgerock.services.context.Context context, String topic, org.forgerock.json.JsonValue event) protected org.forgerock.util.promise.Promise<ResourceResponse,
ResourceException> publishSingleEvent
(String topic, org.forgerock.json.JsonValue event) Publishes a single event to the provided topic.org.forgerock.util.promise.Promise<QueryResponse,
ResourceException> queryEvents
(org.forgerock.services.context.Context context, String topic, QueryRequest query, QueryResourceHandler handler) Queries the Elasticsearch Search API for audit events.org.forgerock.util.promise.Promise<ResourceResponse,
ResourceException> protected static ResourceException
resourceException
(String indexName, String topic, String resourceId, org.forgerock.http.protocol.Response response) Gets anException
Promise
containing an Elasticsearch HTTP response status and payload.void
shutdown()
void
startup()
Methods inherited from class org.forgerock.audit.events.handlers.AuditEventHandlerBase
getHandledTopics, getName, handleAction, isEnabled
-
Constructor Details
-
ElasticsearchAuditEventHandler
public ElasticsearchAuditEventHandler(ElasticsearchAuditEventHandlerConfiguration configuration, EventTopicsMetaData eventTopicsMetaData, org.forgerock.http.Client client) Create a newElasticsearchAuditEventHandler
instance.- Parameters:
configuration
- Configuration parameters that can be adjusted by system administrators.eventTopicsMetaData
- Meta-data for all audit event topics.client
- HTTP client ornull
to use default client.
-
-
Method Details
-
startup
- Specified by:
startup
in interfaceAuditEventHandler
- Throws:
ResourceException
-
shutdown
- Specified by:
shutdown
in interfaceAuditEventHandler
- Throws:
ResourceException
-
queryEvents
public org.forgerock.util.promise.Promise<QueryResponse,ResourceException> queryEvents(org.forgerock.services.context.Context context, String topic, QueryRequest query, QueryResourceHandler handler) Queries the Elasticsearch Search API for audit events.- Specified by:
queryEvents
in interfaceAuditEventHandler
-
readEvent
public org.forgerock.util.promise.Promise<ResourceResponse,ResourceException> readEvent(org.forgerock.services.context.Context context, String topic, String resourceId) - Specified by:
readEvent
in interfaceAuditEventHandler
-
publishEvent
public org.forgerock.util.promise.Promise<ResourceResponse,ResourceException> publishEvent(org.forgerock.services.context.Context context, String topic, org.forgerock.json.JsonValue event) - Specified by:
publishEvent
in interfaceAuditEventHandler
-
publishSingleEvent
protected org.forgerock.util.promise.Promise<ResourceResponse,ResourceException> publishSingleEvent(String topic, org.forgerock.json.JsonValue event) Publishes a single event to the provided topic.- Parameters:
topic
- The topic where to publish the event.event
- The event to publish.- Returns:
- a promise with either a response or an exception
-
addToBatch
public void addToBatch(String topic, org.forgerock.json.JsonValue event, StringBuilder payload) throws BatchException Adds an audit event to an Elasticsearch Bulk API payload.- Specified by:
addToBatch
in interfaceBatchConsumer
- Parameters:
topic
- Event topicevent
- Event JSON payloadpayload
- Elasticsearch Bulk API payload- Throws:
BatchException
- indicates failure to add-to-batch
-
publishBatch
Publishes a Bulk API payload to Elasticsearch.- Specified by:
publishBatch
in interfaceBatchConsumer
- Parameters:
payload
- Elasticsearch Bulk API payload
-
buildBasicAuthHeaderValue
Builds a basic authentication header-value, if username and password are provided in configuration.- Returns:
- Basic authentication header-value or
null
if not configured
-
buildEventUri
Builds an Elasticsearch API URI for operating on a single event (e.g., index, get, etc.).- Parameters:
topic
- Audit topiceventId
- Event ID- Returns:
- URI
-
buildBulkUri
Builds an Elasticsearch API URI for Bulk API.- Returns:
- URI
-
buildSearchUri
Builds an Elasticsearch API URI for Search API.- Parameters:
topic
- The audit topic to search.pageSize
- The number of results to return.offset
- The number of results to skip.- Returns:
- The search uri.
-
buildBaseUri
Builds an Elasticsearch API base URI. The format is,http[s]://host:port/indexName
- Returns:
- Base URI
-
resourceException
protected static ResourceException resourceException(String indexName, String topic, String resourceId, org.forgerock.http.protocol.Response response) Gets anException
Promise
containing an Elasticsearch HTTP response status and payload.- Parameters:
indexName
- Index nametopic
- Event topicresourceId
- Event IDresponse
- HTTP response- Returns:
Exception
Promise
-