
La observabilidad es crítica para las operaciones de red para garantizar que la aplicación funcione como se esperaba e identificar cualquier problema potencial. Sin embargo, establecer la observabilidad ha sido tradicionalmente un desafío, ya que puede llevar horas construir toda la infraestructura, el código de instrumentos y permitir la observabilidad de la producción. Pero ahora hay una mejor manera de usar el soporte nativo para Django en Charmcraft y Rockcraft, ¡que puede estar incorporado y listo!
En esta publicación usaremos rockcraft y encanto E implementar Jujuy agregarle observabilidad utilizando solo unos pocos comandos. Esto muestra los beneficios clave del uso del ecosistema Juju (incluidas la mayoría de las tuberías que espera de nubes modernas como la observabilidad, las bases de datos, las admisiones, etc.) usar encantos, porque podremos establecer la observabilidad en minutos en lugar de horas. Rockcraft y Charmcraft también admiten frascos, Fastapi y van localmente, y las siguientes instrucciones también se aplican a estas instrucciones.
Hemos seguido Escriba su primer encanto de Kubernetes para aplicaciones Django Tutorial, completo Ciclo de desarrollo parte. En esta etapa, las aplicaciones de Django deben implementarse e integrarse con PostgreSQL y Nginx Ingresator Integrator y deben verse así:
$ juju status --relations
Model Controller Cloud/Region Version SLA Timestamp
django-hello-world dev-controller microk8s/localhost 3.6.3 unsupported 00:52:54+11:00
App Version Status Scale Charm Channel Rev Address Exposed Message
django-hello-world active 1 django-hello-world 1 10.152.183.175 no
nginx-ingress-integrator 24.2.0 active 1 nginx-ingress-integrator latest/stable 130 10.152.183.214 no Ingress IP(s): 127.0.0.1
postgresql-k8s 14.15 active 1 postgresql-k8s 14/stable 495 10.152.183.83 no
Unit Workload Agent Address Ports Message
django-hello-world/0* active idle 10.1.157.79
nginx-ingress-integrator/0* active idle 10.1.157.78 Ingress IP(s): 127.0.0.1
postgresql-k8s/0* active idle 10.1.157.77 Primary
Integration provider Requirer Interface Type Message
django-hello-world:secret-storage django-hello-world:secret-storage secret-storage peer
nginx-ingress-integrator:ingress django-hello-world:ingress ingress regular
nginx-ingress-integrator:nginx-peers nginx-ingress-integrator:nginx-peers nginx-instance peer
postgresql-k8s:database django-hello-world:postgresql postgresql_client regular
postgresql-k8s:database-peers postgresql-k8s:database-peers postgresql_peers peer
postgresql-k8s:restart postgresql-k8s:restart rolling_op peer
postgresql-k8s:upgrade postgresql-k8s:upgrade upgrade peer
En este punto, si envía una solicitud curl
debería volver Hello, world!
$ curl \
--resolve django-hello-world:80:127.0.0.1
Hello, world!
El siguiente paso es implementar la observabilidad e integrarla con su aplicación Django. Para hacer esto, necesitamos habilitar el equilibrador de carga en MicroK8, que es lo que Traefik requiere, que servirá como entrada a la pila de observabilidad de especificaciones:
$ IPADDR=$(ip -4 -j route get 2.2.2.2 | jq -r '.[] | .prefsrc')
$ sudo microk8s enable metallb:$IPADDR-$IPADDR
$ microk8s status --wait-ready
Ahora podemos implementar Pila de observabilidad de especificaciones Implementará Grafana, Loki, Prometheus y AlertManager, así como directorios para acceder a todos los servicios y Traefik:
$ juju deploy cos-lite --trust
$ juju integrate django-hello-world grafana
$ juju integrate django-hello-world prometheus
$ juju integrate django-hello-world loki
Acabamos de terminar muchas tareas, así que vamos a darle unos minutos para completar. Al mismo tiempo, podemos monitorear el progreso:
$ juju status --watch 2s
Una vez que todo esta aquí active
y idle
echemos un vistazo a los paneles creados. Ejecute el siguiente comando para recuperar el punto final de observabilidad:
$ juju show-unit catalogue/0 | grep url
$ juju run grafana/leader get-admin-password
Esto mostrará algunas URL junto con la contraseña administrativa predeterminada. El que nos interesa grafana
El sufijo debería verse como (Su dirección IP variará). Para acceder a la descripción general del tablero. /dashboards
Código postal, luego haga clic en General y seleccione el tablero del operador Django. Deberías ver algo como esto:
Como no hemos realizado ninguna solicitud, el tablero actualmente no informa ninguna actividad. Enviemos el siguiente comando curl varias veces para generar tráfico:
$ curl --resolve django-hello-world:80:127.0.0.1
En los próximos minutos, los datos se actualizarán y deberían verse así:

Hasta ahora, hemos implementado con éxito nuestras aplicaciones y pilas de observabilidad: ¡obtenga paneles sin tener que definirlas usted mismo! También tenemos acceso a los registros de la aplicación. Para verlos, seleccione django-hello-world
Desde el menú desplegable al lado del filtro de aplicación Juju en la parte superior de la página:

Cuando se desplaza hacia abajo, verá el registro de la aplicación:

¡Ese es un paquete! Creamos una aplicación Django y la integramos en la observabilidad. Exploramos el tablero predeterminado, dándonos una idea de cómo usar la aplicación y también accedimos al registro de la aplicación. Con varios comandos, agregamos una herramienta de observabilidad completa en nuestra aplicación Django sin tener que manejar manualmente la implementación y la configuración de cada aplicación.
Si desea obtener más información sobre cómo crear imágenes y encantos de OCI para su aplicación Django, puede seguir Escriba su primer encanto de Kubernetes para aplicaciones Django Tutoriales y aproveche el ecosistema Juju completo. Si tiene alguna pregunta o desea contactarnos, ¡no dude en contactarnos en nuestro canal de matriz de la comunidad!