Cómo instalar Sentry con Docker en Ubuntu 22.04
Sentry es una plataforma de seguimiento de errores gratuita y de código abierto que supervisa y soluciona los fallos en tiempo real. Permite a los desarrolladores de software ver lo que importa, resolver más rápidamente y aprender continuamente sobre sus aplicaciones. Esta plataforma proporciona una visión en tiempo real de los despliegues de producción, con información para reproducir y solucionar los fallos. Sentry es compatible con los principales lenguajes y marcos de trabajo, y se integra con tus aplicaciones y servicios favoritos.
Este tutorial te mostrará cómo instalar el Sistema de Seguimiento de Errores Sentry con Docker en Ubuntu 22.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 22.04.
- Un nombre de dominio válido apuntando a la IP de tu servidor.
- Una contraseña de root está configurada en tu servidor.
Instala las dependencias necesarias
Antes de empezar, se recomienda actualizar los paquetes a la última versión. Puedes actualizarlos con el siguiente comando:
apt update -y apt upgrade -y
Una vez actualizado tu sistema, instala todos los paquetes necesarios con el siguiente comando:
apt-get install curl git build-essential apt-transport-https ca-certificates software-properties-common -y
Tras instalar todas las dependencias, puedes pasar al siguiente paso.
Instalar Docker y Docker Compose
Por defecto, la última versión del paquete Docker y Docker Compose no está disponible en el repositorio por defecto de Ubuntu 22.04. Así que tendrás que añadir el repositorio oficial de Docker a APT.
Primero, descarga y añade la clave GPG de Docker con el siguiente comando.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
A continuación, añade el repositorio Docker con el siguiente comando.
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
Una vez añadido el repositorio, actualiza la caché del repositorio con el siguiente comando.
apt update -y
A continuación, instala Docker y Docker Compose con el siguiente comando.
apt install docker docker-compose -y
Una vez instalados ambos paquetes, inicia el servicio Docker y habilítalo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start docker systemctl enable docker
Ahora puedes verificar el estado de Docker con el siguiente comando:
systemctl status docker
Deberías obtener la siguiente salida:
? docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-01-10 04:37:27 UTC; 5s ago TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 45847 (dockerd) Tasks: 8 Memory: 29.1M CPU: 220ms CGroup: /system.slice/docker.service ??45847 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Jan 10 04:37:26 vultr dockerd[45847]: time="2023-01-10T04:37:26.903435377Z" level=info msg="scheme \"unix\" not registered, fallback to defau> Jan 10 04:37:26 vultr dockerd[45847]: time="2023-01-10T04:37:26.903453803Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:> Jan 10 04:37:26 vultr dockerd[45847]: time="2023-01-10T04:37:26.903464761Z" level=info msg="ClientConn switching balancer to \"pick_first\"" > Jan 10 04:37:26 vultr dockerd[45847]: time="2023-01-10T04:37:26.916581613Z" level=info msg="Loading containers: start." Jan 10 04:37:26 vultr dockerd[45847]: time="2023-01-10T04:37:26.997807510Z" level=info msg="Default bridge (docker0) is assigned with an IP a> Jan 10 04:37:27 vultr dockerd[45847]: time="2023-01-10T04:37:27.060381720Z" level=info msg="Loading containers: done." Jan 10 04:37:27 vultr dockerd[45847]: time="2023-01-10T04:37:27.074467014Z" level=info msg="Docker daemon" commit=20.10.12-0ubuntu4 graphdriv> Jan 10 04:37:27 vultr dockerd[45847]: time="2023-01-10T04:37:27.074649813Z" level=info msg="Daemon has completed initialization" Jan 10 04:37:27 vultr systemd[1]: Started Docker Application Container Engine. Jan 10 04:37:27 vultr dockerd[45847]: time="2023-01-10T04:37:27.092699576Z" level=info msg="API listen on /run/docker.sock"
Para comprobar la versión de Docker, ejecuta el siguiente comando:
docker --version
Deberías ver la siguiente salida:
Docker version 20.10.12, build 20.10.12-0ubuntu4
También puedes comprobar la versión de Docker compose con el siguiente comando:
docker-compose --version
Deberías ver la siguiente salida:
docker-compose version 1.29.2, build unknown
Instalar Sentry
En primer lugar, descarga la última versión de Sentry desde el repositorio Git utilizando el siguiente comando:
git clone https://github.com/getsentry/onpremise
Una vez finalizada la descarga, cambia el directorio al descargado y ejecuta el script de instalación de Sentry para iniciar la instalación.
cd onpremise bash install.sh
Durante la instalación, se te pedirá que crees una cuenta de administrador como se muestra a continuación:
Here's the info we may collect: - OS username - IP address - install log - runtime errors - performance data Thirty (30) day retention. No marketing. Privacy policy at sentry.io/privacy. Would you like to create a user account now? [Y/n]: y Email: Email: [email protected] Password: Repeat for confirmation: Added to organization: sentry User created: [email protected] Creating missing DSNs Correcting Group.num_comments counter ----------------------------------------------------------------- You're all done! Run the following command to get Sentry running: docker-compose up -d -----------------------------------------------------------------
A continuación, verifica todas las imágenes descargadas utilizando el siguiente comando.
docker images
Deberías ver el siguiente resultado.
REPOSITORY TAG IMAGE ID CREATED SIZE sentry-cleanup-self-hosted-local latest 04fa0fce18f0 4 minutes ago 908MB symbolicator-cleanup-self-hosted-local latest 6837f5f48e6c 5 minutes ago 180MB snuba-cleanup-self-hosted-local latest 242b7b248e1c 5 minutes ago 486MB sentry-self-hosted-local latest 101b00356aa6 5 minutes ago 907MB sentry-self-hosted-jq-local latest 83c66fd3f78f 6 minutes ago 82.5MB getsentry/sentry nightly cf0f404d102e About an hour ago 907MB getsentry/snuba nightly fc6c2d286bf8 8 hours ago 484MB getsentry/relay nightly 43cd2ba5497c 5 days ago 242MB busybox latest 66ba00ad3de8 6 days ago 4.87MB tianon/exim4 latest 12842ac621c1 2 weeks ago 158MB debian bullseye-slim dd94cb611937 2 weeks ago 80.5MB getsentry/sentry-cli latest a585383ff864 2 weeks ago 26.3MB getsentry/symbolicator nightly 80d9b41cd195 3 weeks ago 178MB nginx 1.22.0-alpine 5685937b6bc1 3 months ago 23.5MB postgres 9.6 027ccf656dc1 11 months ago 200MB confluentinc/cp-kafka 5.5.0 efc480c1c89c 15 months ago 598MB confluentinc/cp-zookeeper 5.5.0 ddeb961d8e80 15 months ago 598MB redis 6.2.4-alpine 500703a12fa4 18 months ago 32.3MB memcached 1.6.9-alpine a0132b3398e4 18 months ago 8.09MB curlimages/curl 7.77.0 e062233fb4a9 19 months ago 8.26MB maxmindinc/geoipupdate v4.7.1 8ec32cc727c7 21 months ago 10.6MB clickhouse-self-hosted-local latest abe55fc6544d 2 years ago 497MB yandex/clickhouse-server 20.3.9.70 abe55fc6544d 2 years ago 497MB
Iniciar el Contenedor Sentry
En este punto, Sentry está instalado. Ahora puedes iniciar el contenedor Sentry utilizando el siguiente comando:
docker-compose up -d
Esto iniciará todos los contenedores para Sentry como se muestra a continuación:
Starting sentry_onpremise_memcached_1 ... done Starting sentry_onpremise_redis_1 ... done Starting sentry_onpremise_symbolicator_1 ... done Creating sentry_onpremise_symbolicator-cleanup_1 ... done Starting sentry_onpremise_zookeeper_1 ... done Starting sentry_onpremise_clickhouse_1 ... done Starting sentry_onpremise_smtp_1 ... done Starting sentry_onpremise_postgres_1 ... done Starting sentry_onpremise_kafka_1 ... done Starting sentry_onpremise_snuba-consumer_1 ... done Starting sentry_onpremise_snuba-outcomes-consumer_1 ... done Starting sentry_onpremise_snuba-api_1 ... done Starting sentry_onpremise_snuba-sessions-consumer_1 ... done Starting sentry_onpremise_snuba-replacer_1 ... done Creating sentry_onpremise_snuba-cleanup_1 ... done Creating sentry_onpremise_relay_1 ... done Creating sentry_onpremise_web_1 ... done Creating sentry_onpremise_post-process-forwarder_1 ... done Creating sentry_onpremise_cron_1 ... done Creating sentry_onpremise_sentry-cleanup_1 ... done Creating sentry_onpremise_worker_1 ... done Creating sentry_onpremise_ingest-consumer_1 ... done Creating sentry_onpremise_nginx_1 ... done
Puedes verificar el estado de todos los contenedores utilizando el siguiente comando.
docker-compose ps
Deberías ver la siguiente salida.
Name Command State Ports ---------------------------------------------------------------------------------------------------------------------------------------------- sentry-self-hosted_clickhouse_1 /entrypoint.sh Up (healthy) 8123/tcp, 9000/tcp, 9009/tcp sentry-self-hosted_cron_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp sentry-self-hosted_geoipupdate_1 /usr/bin/geoipupdate -d /s ... Exit 1 sentry-self-hosted_ingest-consumer_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp sentry-self-hosted_kafka_1 /etc/confluent/docker/run Up (healthy) 9092/tcp sentry-self-hosted_memcached_1 docker-entrypoint.sh memcached Up (healthy) 11211/tcp sentry-self-hosted_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:9000->80/tcp,:::9000->80/tcp sentry-self-hosted_post-process-forwarder-errors_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp sentry-self-hosted_post-process-forwarder- /etc/sentry/entrypoint.sh ... Up 9000/tcp transactions_1 sentry-self-hosted_postgres_1 /opt/sentry/postgres-entry ... Up (healthy) 5432/tcp sentry-self-hosted_redis_1 docker-entrypoint.sh redis ... Up (healthy) 6379/tcp sentry-self-hosted_relay_1 /bin/bash /docker-entrypoi ... Up 3000/tcp sentry-self-hosted_sentry-cleanup_1 /entrypoint.sh 0 0 * * * g ... Up 9000/tcp sentry-self-hosted_smtp_1 docker-entrypoint.sh exim ... Up 25/tcp sentry-self-hosted_snuba-api_1 ./docker_entrypoint.sh api Up 1218/tcp sentry-self-hosted_snuba-cleanup_1 /entrypoint.sh */5 * * * * ... Up 1218/tcp sentry-self-hosted_snuba-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp sentry-self-hosted_snuba-outcomes-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp sentry-self-hosted_snuba-replacer_1 ./docker_entrypoint.sh rep ... Up 1218/tcp sentry-self-hosted_snuba-sessions-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp sentry-self-hosted_snuba-subscription-consumer-events_1 ./docker_entrypoint.sh sub ... Up 1218/tcp sentry-self-hosted_snuba-subscription-consumer- ./docker_entrypoint.sh sub ... Up 1218/tcp transactions_1 sentry-self-hosted_snuba-transactions-cleanup_1 /entrypoint.sh */5 * * * * ... Up 1218/tcp sentry-self-hosted_snuba-transactions-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp sentry-self-hosted_subscription-consumer-events_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp sentry-self-hosted_subscription-consumer-transactions_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp sentry-self-hosted_symbolicator-cleanup_1 /entrypoint.sh 55 23 * * * ... Up 3021/tcp sentry-self-hosted_symbolicator_1 /bin/bash /docker-entrypoi ... Up 3021/tcp sentry-self-hosted_web_1 /etc/sentry/entrypoint.sh ... Up (healthy) 9000/tcp sentry-self-hosted_worker_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp sentry-self-hosted_zookeeper_1 /etc/confluent/docker/run Up (healthy) 2181/tcp, 2888/tcp, 3888/tcp
Cuando hayas terminado, puedes pasar al siguiente paso.
Acceder a la interfaz web de Sentry
En este punto, Sentry está iniciado y escuchando en el puerto 9000. Ahora, abre tu navegador web y escribe la URL http://your-server-ip:9000 para acceder al panel de control de Sentry. Se te redirigirá a la página de inicio de sesión de Sentry, como se muestra a continuación:
Introduce tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver la siguiente página:
Proporciona tu URL de Sentry, dirección de correo electrónico y detalles SMTP, y haz clic en el botón Continuar. Deberías ver el panel de control predeterminado de Sentry en la página siguiente:
Conclusión
En esta guía hemos explicado cómo instalar Sentry en Ubuntu 22.04. Ahora, puedes implementar Sentry en tu organización para hacer un seguimiento de tu aplicación en toda la pila en tiempo real. No dudes en preguntarme si tienes alguna duda.