Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 25 additions & 6 deletions src/ServiceControl.Audit/Container-README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,40 @@ The `particular/servicecontrol-audit` image is part of the Particular Service Pl
| [`particular/servicecontrol`](https://hub.docker.com/r/particular/servicecontrol) | [Instance Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/deployment/containers) | The primary/error instance, which includes error handling and recoverability |
| [`particular/servicecontrol-audit`](https://hub.docker.com/r/particular/servicecontrol-audit) | [Instance Documentation](https://docs.particular.net/servicecontrol/audit-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/audit-instances/deployment/containers) | The audit instance, which stores audit data, and can be scaled out to multiple audit instances |
| [`particular/servicecontrol-monitoring`](https://hub.docker.com/r/particular/servicecontrol-monitoring) | [Instance Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/deployment/containers) | The monitoring instance, which tracks runtime information like throughput, queue length, and other metrics |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/ravendb/containers) | The database used by the error/audit instances |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/storage/ravendb/containers) | The database for error/audit instances using RavenDB persistence |
| [`particular/servicepulse`](https://hub.docker.com/r/particular/servicepulse) | [App Documentation](https://docs.particular.net/servicepulse/)<br/>[Container Documentation](https://docs.particular.net/servicepulse/containerization/) | The web application that provides a front end for recoverability and monitoring features |

## Usage

The following is the most basic way to create an audit container using [Docker](https://www.docker.com/), assuming a RabbitMQ message broker also hosted in a Docker container using default `guest`/`guest` credentials:
The following minimal example uses `docker run` to host an Audit instance on Azure, with [Azure Service Bus](https://docs.particular.net/servicecontrol/transports.md#azure-service-bus) as the transport, Azure SQL Database for [SQL Server storage](https://docs.particular.net/servicecontrol/storage/sqlserver/), and [Azure Blob Storage](https://docs.particular.net/servicecontrol/storage/external-body/azure-blob.md) for message bodies:

```shell
docker run -d --name audit -p 44444:44444 \
-e TRANSPORTTYPE=RabbitMQ.QuorumConventionalRouting \
-e CONNECTIONSTRING="host=rabbitmq" \
-e RAVENDB_CONNECTIONSTRING="http://audit-db:8080" \
particular/servicecontrol-audit:latest --setup-and-run
-e TRANSPORTTYPE=NetStandardAzureServiceBus \
-e CONNECTIONSTRING="Endpoint=sb://my-namespace.servicebus.windows.net/;SharedAccessKeyName=...;SharedAccessKey=..." \
-e STORAGETYPE=SQLServer \
-e DATABASE_CONNECTIONSTRING="Server=tcp:my-server.database.windows.net,1433;Database=ServiceControl.Audit;User ID=...;Password=...;Encrypt=True" \
-e MESSAGEBODY_STORAGETYPE=AzureBlob \
-e MESSAGEBODY_AZURE_CONNECTIONSTRING="DefaultEndpointsProtocol=https;AccountName=mystorageaccount;AccountKey=...;EndpointSuffix=core.windows.net" \
particular/servicecontrol-audit:latest
```

Each of these services can also use [managed identity](https://docs.particular.net/servicecontrol/transports.md#azure-service-bus-enabling-managed-identity) instead of the keys and passwords shown; see [SQL Server authentication](https://docs.particular.net/servicecontrol/storage/sqlserver/#authentication) and [Azure Blob Storage authentication](https://docs.particular.net/servicecontrol/storage/external-body/azure-blob.md#authentication).

### Storage

`STORAGETYPE` is required. Prepare the storage as the provider's guide describes before running setup.

| `STORAGETYPE` | Connection string environment variable | Configuration |
|---------------|----------------------------------------|---------------|
| `RavenDB` | `RAVENDB_CONNECTIONSTRING` | [RavenDB container setup](https://docs.particular.net/servicecontrol/storage/ravendb/containers) |
| `SQLServer` | `DATABASE_CONNECTIONSTRING` | [Configure SQL Server storage](https://docs.particular.net/servicecontrol/storage/sqlserver/) |
| `PostgreSQL` | `DATABASE_CONNECTIONSTRING` | [Configure PostgreSQL storage](https://docs.particular.net/servicecontrol/storage/postgresql/) |

With SQL Server or PostgreSQL, the database keeps only text message bodies up to `MAXBODYSIZETOSTORE` bytes. To keep larger and binary bodies, configure [external message body storage](https://docs.particular.net/servicecontrol/storage/external-body/) with `MESSAGEBODY_STORAGETYPE`. The [storage overview](https://docs.particular.net/servicecontrol/storage/#sharing-a-database) explains how Error and Audit instances can share a database.

These settings also accept the `SERVICECONTROL_AUDIT_` prefix, for example `SERVICECONTROL_AUDIT_STORAGETYPE` and `SERVICECONTROL_AUDIT_DATABASE_CONNECTIONSTRING`. Use prefixed settings when error and audit containers share environment configuration but need different persistence settings.

For all other usage information see the [official container documentation](https://docs.particular.net/servicecontrol/audit-instances/deployment/containers).

## Image tagging
Expand Down
2 changes: 1 addition & 1 deletion src/ServiceControl.Monitoring/Container-README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ The `particular/servicecontrol-monitoring` image is part of the Particular Servi
| [`particular/servicecontrol`](https://hub.docker.com/r/particular/servicecontrol) | [Instance Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/deployment/containers) | The primary/error instance, which includes error handling and recoverability |
| [`particular/servicecontrol-audit`](https://hub.docker.com/r/particular/servicecontrol-audit) | [Instance Documentation](https://docs.particular.net/servicecontrol/audit-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/audit-instances/deployment/containers) | The audit instance, which stores audit data, and can be scaled out to multiple audit instances |
| [`particular/servicecontrol-monitoring`](https://hub.docker.com/r/particular/servicecontrol-monitoring) | [Instance Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/deployment/containers) | The monitoring instance, which tracks runtime information like throughput, queue length, and other metrics |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/ravendb/containers) | The database used by the error/audit instances |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/storage/ravendb/containers) | The database for error/audit instances using RavenDB persistence |
| [`particular/servicepulse`](https://hub.docker.com/r/particular/servicepulse) | [App Documentation](https://docs.particular.net/servicepulse/)<br/>[Container Documentation](https://docs.particular.net/servicepulse/containerization/) | The web application that provides a front end for recoverability and monitoring features |

## Usage
Expand Down
6 changes: 3 additions & 3 deletions src/ServiceControl.RavenDB/Container-README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ The `particular/servicecontrol-ravendb` image is part of the Particular Service
| [`particular/servicecontrol`](https://hub.docker.com/r/particular/servicecontrol) | [Instance Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/deployment/containers) | The primary/error instance, which includes error handling and recoverability |
| [`particular/servicecontrol-audit`](https://hub.docker.com/r/particular/servicecontrol-audit) | [Instance Documentation](https://docs.particular.net/servicecontrol/audit-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/audit-instances/deployment/containers) | The audit instance, which stores audit data, and can be scaled out to multiple audit instances |
| [`particular/servicecontrol-monitoring`](https://hub.docker.com/r/particular/servicecontrol-monitoring) | [Instance Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/deployment/containers) | The monitoring instance, which tracks runtime information like throughput, queue length, and other metrics |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/ravendb/containers) | The database used by the error/audit instances |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/storage/ravendb/containers) | The database for error/audit instances using RavenDB persistence |
| [`particular/servicepulse`](https://hub.docker.com/r/particular/servicepulse) | [App Documentation](https://docs.particular.net/servicepulse/)<br/>[Container Documentation](https://docs.particular.net/servicepulse/containerization/) | The web application that provides a front end for recoverability and monitoring features |

This image is the database used by the [`particular/servicecontrol`](https://hub.docker.com/r/particular/servicecontrol) and [`particular/servicecontrol-audit`](https://hub.docker.com/r/particular/servicecontrol-audit) images, based on the official [RavenDB image](https://hub.docker.com/r/ravendb/ravendb).
This image provides the database for the [`particular/servicecontrol`](https://hub.docker.com/r/particular/servicecontrol) and [`particular/servicecontrol-audit`](https://hub.docker.com/r/particular/servicecontrol-audit) images when `STORAGETYPE=RavenDB`. It is based on the official [RavenDB image](https://hub.docker.com/r/ravendb/ravendb). Instances using [other storage providers](https://docs.particular.net/servicecontrol/storage/) do not need this image.

The purpose of this image is to provide version parity between ServiceControl and database containers. Users can be sure that a given version of the `servicecontrol` and `servicecontrol-audit` container images have been tested with and are known to work with the matching version of `servicecontrol-ravendb`.

Expand All @@ -25,7 +25,7 @@ docker run -d --name servicecontrol-db \
particular/servicecontrol-ravendb:latest
```

For all other usage information see the [official container documentation](https://docs.particular.net/servicecontrol/ravendb/containers).
For all other usage information see the [official container documentation](https://docs.particular.net/servicecontrol/storage/ravendb/containers).

_**IMPORTANT:** A single database container should not be shared between multiple ServiceControl instances in production scenarios._

Expand Down
32 changes: 26 additions & 6 deletions src/ServiceControl/Container-README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,43 @@ The `particular/servicecontrol` image is part of the Particular Service Platform
| [`particular/servicecontrol`](https://hub.docker.com/r/particular/servicecontrol) | [Instance Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/deployment/containers) | The primary/error instance, which includes error handling and recoverability |
| [`particular/servicecontrol-audit`](https://hub.docker.com/r/particular/servicecontrol-audit) | [Instance Documentation](https://docs.particular.net/servicecontrol/audit-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/audit-instances/deployment/containers) | The audit instance, which stores audit data, and can be scaled out to multiple audit instances |
| [`particular/servicecontrol-monitoring`](https://hub.docker.com/r/particular/servicecontrol-monitoring) | [Instance Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/)<br/>[Container Documentation](https://docs.particular.net/servicecontrol/monitoring-instances/deployment/containers) | The monitoring instance, which tracks runtime information like throughput, queue length, and other metrics |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/ravendb/containers) | The database used by the error/audit instances |
| [`particular/servicecontrol-ravendb`](https://hub.docker.com/r/particular/servicecontrol-ravendb) | [Container Documentation](https://docs.particular.net/servicecontrol/storage/ravendb/containers) | The database for error/audit instances using RavenDB persistence |
| [`particular/servicepulse`](https://hub.docker.com/r/particular/servicepulse) | [App Documentation](https://docs.particular.net/servicepulse/)<br/>[Container Documentation](https://docs.particular.net/servicepulse/containerization/) | The web application that provides a front end for recoverability and monitoring features |

## Usage

The following is the most basic way to create ServiceControl containers using [Docker](https://www.docker.com/), assuming a RabbitMQ message broker also hosted in a Docker container using default `guest`/`guest` credentials:
The following minimal example uses `docker run` to host an Error instance on AWS, with [Amazon SQS](https://docs.particular.net/servicecontrol/transports.md#amazon-sqs) as the transport, Amazon Aurora PostgreSQL for [PostgreSQL storage](https://docs.particular.net/servicecontrol/storage/postgresql/), and [Amazon S3](https://docs.particular.net/servicecontrol/storage/external-body/amazon-s3.md) for message bodies:

```shell
docker run -d --name servicecontrol -p 33333:33333 \
-e TRANSPORTTYPE=RabbitMQ.QuorumConventionalRouting \
-e CONNECTIONSTRING="host=rabbitmq" \
-e RAVENDB_CONNECTIONSTRING="http://servicecontrol-db:8080" \
-e AWS_REGION=us-east-1 \
-e TRANSPORTTYPE=AmazonSQS \
-e CONNECTIONSTRING="Region=us-east-1" \
-e STORAGETYPE=PostgreSQL \
-e DATABASE_CONNECTIONSTRING="Host=my-cluster.cluster-xxxxxxxxxxxx.us-east-1.rds.amazonaws.com;Database=ServiceControl;Username=servicecontrol;Token Authentication=AwsRdsIam;SSL Mode=Require" \
-e MESSAGEBODY_STORAGETYPE=S3 \
-e MESSAGEBODY_S3_BUCKETNAME=my-servicecontrol-bodies \
-e REMOTEINSTANCES='[{"api_uri":"http://audit:44444/api"}]' \
-e ENABLEINTEGRATEDSERVICEPULSE="true" \
particular/servicecontrol:latest --setup-and-run
particular/servicecontrol:latest
```

The example contains no AWS keys or database password. SQS, S3, and the [IAM database login](https://docs.particular.net/servicecontrol/storage/postgresql/#authentication-token-authentication) use the AWS SDK default credential chain, such as an IAM role attached to the host or task, and the region set in `AWS_REGION`.

### Storage

`STORAGETYPE` is required. Prepare the storage as the provider's guide describes before running setup.

| `STORAGETYPE` | Connection string environment variable | Configuration |
|---------------|----------------------------------------|---------------|
| `RavenDB` | `RAVENDB_CONNECTIONSTRING` | [RavenDB container setup](https://docs.particular.net/servicecontrol/storage/ravendb/containers) |
| `SQLServer` | `DATABASE_CONNECTIONSTRING` | [Configure SQL Server storage](https://docs.particular.net/servicecontrol/storage/sqlserver/) |
| `PostgreSQL` | `DATABASE_CONNECTIONSTRING` | [Configure PostgreSQL storage](https://docs.particular.net/servicecontrol/storage/postgresql/) |

SQL Server and PostgreSQL also require [external message body storage](https://docs.particular.net/servicecontrol/storage/external-body/), selected with `MESSAGEBODY_STORAGETYPE`. The [storage overview](https://docs.particular.net/servicecontrol/storage/#sharing-a-database) explains how Error and Audit instances can share a database.

These settings also accept the `SERVICECONTROL_` prefix, for example `SERVICECONTROL_STORAGETYPE` and `SERVICECONTROL_DATABASE_CONNECTIONSTRING`.

For all other usage information see the [official container documentation](https://docs.particular.net/servicecontrol/servicecontrol-instances/deployment/containers).

## Image tagging
Expand Down
Loading