> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getlimina.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Logstash & Dashboards

> How to integration Limina with elastic search for monitoring.

## Reporting Integration

The Limina container can be configured to send reporting metrics to a logstash server. To enable this feature, the following environment variables can be added to the docker run command:

<div className="table-nowrap-code">
  | Variable Name              | Description                                                                                                                                                   |
  | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `PAI_ENABLE_REPORTING`     | Enables Reporting to a Logstash Server                                                                                                                        |
  | `LOGSTASH_HOST`            | The Logstash server's host info                                                                                                                               |
  | `LOGSTASH_PORT`            | The port of the Logstash server                                                                                                                               |
  | `LOGSTASH_MONITORING_PORT` | The monitoring API port of the Logstash server.                                                                                                               |
  | `LOGSTASH_TTL`             | Sets the time to live value (in seconds) of the data queued for logstash. Data will be lost if the queued data is not sent successfully before the ttl value. |
  | `PAI_REPORT_ENTITY_COUNT`  | Enables entity counts (per piece of text deidentified) to be added to reporting                                                                               |
</div>

To run a container with these settings, the following command can be used:

```shell Docker Command wrap theme={"theme":"poimandres"}
docker run --rm -p 8080:8080 --mount type=bind,src=$PWD/tests/fixtures/licenses/license.json,dst=/app/license/license.json -e PAI_ENABLE_REPORTING=true -e LOGSTASH_HOST=http://hostname.org -e LOGSTASH_PORT=50000 -e PAI_REPORT_ENTITY_COUNTS=true -it deid:image-name
```

The Logstash pipeline that the data is being sent to must be configured to able to accept JSON objects. A sample pipeline configuration that allows this would be:

```ruby Pipline Config theme={"theme":"poimandres"}
input {
	tcp {
		port => 50000
		codec => json_lines {}
	}
}
output {
	elasticsearch {
		hosts => "elasticsearch:9200"
		user => "${LOGSTASH_USER}"
		password => "${LOGSTASH_PASSWORD}"
	}
}
```

### What is Being Sent?

When `PAI_ENABLE_REPORTING` is enabled in the container metering records will be sent to Logstash in batches, at 5 minute intervals. All records include the following fields:

<div className="table-nowrap-code">
  | Field Name            | Description                                                            |
  | --------------------- | ---------------------------------------------------------------------- |
  | `privateai.SessionId` | A unique id that relates all metering information sent in the interval |
  | `privateai.Accuracy`  | The accuracy used in the requests                                      |
  | `privateai.ProjectId` | The project id of the request (the default value is main)              |
  | `privateai.Synthetic` | Boolean value indicating if synthetic data was used                    |
</div>

The following meters are currently being used (one record per meter, per project ID):

<div className="table-nowrap-code">
  | Field Name            | Description                                        |
  | --------------------- | -------------------------------------------------- |
  | `privateai.api_calls` | The amount of api calls sent in the interval       |
  | `privateai.api_chars` | The amount of characters processed in the interval |
  | `privateai.api_words` | The amount of words processed in the interval      |
</div>

If `PAI_ENABLE_PII_COUNT_METERING` is enabled in the container, meters for each entity found will also be sent. These meters contain the following fields:

<div className="table-nowrap-code">
  | Field Name            | Description                                                                   |
  | --------------------- | ----------------------------------------------------------------------------- |
  | `privateai.pii-count` | The amount of times the entity was found to be the best label in the interval |
</div>

If `PAI_REPORT_ENTITY_COUNTS` is enabled in the container, a record of the entities found and their counts for each unit of text processed will be sent. e.g.

```text Metering Records theme={"theme":"poimandres"}
privateai.NAME: 2
privateai.OCCUPATION: 1
```

would indicate that in a unit of text processed, the entity NAME was the best label two times, and OCCUPATION was the best label once.

<Frame caption="Example dashboard">
  <img src="https://mintcdn.com/privateai/Ri8qAfzxs-7j9qEv/images/container-management/elastic_sample.png?fit=max&auto=format&n=Ri8qAfzxs-7j9qEv&q=85&s=ace05e6b4591f939655a7da67e01f367" alt="Example dashboard" width="682" height="838" data-path="images/container-management/elastic_sample.png" />
</Frame>
