Búsqueda de sitios web

Cómo instalar TIG Stack (Telegraf, InfluxDB y Grafana) en Ubuntu 22.04


Este tutorial existe para estas versiones del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 18.04 (Castor biónico)

En esta página

  1. Requisitos previos
  2. Paso 1: configurar el cortafuegos
  3. Paso 2: instalar InfluxDB
  4. Paso 3: crear la base de datos InfluxDB y las credenciales de usuario
  5. Paso 4: instalar Telegraf
  6. Paso 5: verificar si las estadísticas de Telegraf se almacenan en InfluxDB
  7. Paso 6: instalar Grafana
  8. Paso 7: configurar la fuente de datos de Grafana
  9. Paso 8: configurar los paneles de Grafana
  10. Paso 9: configurar alertas y notificaciones
    1. Condiciones
    2. Regla
    3. Sin datos y manejo de errores

    La pila TIG (Telegraf, InfluxDB y Grafana) es un acrónimo de una plataforma de herramientas de código abierto para facilitar la recopilación, el almacenamiento, la representación gráfica y las alertas de las métricas del sistema. Puede monitorear y visualizar métricas como memoria, espacio en disco, usuarios registrados, carga del sistema, uso de intercambio, tiempo de actividad, procesos en ejecución, etc. desde un solo lugar. Las herramientas utilizadas en la pila son las siguientes:

    • Telegraf: es un agente de recopilación de métricas de código abierto para recopilar y enviar datos y eventos desde bases de datos, sistemas y sensores de IoT. Admite varios complementos de salida, como InfluxDB, Graphite, Kafka, etc., a los que puede enviar los datos recopilados.
    • InfluxDB: es una base de datos de series temporales de código abierto escrita en el lenguaje Go. Está optimizado para un almacenamiento rápido y de alta disponibilidad y es adecuado para cualquier cosa que involucre grandes cantidades de datos con marca de tiempo, incluidas métricas, eventos y análisis en tiempo real.
    • Grafana: es una suite de supervisión y visualización de datos de código abierto. Es compatible con varios complementos de entrada, como Graphite, ElasticSearch, InfluxDB, etc. Proporciona un hermoso tablero y análisis de métricas que le permiten visualizar y monitorear cualquier tipo de métrica y datos de rendimiento del sistema.

    En este tutorial, aprenderá cómo instalar y configurar TIG Stack en un solo servidor Ubuntu 22.04.

    requisitos previos

    1. A server running Ubuntu 22.04.

    2. A non-sudo user with root privileges.

    3. The uncomplicated Firewall(UFW) is enabled and running.

    4. Ensure that everything is updated.

      $ sudo apt update && sudo apt upgrade
      

    Paso 1: configurar el cortafuegos

    Antes de instalar cualquier paquete, el primer paso es configurar el firewall para abrir puertos para InfluxDB y Grafana.

    Compruebe el estado del cortafuegos.

    $ sudo ufw status
    

    Deberías ver algo como lo siguiente.

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    

    Abra el puerto 8086 para InfluxDB y 3000 para el servidor Grafana.

    $ sudo ufw allow 8086
    $ sudo ufw allow 3000
    

    Vuelva a comprobar el estado para confirmar.

    $ sudo ufw status
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    8086                       ALLOW       Anywhere
    3000                       ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    8086 (v6)                  ALLOW       Anywhere (v6)
    3000 (v6)                  ALLOW       Anywhere (v6)
    

    Paso 2 - Instalar InfluxDB

    Usaremos el repositorio oficial de InfluxDBs para instalarlo.

    Descargue la clave GPG de InfluxDB.

    $ wget -q https://repos.influxdata.com/influxdb.key
    

    Importa la clave GPG al servidor.

    $ echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | sha256sum -c && cat influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
    

    Importe el repositorio de InfluxDB.

    $ echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
    

    Actualice la lista de repositorios de sistemas.

    $ sudo apt update
    

    Tiene la opción de instalar InfluxDB 1.8.xo 2.0.x. Sin embargo, es mejor usar la última versión. Instale InfluxDB.

    $ sudo apt install influxdb2
    

    Inicie el servicio InfluxDB.

    $ sudo systemctl start influxdb
    

    Consultar el estado del servicio.

    $ sudo systemctl status influxdb
    ? influxdb.service - InfluxDB is an open-source, distributed, time series database
         Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
         Active: active (running) since Tue 2022-09-13 00:00:27 UTC; 42s ago
           Docs: https://docs.influxdata.com/influxdb/
        Process: 12514 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh (code=exited, status=0/SUCCESS)
       Main PID: 12515 (influxd)
          Tasks: 7 (limit: 1030)
         Memory: 48.5M
            CPU: 547ms
         CGroup: /system.slice/influxdb.service
                 ??12515 /usr/bin/influxd
    ........
    

    Paso 3: cree la base de datos InfluxDB y las credenciales de usuario

    Para almacenar los datos de Telegraf, debe configurar la base de datos y el usuario de Influx.

    InfluxDB viene con una herramienta de línea de comandos llamada influx para interactuar con el servidor InfluxDB. Piense en influx como la herramienta de línea de comandos mysql.

    Ejecute el siguiente comando para realizar la configuración inicial de Influx.

    $ influx setup
    > Welcome to InfluxDB 2.0!
    ? Please type your primary username navjot
    ? Please type your password ***************
    ? Please type your password again ***************
    ? Please type your primary organization name howtoforge
    ? Please type your primary bucket name tigstack
    ? Please type your retention period in hours, or 0 for infinite 360
    ? Setup with these parameters?
      Username:          navjot
      Organization:      howtoforge
      Bucket:            tigstack
      Retention Period:  360h0m0s
     Yes
    User    Organization    Bucket
    navjot  howtoforge      tigstack
    

    Debe configurar su nombre de usuario inicial, contraseña, nombre de la organización, el nombre del depósito principal para almacenar datos y el período de retención en horas para esos datos. Sus datos se almacenan en el archivo /home/username/.influxdbv2/configs.

    También puede realizar esta configuración iniciando la URL http://:8086/ en su navegador. Una vez que haya realizado la configuración inicial, puede iniciar sesión en la URL con las credenciales creadas anteriormente.

    Debería ser recibido con el siguiente tablero.

    El proceso de configuración inicial crea un token predeterminado que tiene acceso completo de lectura y escritura a todas las organizaciones en la base de datos. Necesita un nuevo token por motivos de seguridad que solo se conectará a la organización y al grupo al que queremos conectarnos.

    Para crear un nuevo token, haga clic en el siguiente ícono de la barra lateral izquierda y haga clic en el enlace API Tokens para continuar.

    Accederá a la página de tokens API. Aquí verá el token predeterminado que creamos en el momento de la configuración inicial.

    Haga clic en el botón Generar token y seleccione la opción Leer/escribir token para iniciar una nueva ventana emergente superpuesta. Asigne un nombre al token (telegraf) y seleccione el depósito predeterminado que creamos en las secciones de lectura y escritura.

    Haga clic en Guardar para terminar de crear el token. Haga clic en el nombre del token recién creado para revelar una ventana emergente con el valor del token.

    Guárdelo por ahora ya que lo necesitaremos más adelante.

    Esto completa la instalación y configuración de InfluxDB. A continuación, necesitamos instalar Telegraf.

    Paso 4 - Instalar Telegraf

    Telegraf e InfluxDB comparten el mismo repositorio. Significa que puede instalar Telegraf directamente.

    $ sudo apt install telegraf
    

    El servicio Telegrafs se activa y se inicia automáticamente durante la instalación.

    Telegraf es un agente basado en complementos y tiene 4 tipos de complementos:

    1. Los complementos de entrada recopilan métricas.
    2. Los complementos del procesador transforman, decoran y filtran las métricas.
    3. Los complementos de agregador crean y agregan métricas.
    4. Los complementos de salida definen los destinos donde se envían las métricas, incluido InfluxDB.

    Telegraf almacena su configuración para todos estos complementos en el archivo /etc/telegraf/telegraf.conf. El primer paso es conectar Telegraf a InfluxDB habilitando el complemento de salida influxdb_v2. Abra el archivo /etc/telegraf/telegraf.conf para editarlo.

    $ sudo nano /etc/telegraf/telegraf.conf
    

    Busque la línea [[outputs.influxdb_v2]] y elimine el comentario quitando el # delante de ella. Edite el código debajo de él de la siguiente manera.

    # # Configuration for sending metrics to InfluxDB 2.0
     [[outputs.influxdb_v2]]
    #   ## The URLs of the InfluxDB cluster nodes.
    #   ##
    #   ## Multiple URLs can be specified for a single cluster, only ONE of the
    #   ## urls will be written to each interval.
    #   ##   ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
       urls = ["http://127.0.0.1:8086"]
    #
    #   ## Token for authentication.
       token = "$INFLUX_TOKEN"
    #
    #   ## Organization is the name of the organization you wish to write to.
       organization = "howtoforge"
    #
    #   ## Destination bucket to write into.
       bucket = "tigstack"
    

    Pegue el valor del token InfluxDB guardado anteriormente en lugar de la variable $INFLUX_TOKEN en el código anterior.

    Busque la línea INPUT PLUGINS y verá los siguientes complementos de entrada habilitados de forma predeterminada.

    # Read metrics about cpu usage
    [[inputs.cpu]]
      ## Whether to report per-cpu stats or not
      percpu = true
      ## Whether to report total system cpu stats or not
      totalcpu = true
      ## If true, collect raw CPU time metrics
      collect_cpu_time = false
      ## If true, compute and report the sum of all non-idle CPU states
      report_active = false
      ## If true and the info is available then add core_id and physical_id tags
      core_tags = false
    
    
    # Read metrics about disk usage by mount point
    [[inputs.disk]]
      ## By default stats will be gathered for all mount points.
      ## Set mount_points will restrict the stats to only the specified mount points.
      # mount_points = ["/"]
    
      ## Ignore mount points by filesystem type.
      ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
    
      ## Ignore mount points by mount options.
      ## The 'mount' command reports options of all mounts in parathesis.
      ## Bind mounts can be ignored with the special 'bind' option.
      # ignore_mount_opts = []
    
    
    # Read metrics about disk IO by device
    [[inputs.diskio]]
    ....
    ....
    
    # Get kernel statistics from /proc/stat
    [[inputs.kernel]]
      # no configuration
    
    
    # Read metrics about memory usage
    [[inputs.mem]]
      # no configuration
      
    # Get the number of processes and group them by status
    [[inputs.processes]]
      # no configuration
    
    
    # Read metrics about swap memory usage
    [[inputs.swap]]
      # no configuration
    
    
    # Read metrics about system load & uptime
    [[inputs.system]]
      # no configuration
    

    Puede configurar complementos de entrada adicionales según sus requisitos, incluidos Apache Server, contenedores Docker, Elasticsearch, iptables firewall, Kubernetes, Memcached, MongoDB, MySQL, Nginx, PHP-fpm, Postfix, RabbitMQ, Redis, Varnish, Wireguard, PostgreSQL, etc.

    Una vez que haya terminado, guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

    Reinicie el servicio de Telegraf una vez que haya terminado de aplicar los cambios.

    $ sudo systemctl restart telegraf
    

    Paso 5: Verifique si las estadísticas de Telegraf se almacenan en InfluxDB

    Antes de continuar, debe verificar si las estadísticas de Telegraf se recopilan correctamente y se introducen en InfluxDB. Abra la interfaz de usuario de InfluxDB en su navegador y haga clic en el tercer icono de la barra lateral izquierda y seleccione el menú Cubos.

    Haga clic en tigstack y debería recibir la siguiente página.

    Haga clic en el nombre del depósito y luego haga clic en uno de los valores en el filtro _measurement, y siga haciendo clic en otros valores a medida que aparecen. Una vez que haya terminado, haga clic en el botón Enviar. Debería ver un gráfico en la parte superior. Es posible que deba esperar un tiempo para que aparezcan los datos.

    Esto debería confirmar que los datos se transmiten correctamente.

    Paso 6 - Instalar Grafana

    Usaremos el repositorio oficial de Grafana para instalarlo. Importa la clave Grafana GPG.

    $ sudo wget -q -O /usr/share/keyrings/grafana.key https://packages.grafana.com/gpg.key
    

    Agregue el repositorio a su sistema.

    $ echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
    

    Actualice la lista de repositorios del sistema.

    $ sudo apt update
    

    Instalar Grafana.

    $ sudo apt install grafana
    

    Inicie y habilite el servicio de Grafana.

    $ sudo systemctl enable grafana-server --now
    

    Verifique el estado del servicio.

    $ sudo systemctl status grafana-server
    ? grafana-server.service - Grafana instance
         Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)
         Active: active (running) since Tue 2022-09-13 01:04:47 UTC; 2s ago
           Docs: http://docs.grafana.org
       Main PID: 13674 (grafana-server)
          Tasks: 7 (limit: 1030)
         Memory: 104.6M
            CPU: 1.050s
         CGroup: /system.slice/grafana-server.service
                 ??13674 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana 
    .......
    

    Paso 7: configurar la fuente de datos de Grafana

    Inicie la URL http://:3000 en su navegador y siga la página de inicio de sesión de Grafana.

    Inicie sesión con el nombre de usuario predeterminado admin y la contraseña admin. A continuación, debe configurar una nueva contraseña predeterminada.

    Será recibido con la siguiente página de inicio de Grafana. Haga clic en el botón Agregar su primera fuente de datos.

    Haga clic en el botón InfluxDB.

    En la página siguiente, seleccione Flux en el menú desplegable como idioma de consulta. Puede usar InfluxQL como lenguaje de consulta, pero es más complicado de configurar ya que solo admite InfluxDB v1.x de manera predeterminada. Flux es compatible con InfluxDB v2.x y es más fácil de instalar y configurar.

    Introduzca los siguientes valores.

    URL: http://localhost:8086

    Acceso: Servidor

    Detalles básicos de autenticación

    Usuario: navjot

    Contraseña:

    Detalles de InfluxDB

    Organización: howtoforge

    Token:

    Depósito predeterminado: tigstack

    Haga clic en el botón Guardar y probar y debería ver un mensaje de confirmación que verifica que la configuración se realizó correctamente.

    Paso 8: configurar los paneles de Grafana

    El siguiente paso es configurar Grafana Dashboards. Haga clic en el letrero con los cuatro cuadrados y seleccione Tableros para abrir la pantalla Crear tablero.

    En la página siguiente, haga clic en el botón Agregar un nuevo panel para iniciar la siguiente pantalla.

    Pegue el siguiente código en el Editor de consultas. Esto

    from(bucket: "NAMEOFYOUBUCKET")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "cpu")
      |> filter(fn: (r) => r["_field"] == "usage_idle")
      |> filter(fn: (r) => r["cpu"] == "cpu-total")
      |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
      |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
      |> map(fn: (r) => ({ r with _value: r._value * -1.0 + 100.0 }))
      |> toFloat()
      |> yield(name: "mean")
    

    Use el nombre del depósito que usamos anteriormente. Y el nombre del host que puede recuperar del archivo /etc/hostname.

    El código anterior calculará el uso de la CPU y generará un gráfico para ello. Asigne un título al panel.

    Haga clic en el botón Inspector de consultas y luego haga clic en el botón Actualizar para verificar si su consulta funciona correctamente. Haga clic en el icono de la cruz para cerrar el inspector.

    También puede nombrar el eje usando el campo Etiqueta a la derecha debajo de la sección Eje.

    Haga clic en el botón Aplicar para guardar el panel.

    Haga clic en el botón Guardar panel, una vez que haya terminado.

    Asigne un nombre al tablero y haga clic en Guardar para finalizar.

    Se abrirá el tablero y luego haga clic en el botón Agregar panel para crear otro panel.

    Repita el proceso creando otro panel para el uso de RAM.

    from(bucket: "NAMEOFYOUBUCKET")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "mem")
      |> filter(fn: (r) => r["_field"] == "used_percent")
      |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
      |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
      |> yield(name: "mean")
    

    Y use el siguiente código para mostrar el uso de HDD.

    from(bucket: "NAMEOFYOURBUCKET")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "disk")
      |> filter(fn: (r) => r["_field"] == "used")
      |> filter(fn: (r) => r["path"] == "/")
      |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
      |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
      |> map(fn: (r) => ({ r with _value: r._value / 1000000.0 }))
      |> toFloat()  
      |> yield(name: "mean")
    

    Puede crear un número ilimitado de paneles.

    El código anterior se basa en el lenguaje Flux Scripting. Afortunadamente, no necesita aprender el idioma para escribir consultas. Puede generar la consulta desde la URL de InfluxDB. Aunque aprender el idioma puede ser beneficioso para optimizar las consultas.

    Debe volver al panel de InfluxDB y abrir la página Explorar para obtener la consulta.

    Haga clic en el nombre del depósito y luego haga clic en uno de los valores en el filtro _measurement, y siga haciendo clic en otros valores a medida que aparecen. Una vez que haya terminado, haga clic en el botón Editor de secuencias de comandos y debería ver la siguiente página. El gráfico también debe actualizarse.

    Copie la consulta que se muestra y ahora puede usarla en el tablero de Grafana para construir sus gráficos.

    Paso 9: configurar alertas y notificaciones

    El uso principal de la configuración de monitores es recibir alertas a tiempo cuando el valor supera un cierto umbral.

    El primer paso es establecer el destino donde desea recibir alertas. Puede recibir notificaciones por correo electrónico, Slack, Kafka, Google Hangouts Chat, Microsoft Teams, Telegram, etc.

    Vamos a habilitar las notificaciones por correo electrónico para nuestro tutorial. Para configurar las notificaciones por correo electrónico, primero debemos configurar el servicio SMTP. Abra el archivo /etc/grafana/grafana.ini para configurar SMTP.

    $ sudo nano /etc/grafana/grafana.ini
    

    Busque la siguiente línea [smtp] en ella. Quite el comentario de las siguientes líneas e ingrese los valores para el servidor SMTP personalizado.

    [smtp]
    enabled = true
    host = email-smtp.us-west-2.amazonaws.com:587
    user = YOURUSERNAME
    # If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
    password = YOURUSERPASSWORD
    ;cert_file =
    ;key_file =
    ;skip_verify = false
    from_address = 
    from_name = HowtoForge Grafana
    # EHLO identity in SMTP dialog (defaults to instance_name)
    ;ehlo_identity = dashboard.example.com
    # SMTP startTLS policy (defaults to 'OpportunisticStartTLS')
    ;startTLS_policy = NoStartTLS
    

    Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

    Reinicie el servidor Grafana para aplicar la configuración.

    $ sudo systemctl restart grafana-server
    

    Abra la página de Grafana y haga clic en el icono Alerta y haga clic en Puntos de contacto.

    Grafana crea y configura automáticamente un punto de contacto de correo electrónico predeterminado que debe configurarse con la dirección de correo electrónico correcta. Haga clic en el botón de edición en el punto de contacto grafana-default-email.

    Ingrese los detalles para configurar el canal de notificación por correo electrónico.

    Si desea enviar un mensaje adicional, haga clic en el enlace Configuración de correo electrónico opcional e ingrese el mensaje.

    Haga clic en Prueba para ver si la configuración del correo electrónico funciona. Haga clic en Guardar cuando haya terminado.

    Ahora que hemos configurado canales de notificación, debemos configurar alertas sobre cuándo recibir estos correos electrónicos. Para configurar las alertas, debe volver a los paneles del tablero.

    Haga clic en Tablero >> Examinar para abrir la página del Tablero.

    Haga clic en el tablero que acabamos de crear y obtendrá su página de inicio con diferentes paneles. Para editar el panel, haga clic en el nombre del panel y aparecerá un menú desplegable. Haga clic en el enlace Editar para continuar.

    Haga clic en el Panel de alertas y haga clic en el botón Crear regla de alerta desde este panel para configurar una nueva alerta.

    Ahora puede configurar las condiciones bajo las cuales Grafana enviará la alerta.

    De forma predeterminada, el tipo de alerta seleccionado es una alerta gestionada por Grafana. Haz clic en el menú desplegable para cambiar el rango de tiempo a Últimos 15 minutos, lo que significa que se verificará desde hace 15 minutos hasta ahora.

    Condiciones

    Grafana trabaja sobre una consulta del siguiente formato para determinar cuándo lanzar una alerta.

    avg() OF query(A) IS BELOW 14
    

    • avg() controla cómo se debe reducir el valor de cada serie a un valor comparable con el umbral. Puede hacer clic en el nombre de la función para seleccionar una función diferente, como avg(), min(), max(), sum(), count(), etc.

    Puede agregar una segunda condición debajo de ella haciendo clic en el botón + debajo de la primera condición. Actualmente, solo puede usar operadores AND y OR entre varias condiciones.

    Regla

    • Nombre: ingrese un nombre descriptivo para la alerta
    • Carpeta: cree o seleccione una carpeta preexistente para almacenar su regla de notificación.
    • Grupo: ingrese un nombre para su grupo de alerta. Las alertas en un solo grupo se evalúan después del mismo intervalo de tiempo.
    • Evaluar cada: especifique con qué frecuencia Grafana debe evaluar la alerta. También se denomina intervalo de evaluación. Puede establecer cualquier valor que desee aquí.

    Sin datos y manejo de errores

    Puede configurar cómo Grafana debe manejar las consultas que no devuelven datos o solo valores nulos usando las siguientes condiciones:

    1. Sin datos: establezca el estado de la regla en NoData
    2. Alertas: establezca el estado de la regla en Alertas
    3. Ok: establezca el estado de la regla de alerta en Ok, ya que recibirá una alerta incluso si todo va bien.

    Puede decirle a Grafana cómo manejar los errores de ejecución o tiempo de espera.

    1. Alertas: establezca el estado de la regla en Alertas
    2. Ok: establezca el estado de la regla de alerta en Ok, ya que recibirá una alerta incluso si todo va bien.
    3. Error: establezca el estado de la regla de alerta en Error para indicar que hay un problema.

    Una vez que haya terminado, haga clic en el botón Vista previa de alertas para ver si todo funciona bien. Haga clic en el botón Guardar y salir en la parte superior derecha para terminar de agregar la alerta. Ahora debería comenzar a recibir alertas en su correo electrónico.

    Conclusión

    Esto concluye el tutorial sobre la instalación y configuración de TIG Stack en un servidor basado en Ubuntu 22.04. Si tiene alguna pregunta, publíquela en los comentarios a continuación.

Artículos relacionados: