Tutorial

Como instalar e proteger o Grafana no Ubuntu 20.04

MonitoringData AnalysisUbuntu 20.04

O autor selecionou a COVID-19 Relief Fund​​​​​ para receber uma doação como parte do programa Write for DOnations.

Introdução

O Grafana é uma ferramenta de visualização e monitoramento de dados de código aberto que integra-se com dados complexos de fontes como o Prometheus, InfluxDB, Graphite e o ElasticSearch. O Grafana permite criar alertas, notificações e filtros ad-hoc para seus dados, além de também tornar a colaboração com seus colegas de equipe mais fácil através de recursos de compartilhamento integrados.

Neste tutorial, você irá instalar o Grafana e protegê-lo com um certificado SSL e um proxy reverso Nginx. Depois de configurar o Grafana, você terá a opção de configurar a autenticação do usuário através do GitHub, permitindo uma melhor organização das permissões da sua equipe.

Pré-requisitos

Para seguir este tutorial, será necessário:

Passo 1 — Instalando o Grafana

Neste primeiro passo, você irá instalar o Grafana em seu servidor Ubuntu 20.04. Você pode instalar o Grafana baixando diretamente de seu site oficial ou visitando um repositório APT. Como um repositório APT torna mais fácil instalar e gerenciar as atualizações do Grafana, esse método será usado neste tutorial.

Baixe a chave GPG do Grafana com o wget e , em seguida, canalize o resultado para o apt-key. Isso irá adicionar a chave à lista de chaves confiáveis da sua instalação APT, que lhe permitirá baixar e verificar o pacote Grafana assinado pelo GPG:

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

Neste comando, a opção -q desliga a mensagem de atualização de status para o wget, e o -O apresenta o arquivo que você baixou no terminal. Essas duas opções garantem que apenas o conteúdo do arquivo baixado seja enviado por um pipeline para o apt-key.

Em seguida, adicione o repositório do Grafana às suas fontes APT:

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

Recarregue seu cache APT para atualizar suas listas de pacotes:

  • sudo apt update

Agora, prossiga com a instalação:

  • sudo apt install grafana

Assim que o Grafana for instalado, use o systemctl para iniciar o servidor Grafana:

  • sudo systemctl start grafana-server

Em seguida, confirme se o Grafana está sendo executado verificando o status do serviço:

  • sudo systemctl status grafana-server

Você receberá um resultado semelhante 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 contém informações sobre o processo do Grafana, incluindo seu status, o identificador de processo (PID) principal e muito mais. O active (running) mostra que o processo está funcionando corretamente.

Por fim, habilite o serviço para iniciar automaticamente o Grafana na inicialização do sistema:

  • sudo systemctl enable grafana-server

Você receberá o seguinte 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.

Isso confirma que o systemd criou os links simbólicos necessários para o início automático do Grafana.

O Grafana agora está instalado e pronto para ser usado. Em seguida, você protegerá sua conexão com o Grafana com um proxy reverso e um certificado SSL.

Passo 2 — Configurando o proxy reverso

Usar um certificado SSL garantirá que seus dados estarão seguros criptografando a conexão em ambas a direções com o Grafana. Mas, para fazer uso desta conexão, primeiro será necessário reconfigurar o Nginx como um proxy reverso para o Grafana.

Abra o arquivo de configuração do Nginx que você criou ao configurar o bloco de servidor do Nginx com o Let’s Encrypt nos pré-requisitos. Você pode usar qualquer editor de texto, mas para este tutorial usaremos o nano:

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

Localize o seguinte bloco:

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

Como você já configurou o Nginx para se comunicar através do SSL e porque o tráfego Web para seu servidor já passa pelo Nginx, basta dizer ao Nginx para encaminhar todos os pedidos para o Grafana, que funciona na porta 3000 por padrão.

Excluia a linha try_files existente neste location block (bloco de localização) e substitua-a pela seguinte opção proxy_pass:

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

Isso irá mapear o proxy para a porta apropriada. Depois de terminar, salve e feche o arquivo pressionando o CTRL+X, Y e então ENTER se estiver usando o nano.

