Tutorial

Cómo instalar y proteger Grafana en Ubuntu 20.04

MonitoringOpen SourceData AnalysisUbuntu 20.04

El autor seleccionó el COVID-19 Relief Fund para que reciba una donación como parte del programa Write for DOnations.

Introducción

Grafana es una herramienta de visualización y monitoreo de datos de código abierto que se integra con datos complejos de fuentes como Prometheus, InfluxDB, Graphite y ElasticSearch. Grafana le permite crear alertas, notificaciones y filtros ad-hoc para sus datos, a la vez que facilita la colaboración con los compañeros de equipo mediante características de uso compartido integradas.

En este tutorial, instalará Grafana y la protegerá con un certificado SSL y un proxy inverso de Nginx. Una vez que haya configurado Grafana, tendrá la opción de configurar la autenticación del usuario a través de GitHub, lo que le permitirá organizar mejor los permisos de su equipo.

Requisitos previos

Para seguir este tutorial, necesitará lo siguiente:

Paso 1: Instalar Grafana

En este primer paso, instalará Grafana en su servidor de Ubuntu 20.04. Puede instalar Grafana descargándola directamente desde su sitio web oficial, o bien mediante un repositorio de APT. Debido a que un repositorio de APT facilita la instalación y administración de las actualizaciones de Grafana, en este tutorial utilizará ese método.

Descargue la clave GPG de Grafana con wget y, luego, canalice el resultado a apt-key. Esto agregará la clave a la lista de claves de confianza de la instalación de APT, que le permitirá descargar y verificar el paquete Grafana firmado con GPG:

  • wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

En este comando, la opción -q desactiva el mensaje de actualización de estado para wget y -O arroja como resultado el archivo que descargó a la terminal. Estas dos opciones aseguran que solo el contenido del archivo descargado se canalice a apt-key.

A continuación, agregue el repositorio de Grafana a las fuentes de APT:

  • sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

Actualice el caché de APT para actualizar las listas de paquetes:

  • sudo apt update

Ahora, puede proceder con la instalación:

  • sudo apt install grafana

Una vez que se haya instalado Grafana, utilice systemctl para iniciar el servidor de Grafana:

  • sudo systemctl start grafana-server

A continuación, verifique el estado del servidor para comprobar que Grafana se esté ejecutando:

  • sudo systemctl status grafana-server

Recibirá un resultado similar a este:

Output
● grafana-server.service - Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago Docs: http://docs.grafana.org Main PID: 15982 (grafana-server) Tasks: 7 (limit: 1137) ...

Este resultado contiene información sobre el proceso de Grafana, incluido el estado, el identificador de procesos principal (PID) y más. active (running) indica que el proceso se está ejecutando correctamente.

Por último, habilite el servicio para que inicie Grafana de forma automática en el arranque:

  • sudo systemctl enable grafana-server

Recibirá el siguiente resultado:

Output
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable grafana-server Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

Esto confirma que systemd ha creado los enlaces simbólicos necesarios para iniciar Grafana de manera automática.

Grafana ya está instalada y lista para su uso. A continuación, protegerá la conexión a Grafana con un proxy inverso y un certificado SSL.

Paso 2: Configurar el proxy inverso

El uso de un certificado SSL garantizará la seguridad de los datos al cifrar la conexión desde y hacia Grafana. Sin embargo, para utilizar esta conexión, primero deberá volver a configurar Nginx para que actúe como un proxy inverso para Grafana.

Abra el archivo de configuración de Nginx que creó al configurar el bloque de servidor de Nginx con Let’s Encrypt en los Requisitos previos. Puede utilizar cualquier editor de texto, pero en este tutorial lo haremos con nano:

  • sudo nano /etc/nginx/sites-available/your_domain

Busque el siguiente bloque:

/etc/nginx/sites-available/your_domain
...
    location / {
        try_files $uri $uri/ =404;
    }
...

Debido a que ya configuró Nginx para que se comunique a través de SSL y a que todo el tráfico web hacia su servidor ya pasa a través de Nginx, solo debe indicar a Nginx que reenvíe todas las solicitudes a Grafana, que de forma predeterminada se ejecuta en el puerto 3000.

Elimine la línea try_files existente en este location block (bloque de ubicación) y sustitúyala por la siguiente opción proxy_pass:

/etc/nginx/sites-available/your_domain
...
    location / {
        proxy_pass http://localhost:3000;
    }
...

Esto permitirá asignar el proxy al puerto apropiado. Una vez que haya terminado, pulse CTRL+X, Y y, luego, ENTER si utiliza nano, para guardar y cerrar el archivo.

Ahora, pruebe los nuevos ajustes para asegurarse de que todo se configuró correctamente:

  • sudo nginx -t

Recibirá el siguiente resultado:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Por último, vuelva a cargar Nginx para habilitar los cambios:

  • sudo systemctl reload nginx

Ahora puede acceder a la pantalla de inicio de sesión predeterminada de Grafana orientando el navegador web a https://your_domain. Si no puede llegar a Grafana, verifique que el firewall esté configurado para permitir el tráfico en el puerto 443 y, luego, vuelva a realizar lo indicado anteriormente.

Ahora que la conexión a Grafana está cifrada, puede implementar medidas de seguridad adicionales, y lo primero será modificar las credenciales administrativas predeterminadas de Grafana.

Paso 3: Actualizar las credenciales

Debido a que cada instalación de Grafana utiliza las mismas credenciales administrativas de forma predeterminada, una práctica recomendada es modificar la información de inicio de sesión lo antes posible. En este paso, actualizará las credenciales para mejorar la seguridad.

Diríjase primero a https://your_domain desde el navegador Con esto, se mostrará la pantalla de inicio de sesión predeterminada en la que verá el logotipo de Grafana, un formulario que le solicitará ingresar un correo electrónico o nombre de usuario y una contraseña, el botón Log in (Iniciar sesión) y el vínculo ¿Olvidó la contraseña? -

Inicio de sesión de Grafana

Escriba admin en el campo del correo electrónico o nombre de usuario y de la contraseña y, luego, haga clic en el botón Log in.

En la siguiente pantalla, se le solicitará cambiar la contraseña predeterminada para que la cuenta sea más segura:

Cambiar contraseña

Escriba la contraseña que quiere utilizar en los campos Nueva contraseña y Confirmar contraseña nueva.

Desde aquí, puede hacer clic en Enviar para guardar la nueva información o pulsar Omitir para saltar este paso. Si omite este paso, se le solicitará cambiar la contraseña la próxima vez que inicie sesión.

Para aumentar la seguridad de la configuración de Grafana, haga clic en Enviar. Será redirigido al panel Bienvenido a Grafana:

Panel de la página principal

Ya ha protegido la cuenta modificando las credenciales predeterminadas. A continuación, realizará cambios en la configuración de Grafana para que nadie pueda crear una nueva cuenta de Grafana sin su permiso.

Paso 4: Deshabilitar los registros y el acceso anónimo a Grafana

Grafana proporciona opciones que permiten a los visitantes crear cuentas de usuario para sí mismos y obtener una vista previa de los paneles sin registrarse. Es posible que quiera permitir estas características cuando no se puede acceder a Grafana a través de Internet o cuando trabaja con datos de uso público, como los estados de servicio. Sin embargo, cuando utiliza Grafana en línea para trabajar con datos confidenciales, el acceso anónimo podría constituir un problema de seguridad. Para solucionar este problema, realice algunos cambios en la configuración de Grafana.

Primero, abra el archivo de configuración principal de Grafana para editarlo:

  • sudo nano /etc/grafana/grafana.ini

Busque la siguiente directiva allow_sign_up bajo el encabezado [users]:

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
;allow_sign_up = true
...

Al habilitar esta directiva con true, se agrega un botón Sign up (Registrarse) a la pantalla de inicio de sesión, que permite a los usuarios registrarse y acceder a Grafana.

Al deshabilitar esta directiva con false, se quita el botón Sign Up y se refuerza la seguridad y la privacidad de Grafana.

Borre el signo ; del comienzo de la línea y, luego, establezca la opción como false para eliminar el comentario de esta directiva:

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
allow_sign_up = false
...

A continuación, busque la siguiente directiva enabled bajo el encabezado [auth.anonymous]:

/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

Al establecer enabled como true, se permite el acceso de usuarios no registrados a los paneles de datos; al establecer esta opción como false, se permite el acceso solo a los usuarios registrados.

Borre el signo ; del comienzo de la línea y, luego, establezca la opción como false para eliminar el comentario de esta directiva.

/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
enabled = false
...

Guarde el archivo y salga del editor de texto.

Para habilitar los cambios, reinicie Grafana:

  • sudo systemctl restart grafana-server

Compruebe el estado del servicio de Grafana para verificar que todo funciona correctamente:

  • sudo systemctl status grafana-server

Al igual que antes, el resultado mostrará active (running), lo que indica que Grafana se está ejecutando.

Ahora, dirija el navegador hacia https://your_domain. Para volver a la pantalla de registro ubique el cursor en su avatar, que se encuentra en la parte inferior izquierda de la pantalla, y haga clic en la opción Cerrar sesión que aparecerá.

Una vez que haya cerrado sesión, verifique que no haya ningún botón Sign Up y que no pueda iniciar sesión sin introducir las credenciales de inicio de sesión.

En este momento, Grafana está totalmente configurada y lista para su uso. A continuación, puede simplificar el proceso de inicio de sesión para su organización al autenticar a través de GitHub.

Paso 5 (opcional): Configurar una aplicación OAuth de GitHub

Un enfoque alternativo para iniciar sesión consiste en configurar Grafana para que se autentique a través de GitHub, que proporciona acceso de inicio de sesión a todos los miembros de las organizaciones autorizadas de GitHub. Esto puede resultar particularmente útil cuando quiere permitir que varios desarrolladores colaboren y accedan a las métricas sin tener que crear credenciales específicas para Grafana.

Primero, inicie sesión en una cuenta de GitHub asociada con su organización y, luego, vaya a su página de perfil de GitHub en https://github.com/settings/profile.

Haga clic en su nombre, que está en el margen izquierdo de la pantalla y, luego, seleccione su organización en el menú desplegable para cambiar el contexto de configuración Esto permitirá cambiar el contexto de configuración personal a configuración de la organización.

En la siguiente pantalla, verá el perfil de la organización, donde podrá cambiar los ajustes, como el nombre para mostrar de la organización, el correo electrónico y la dirección URL de la organización.

Debido a que Grafana utiliza OAuth (un estándar abierto para conceder acceso a terceros remotos a los recursos locales) para autenticar a los usuarios a través de GitHub, deberá crear una nueva aplicación OAuth en GitHub.

Haga clic en el enlace Aplicaciones OAuth en Opciones de configuración para desarrolladores ubicado en el margen inferior izquierdo de la pantalla.

Si aún no tiene ninguna aplicación OAuth asociada con su organización en GitHub, se le indicará que no hay aplicaciones que pertenezcan a la organización. De lo contrario, verá una lista de las aplicaciones OAuth que ya están conectadas a su cuenta.

Haga clic en el botón Nueva aplicación OAuth para continuar.

En la siguiente pantalla, complete los siguientes detalles sobre la instalación de Grafana:

  • Nombre de la aplicación: le ayuda a distinguir las diferentes aplicaciones OAuth que posea.
  • URL de la página principal: le indica a GitHub dónde encontrar a Grafana. Escriba https://your_domain en este campo, sustituyendo your_domain por su dominio.
  • Descripción de la aplicación: proporciona una descripción del propósito de su aplicación OAuth.
  • URL de devolución de llamada de la aplicación: es la dirección a la que se enviará a los usuarios una vez que se autentiquen correctamente. En el caso de Grafana, este campo debe establecerse como https://your_domain/login/github.

Tenga en cuenta que los usuarios de Grafana que inicien sesión a través de GitHub verán los valores que ingresó en los tres primeros campos, así que asegúrese de agregar información importante y apropiada.

Una vez completado, el formulario tendrá un aspecto similar al siguiente:

Registro de aplicación OAuth de GitHub

Haga clic en el botón verde Registrar la aplicación.

Ahora será redireccionado a una página que contiene el Identificador de cliente y Clave secreta de cliente asociados con la nueva aplicación OAuth. Tenga en cuenta ambos valores, porque deberá agregarlos al archivo de configuración principal de Grafana para completar la configuración.

Advertencia: Asegúrese de mantener su Identificador de cliente y Clave secreta de cliente en una ubicación segura y privada, porque podrían utilizarse para un ataque.

Ahora que creó la aplicación OAuth de GitHub, está listo para volver a configurar Grafana de modo que le permita utilizar GitHub para la autenticación.

Paso 6 (opcional): Configurar Grafana como una aplicación OAuth de GitHub

Ahora realizará algunas modificaciones en los archivos de configuración de Grafana para completar la autenticación de GitHub para utilizarlo en la configuración de Grafana.

Para comenzar, abra el archivo de configuración principal de Grafana.

  • sudo nano /etc/grafana/grafana.ini

Busque el encabezado [auth.github] y borre el signo ; del comienzo de cada línea, a excepción de ;allowed_domains = y ;team_ids = (que no cambiaremos en este tutorial) para eliminar el comentario de esta sección.

A continuación, realice los siguientes cambios:

  • Establezca enabled y allow_sign_up como true. Esto habilitará la autenticación de GitHub y permitirá que los miembros de la organización permitida puedan crear cuentas. Tenga en cuenta que esta opción de configuración es diferente a la propiedad allow_sign_up en [users] que modificó en el paso 4.
  • En client_id y client_secret ingrese los valores que obtuvo al crear la aplicación OAuth de GitHub.
  • En allowed_organizations ingrese el nombre de su organización para asegurarse de que solo los miembros de la empresa puedan registrarse e iniciar sesión en Grafana.

La configuración completa tendrá el siguiente aspecto:

/etc/grafana/grafana.ini
...
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name
...

Ya le indicó a Grafana todo lo que necesita saber sobre GitHub. Para completar la configuración, deberá habilitar los redireccionamientos detrás de un proxy inverso. Para ello, se configura un valor root_url bajo el encabezado [server].

/etc/grafana/grafana.ini
...
[server]
root_url = https://your_domain
...

Guarde la configuración y cierre el archivo.

A continuación, reinicie Grafana para habilitar los cambios:

  • sudo systemctl restart grafana-server

Por último, verifique que el servicio esté activo y en ejecución.

  • sudo systemctl status grafana-server

El resultado mostrará active (running), lo que indica que el servicio se está ejecutando.

Ahora, diríjase a https://your_domain para probar el nuevo sistema de autenticación. Si ya inició sesión en Grafana, mantenga el mouse sobre el registro del avatar, ubicado en la esquina inferior izquierda de la pantalla, y haga clic en Cerrar sesión en el menú secundario que aparece junto a su nombre.

En la página de inicio de sesión, verá una nueva sección debajo del botón Iniciar sesión original, que contiene el botón Iniciar sesión con GitHub con el logo de GitHub.

Página de inicio de sesión con GitHub de Grafana

Haga clic en el botón Iniciar sesión con GitHub para que el sistema lo redireccione a GitHub, en donde iniciará sesión en su cuenta de GitHub y confirmará que quiere autorizar a Grafana.

Haga clic en el botón verde Autorizar your_github_organization.

Nota: Asegúrese de que su cuenta de GitHub sea miembro de la organización aprobada y que la dirección de correo electrónico de Grafana coincida con la de GitHub. Si intenta autenticarse con una cuenta de GitHub que no pertenezca a la organización aprobada, recibirá el mensaje Error al iniciar sesión, en el que se le indica que el usuario no es miembro de una de las organizaciones requeridas.

Ahora, habrá iniciado sesión con la cuenta de Grafana existente. Si aún no existe una cuenta de Grafana para el usuario con el que inició sesión, Grafana creará una nueva cuenta de usuario con permisos de visualización, lo que garantiza que los nuevos usuarios solo puedan utilizar los paneles existentes.

Para modificar los permisos predeterminados para los nuevos usuarios, abra el archivo de configuración principal de Grafana para editarlo.

  • sudo nano /etc/grafana/grafana.ini

Busque la directiva auto_assign_org_role bajo el encabezado [users] y borre el signo ; del principio de la línea para eliminar el comentario de la configuración.

Establezca uno de los siguientes valores en la directiva:

  • Viewer (visualización): solo puede utilizar los paneles existentes
  • Editor: puede utilizar, modificar y agregar paneles
  • Admin: tiene permiso para realizar todas las acciones

En este tutorial se establecerá auto-assign como Viewer:

/etc/grafana/grafana.ini
...
[users]
...
auto_assign_org_role = Viewer
...

Una vez que haya guardado los cambios, cierre el archivo y reinicie Grafana:

  • sudo systemctl restart grafana-server

Compruebe el estado del servicio:

  • sudo systemctl status grafana-server

Al igual que antes, el estado mostrará active (running).

En este momento, ha configurado completamente Grafana para permitir que los miembros de su organización de GitHub puedan registrarse y utilizar la instalación de Grafana.

Conclusión

En este tutorial, instaló, configuró y protegió Grafana, y también aprendió cómo permitir que los miembros de su organización se autentiquen a través de GitHub.

Para ampliar la instalación actual de Grafana, consulte la lista de paneles y complementos oficiales y creados por la comunidad. Para obtener más información sobre el uso de Grafana en general, consulte la documentación oficial de Grafana o alguno de nuestros tutoriales de monitoreo.

Creative Commons License