Sentry and Zato (Raven deprecated)

Hello everyone :wave:. First timer here, thanks in advance for your help :pray:

I’m looking into using Sentry on my Zato deployment (I’m going to use the Docker Quickstart). There are 2 things I’m not quite sure about.

1. What is the recommended way to pass Sentry DSN to the container

If I’m not mistaken, it should be added to the server.conf file. The thing is, I’m creating a new Docker file that builds from zatoquickstart and copies the service, config and enmasse files. Would that work without restarting the server?

Here is roughly what I would like to use (Dockerfile):

FROM registry.gitlab.com/zatosource/docker-registry/quickstart:3.2

COPY services /opt/hot-deploy
COPY enmasse /opt/enmasse
COPY server.conf /path/to/server/conf

...

2. Is there a way to use the python-sentry package, since raven-python has been deprecated?

For now, I’m importing and initializing python-sentry on each service file, but that doesn’t feel right. I believe I’m missing relevant logging from other Zato components, such as the Scheduler and the Server (capture exceptions on the Server?)

Hello @thegrojas,

it so happens that the current Docker Quickstart image is going to be soon replaced by this one from zato-docker.

The new one is ready but it is not documented yet, which is why there has been no public announcement yet.

Under the hood, it uses an Ansible provisioner whose source code is in zato-ansible.

The Ansible provisioner - and, by extension, the new Docker image - knows how to accepts custom requirements.txt through environment variables. Once this is fully documented and made public, you will be able to make use of any additional libraries that you need, in this case, one for Sentry.

Incidentally, the same Ansible provisioner is used for Vagrant now too, the details are in zato-vagrant.

All of this is a part of a general direction towards container-oriented and cloud-native deployments although bare metal installation will always be supported too.

As to the current Docker Quickstart image, which is soon to become the old one, it will not be deleted but there will be no development related to it anymore.

If you are just starting out, I can already encourage you to use the new image - you can simply have a look at what the Ansible provisioner is doing, what environment variables it accepts and start to use the Docker image or the Vagrantfile linked to above.

The documentation will be ready within the next few weeks.

Regards.

This is great, thanks @dsuch. I will take a look at the new image, also looking forward to the updated docs on it.

Regarding Sentry… My concern was not directly focused on how to install it, but rather if there are plans to change the code that uses the currently deprecated Raven. I suppose should be changed here: https://github.com/zatosource/zato/blob/6095f456dc0cae05bcaa58404e7237d2611b9912/code/zato-server/src/zato/server/main.py#L361 .

But I’m not exactly sure what other changes need to be made so that the handler can pick up the logs of the Zato Server (and all the services running on that Server)

Hello @thegrojas,

there are currently no such plans although I recognize the need.

If you can prepare a standalone piece of code that implements the functionality that you need, I will see about getting it incorporated into the core.

Thanks.