Agora, teste as novas configurações para garantir que tudo esteja configurado corretamente:

  • sudo nginx -t

Você receberá o seguinte resultado:

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

Por fim, ative as alterações recarregando o Nginx:

  • sudo systemctl reload nginx

Agora você pode acessar a tela de login padrão do Grafana direcionando seu navegador Web para https://your_domain. Se não conseguir chegar ao Grafana, verifique se o firewall está definido para permitir o tráfego na porta 443 e refaça as instruções anteriores.

Com a conexão com o Grafana criptografada, implemente agora as medidas de segurança adicionais, começando com a alteração das credenciais administrativas padrão do Grafana.

Passo 3 — Atualizando as credenciais

Como cada instalação do Grafana usa as mesmas credenciais administrativas por padrão, é uma prática recomendada alterar suas informações de login o mais rápido possível. Neste passo, você irá atualizar as credenciais para melhorar a segurança.

Comece navegando para https://your_domain no seu navegador Web. Isso irá abrir a tela de login padrão onde você verá o logotipo do Grafana, um formulário que lhe pede para digitar um Email or ursername (E-mail ou nome de usuário) e Password (Senha), um botão de Login e um link Forgot your password? (Esqueceu sua senha?).

Login no Grafana

Digite admin em ambos os campos Email ou nome de usuário e Senha e clique no botão de Login.

Na próxima tela, você será solicitado a tornar sua conta mais segura alterando a senha padrão:

Alterar a senha

Digite a senha que você gostaria de começar a usar nos campos New password (nova senha) e Confirm new password (confirmar nova senha).

A partir daqui, você pode clicar em Submit (Enviar) para salvar as novas informações ou pressionar Skip (Pular) para ir ao próximo passo. Caso pule essa etapa, será solicitado a alterar a senha da próxima vez que fizer login.

Para aumentar a segurança da sua configuração do Grafana, clique em Enviar. Você será direcionado ao painel de Welcome to Grafana (Bem-vindo ao Grafana):

Painel Home

Agora você protegeu sua conta alterando as credenciais padrão. Em seguida, você fará alterações na sua configuração do Grafana para que ninguém possa criar uma nova conta do Grafana sem sua permissão.

Passo 4 — Desativando as inscrições e o acesso anônimo no Grafana

O Grafana oferece opções que permitem aos visitantes criar contas de usuário para si mesmos e visualizar painéis de visualização sem se registrar. Quando o Grafana não estiver acessível através da internet ou quando estiver funcionando com dados disponíveis publicamente como o status de serviço, pode ser interessante permitir essas características. No entanto, ao usar o Grafana online para trabalhar com dados confidenciais, o acesso anônimo pode ser um problema de segurança. Para corrigir este problema, faça algumas alterações na sua configuração do Grafana.

Comece abrindo o arquivo de configuração principal do Grafana para edição:

  • sudo nano /etc/grafana/grafana.ini

Localize a seguinte diretiva allow_sign_up no cabeçalho [users]:

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

Ativar esta diretiva com true adiciona um botão de Sign Up (Registrar-se) na tela de login, permitindo que os usuários se registrem e acessem o Grafana.

Desativar esta diretiva com o false remove o botão de Registrar-se e fortalece a segurança e privacidade do Grafana.

Descomente essa diretiva removendo o ; no início da linha e definindo a opção como false:

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

Em seguida, localize a diretiva enabled a seguir no cabeçalho [auth.anonymous]:

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

Definir enabled como true dá acesso a usuários não registrados aos seus dashboards; definindo essa opção como false limita o acesso ao painel apenas a usuários registrados.

Descomente essa diretiva removendo o ; no início da linha e definindo a opção como false.

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

Salve o arquivo e saia do seu editor de texto.

Para ativar as mudanças, reinicie o Grafana:

  • sudo systemctl restart grafana-server

Confirme se tudo está funcionando verificando o status de serviço do Grafana:

  • sudo systemctl status grafana-server

Assim como antes, o resultado irá informar que o Grafana está active (running).

Agora, direcione seu navegador Web para https://your_domain. Para retornar à tela de Registrar-se, leve seu cursor para seu avatar na parte inferior esquerda da tela e clique na opção de Sign out (Sair) que aparece.

Depois de sair, verifique se não há nenhum botão de Registrar-se e se você não consegue entrar sem inserir as credenciais de login.

Neste momento, o Grafana está totalmente configurado e pronto para ser usado. Em seguida, você pode simplificar o processo de login para sua organização autenticando-se através do GitHub.

(Opcional) Passo 5 — Configurando um aplicativo OAuth do GitHub

Para uma abordagem alternativa para se registrar, configure o Grafana para se autenticar através do GitHub, que fornece acesso de login a todos os membros das organizações autorizadas do GitHub. Isso pode ser particularmente útil quando você quiser permitir que vários desenvolvedores colaborem e acessem métricas sem ter que criar credenciais específicas do Grafana.

Comece entrando em uma conta do GitHub associada à sua organização e navegue até sua página de perfil do GitHub em https://github.com/settings/profile.

Mude o contexto das configurações clicando em seu nome no lado esquerdo da tela e selecione sua organização no menu suspenso. Isso irá mudar o contexto de Personal settings (Configurações pessoais) para as Organization settings (Configurações organizacionais).

Na próxima tela, você verá seu Organization profile (Perfil da organização) onde você pode alterar as configurações como seu Organization display name (Nome de exibição da organização), Email e URL da organização.

Como o Grafana usa o OAuth - um padrão aberto para conceder a terceiros acesso remoto a recursos locais e resources - para autenticar usuários através do GitHub, você precisará criar um novo aplicativo do OAuth dentro do GitHub.

Clique no link OAuth Apps em Developer settings (Configurações de desenvolvedor) no lado esquerdo inferior da tela.

Se você ainda não tiver nenhum aplicativo OAuth associado à sua organização no GitHub, você será informado que No Organization Owned Applications (Nenhum aplicativo de propriedade da organização). Caso contrário, você verá uma lista dos aplicativos OAuth já conectados à sua conta.

Clique no botão New OAuth App para continuar.

Na próxima tela, preencha os seguintes detalhes sobre sua instalação do Grafana:

  • Application name - Isso ajuda você a distinguir seus diferentes aplicativos do OAuth um do outro.
  • Homepage URL - Isso diz ao GitHub onde encontrar o Grafana. Digite https://your_domain neste campo, substituindo your_domain pelo seu domínio.
  • Application Description - Isso fornece uma descrição do propósito do seu aplicativo OAuth.
  • Application callback URL - Este é o endereço onde os usuários serão enviados uma vez que forem autenticados com sucesso. Para o Grafana, este campo deve ser definido como https://your_domain/login/github.

Tenha em mente que os usuários do Grafana logando através do GitHub verão os valores que você digitou nos primeiros três campos anteriores, então não se esqueça de inserir algo significativo e adequado.

Quando concluído, o formulário vai ficar parecido com este:

Registro do aplicativo OAuth do GitHub

Clique no botão verde Register application (Registrar aplicativo).

Agora você será redirecionado para uma página que contém Client ID e o Client Secret associados com seu novo aplicativo do OAuth. Observe ambos os valores, pois você precisará adicioná-los ao arquivo de configuração principal do Grafana para completar a configuração.

Aviso: certifique-se de manter seu Client ID e seu Client Secret em uma localização segura e não pública, pois eles podem ser usados como base para um ataque.

Com seu aplicativo OAuth do GitHub criado, você está pronto para reconfigurar o Grafana para usar o GitHub para autenticação.

(Opcional) Passo 6 — Configurando o Grafana como um aplicativo do OAuth do GitHub

Para completar a autenticação do GitHub para sua configuração do Grafana, você fará agora algumas alterações em seus arquivos de configuração do Grafana.

Para começar, abra o arquivo de configuração principal do Grafana.

  • sudo nano /etc/grafana/grafana.ini

Localize o cabeçalho [auth.github] e descomente esta seção removendo o ; no início de cada linha, exceto o ;allowed_domains = e ;team_ids =, que não serão alterados neste tutorial.

Em seguida, faça as seguintes alterações:

  • Defina enabled e allow_sign_up como true. Isso habilita a Autenticação via GitHub e permite que membros da organização autorizada criem suas próprias contas. Observe que essa configuração é diferente da propriedade allow_sign_up em [users] que você mudou Passo 4.
  • Defina client_id e client_secret para os valores que você recebeu enquanto criava seu aplicativo OAuth do GitHub.
  • Defina allowed_organizations para o nome da sua organização para garantir que apenas membros da sua organização possam se inscrever e fazer login no Grafana.

A configuração completa vai ficar assim:

/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
...

Agora, você informou ao Grafana tudo o que ele precisa saber sobre o GitHub. Para completar a configuração, será necessário ativar os redirecionamentos por trás de um proxy reverso. Isso é feito definindo um valor root_url no cabeçalho [server].

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

Salve suas alterações e feche o arquivo.

Então, reinicie o Grafana para ativar as mudanças:

  • sudo systemctl restart grafana-server

Por fim, verifique se o serviço está funcionando.

  • sudo systemctl status grafana-server

O resultado indicará que o serviço está active(running).

Agora, teste seu novo sistema de autenticação navegando para https://your_domain. Se você já estiver conectado ao Grafana, passe seu mouse sobre o log do avatar no canto inferior esquerdo da tela. Em seguida, clique em Sair no menu secundário que aparece próximo ao seu nome.

Na página de login, você verá uma nova seção no botão de Login original que inclui um botão Sign in with GitHub (Registrar-se com o GitHub) com a logotipo do GitHub.

Página de login do Grafana com o GitHub

Clique no botão Registrar-se com o GitHub para ser redirecionado ao GitHub, onde você irá iniciar sessão em sua conta do GitHub e confirmar sua intenção de Authorize Grafana (Autorizar o Grafana).

Clique no botão verde Authorize your_github_organization.

Nota: certifique-se de que sua conta do GitHub é um membro de sua organização aprovada e que seu endereço de e-mail do Grafana corresponde ao seu endereço de e-mail do GitHub. Se tentar autenticar-se com uma conta do GitHub que não seja membro de sua organização aprovada, você receberá uma mensagem Login Failed (Falha no login) informando User not a member of one of the required organizations (Usuário não membro de uma das organizações necessárias).

Agora, você será conectado com sua conta do Grafana existente. Se uma conta do Grafana ainda não existir para o usuário que você fez login, o Grafana criará uma nova conta de usuário com permissões de Viewer, garantindo que novos usuários só podem usar os painéis existentes.

Para alterar as permissões padrão para novos usuários, abra o arquivo de configuração principal do Grafana para edição.

  • sudo nano /etc/grafana/grafana.ini

Localize a diretiva auto_assign_org_role no cabeçalho [users] e descomente a configuração removendo o ; no início da linha.

Defina a diretiva como um dos seguintes valores:

  • Viewer — só pode usar os painéis existentes
  • Editor — pode usar, modificar e adicionar painéis
  • Admin — tem permissão para fazer tudo

Este tutorial irá definir a atribuição automática como Viewer:

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

Depois de salvar suas alterações, feche o arquivo e reinicie o Grafana:

  • sudo systemctl restart grafana-server

Verifique o status do serviço:

  • sudo systemctl status grafana-server

Assim como antes, o status será active (running).

Neste momento, você configurou totalmente o Grafana para permitir que membros da sua organização do GitHub se registrem e usem sua instalação do Grafana.

Conclusão

Neste tutorial você instalou, configurou e protegeu o Grafana. Além disso, você também aprendeu como permitir que membros da sua organização se autentiquem através do GitHub.

Para ampliar sua atual instalação do Grafana, consulte a lista de painéis e plugins oficiais e da comunidade. Para aprender mais sobre como usar o Grafana em geral, consulte a documentação oficial do Grafana ou confira nossos outros tutoriais de monitoramento.

0 Comments

Creative Commons License