el 11-25-2022 04:01 AM
Autor: @Leandro Ferreira
Traducción del portugués: Carlos Cardoza
OpenTelemetry, OTel para aquell@s más íntim@s, ha sido un tema creciente en varias industrias. Si aún no te has enterado, te recomiendo estos dos enlaces:
CISCO ha estado invirtiendo mucho en el tema y ha hecho grandes contribuciones a la comunidad. Un buen ejemplo de esto es la instrumentación NGINX que utiliza OpenTelemetry. En esta publicación, mostraré cómo integramos AppDynamics en esta conversación.
AppDynamics, para quienes aún no han tenido el gusto de conocerla, es una excelente plataforma de observabilidad donde tenemos en un mismo contexto toda la información necesaria para entender cómo tu aplicación impacta directamente en tu negocio. Observabilidad “a la vena” usando Métricas, Eventos, Logs y Trazas (M.E.L.T). La recopilación de datos se realiza a través de agentes creados por el propio AppDynamics, pero, como una buena plataforma de observabilidad, también tenemos OTel como una de las formas de ingesta de datos.
Compartir conocimientos es una forma de aprender y por eso decidí escribir este tutorial combinando temas interesantes para mí NGINX + OTEL + AppDynamics. Espero que sea interesante para ti también. Sigue el hilo...
Antes de empezar necesitarás:
Antes de comenzar con las compilaciones, comprendamos cómo funciona todo esto.
En NGINX tenemos un agente que recolectará información y la enviará a un recolector (OpenTelemetry Collector). Tanto el Agente como el Collector son desarrollados por la comunidad. Cuando el Collector recibe la información enviada por el Agente, realiza las transformaciones necesarias y la envía a AppDynamics.
Comencemos construyendo una imagen con NGINX ya instrumentado. El primer paso es clonar el repositorio.
git clone https://github.com/lof000/appd-sample-apps-otel.git
Después de clonar el repositorio, todo lo que vamos a ejecutar lo encontraremos en la carpeta nginxotel. Primero, echemos un vistazo al archivo Docker solo para entender lo que estamos haciendo.
FROM nginx:1.18
RUN apt-get update ; apt-get install unzip
#DOWNLOAD OTEL NGINX AGENT
ADD https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/download/webserver%2Fv1.0.0/opentelemetry-webserver-sdk-x64-linux.tgz.zip /opt
#INSTALL OTEL AGENT
RUN cd /opt ; unzip opentelemetry-webserver-sdk-x64-linux.tgz.zip; tar xvfz opentelemetry-webserver-sdk-x64-linux.tgz
RUN cd /opt/opentelemetry-webserver-sdk; ./install.sh
#SET ENV VARIABLE FOR OTEL AGENT LIB
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/opt/opentelemetry-webserver-sdk/sdk_lib/lib
Ahora haremos el build
docker build -t nginx_otel
Con la imagen lista, podemos configurar el funcionamiento del Agente editando el archivo opentelemetry_module.conf. En el ejemplo de git ya dejé todo listo, no es necesario editar nada. A continuación, se muestra un ejemplo para mejor comprensión.
NginxModuleEnabled ON;
NginxModuleOtelSpanExporter otlp;
NginxModuleOtelExporterEndpoint otel-collector:4317;
NginxModuleServiceName nginx_service;
NginxModuleServiceNamespace nginx_lab;
NginxModuleServiceInstanceId nginx_serviceID;
NginxModuleResolveBackends ON;
NginxModuleTraceAsError ON;
NginxModuleOtelSpanExporter: El agente NGINX envía los datos a un colector (OTEL COLLECTOR). Este campo indica qué protocolo de comunicación se está utilizando para “hablar” con el colector.
NginxModuleOtelExporterEndpoint: Aquí indicamos dónde está el colector (host y puerto). Al abrir el archivo docker-compose.yml, verá un servicio con este nombre
NginxModuleServiceNamespace: Aquí le damos el nombre del espacio de nombres
NginxModuleServiceName: Aquí le damos un nombre al servicio.
Podemos ver más detalles en la documentación.
Con NGINX instrumentado, configuraremos la comunicación entre OTel Collector y AppDynamics. No es nuestro enfoque profundizar en los detalles del colector en este momento.
Inicie sesión en el AppDynamics Controller y haga clic en la pestaña OTel
Justo debajo, haga clic en mostrar para ver su token de acceso. Copie y guarde este token porque lo usaremos pronto.
También necesitará su nombre de cuenta. Haga clic en la rueda dentada, luego en License y finalmente en la pestaña de la cuenta
Guarde este Account Name. Por último, obtengamos el OTel endpoint del AppDynamics Controller. Revisa la documentación y encuentra la URL según tu región:
Por ejemplo, si su controlador está alojado en Virginia, la URL será:
https://pdx-sls-agent-api.saas.appdynamics.com
Ahora editemos el archivo otel-collector-config.yaml e ingresemos la información que acabamos de recopilar.
processors:
resource:
attributes:
- key: appdynamics.controller.account
action: upsert
value: "<AccountName obtenido previamente>"
- key: appdynamics.controller.host
action: upsert
value: "<hostname del AppD Controllr: micontroller.saas.appdynamics.com>"
- key: appdynamics.controller.port
action: upsert
value: 443
.....
otlphttp:
endpoint: <OTEL ENDPOINT>
headers: {"x-api-key": "<access key de la pestaña OTel>"}
Con todos los archivos configurados, subamos el servicio y veamos si todo salió bien.
docker-compose up -d
Comprobando si todo está bien
docker-compose ps
docker logs nginx
docker logs otel-collector
Finalmente, enviaremos solicitudes a NGINX.
./load.sh
Vuelva a verificar los registros del OTel Collector, debería ver mensajes como este que indican que está recibiendo la información del agente y enviando AppDynamics.
Si deja que la carga se ejecute durante unos 5 minutos, verá la información en el AppDynamics Controller.
¡Listo! Empezamos a ejercitar el uso de OTel junto con AppDynamics. En el próximo tutorial mostraré un ejemplo de monitoreo de NGINX y sus backends, estén atentos.
@Carlos Cardoza ¡Gracias por la traducción!
excelente Carlos! Es muy importante que repliquemos este tipo de contenido en nuestros canales.
¡Conecte con otros expertos de Cisco y del mundo! Encuentre soluciones a sus problemas técnicos o comerciales, y aprenda compartiendo experiencias.
Queremos que su experiencia sea grata, le compartimos algunos links que le ayudarán a familiarizarse con la Comunidad de Cisco: