Gere links de painel compartilháveis e sem login mediante autenticação por chave de API.
Contexto
-
No Grafana nativo, o acesso direto a um painel exige o uso de snapshots ou a ativação do acesso anônimo. Snapshots são estáticos e não exibem atualizações de dados em tempo real, enquanto o acesso anônimo sem uma lista de permissões de IP pode representar um risco de segurança. Em contraste, o Managed Service for Grafana permite gerar links de painel compartilháveis e sem login usando autenticação por chave de API.
Compartilhe esses links com outros usuários.
Usuários com o link acessam o painel sem fazer login, pois a chave de API fornece a autenticação.
No Grafana 10.0.x, os tokens de conta de serviço substituíram o recurso de chave de API, mas as chaves de API ainda estão disponíveis. No Grafana 11.x, as chaves de API foram completamente removidas e a página de gerenciamento de chaves de API retorna um erro 404. Nessa versão, apenas os tokens de conta de serviço fornecem autenticação. Para obter mais informações, consulte Contas de serviço.
Etapa 1: Configurar parâmetros do Grafana
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
Faça login no console do Managed Service for Grafana. No painel de navegação à esquerda, clique em Workspace Management.
Na página Workspace Management, clique no ID do workspace que deseja gerenciar.
No painel de navegação à esquerda, clique em Parameter Settings.
Na lista de parâmetros à esquerda, selecione aliyun e clique em Modify Parameters.
-
Defina o parâmetro api_key_share como true e clique em Save and Apply.
Na categoria de configuração aliyun, localize o parâmetro api_key_share na lista de parâmetros.
-
Opcional: Para ativar a incorporação via iframe, configure os seguintes parâmetros.
-
Para incorporação entre domínios
Seu domínio deve usar HTTPS. Em seguida, defina os três parâmetros de security a seguir.
allow_embedding=true cookie_samesite=none cookie_secure=true -
Para incorporação no mesmo domínio
Na seção security, defina o parâmetro allow_embedding como true para ativar a incorporação via iframe.
-
Caso incorpore o iframe em outra instância do Grafana, ajuste os parâmetros de panels nessa instância.
enable_alpha = true disable_sanitize_html = true
-
Etapa 2: Criar uma chave de API
Os procedimentos para criar uma chave de API diferem entre o Grafana 9.0.x e o 10.0.x. Verifique sua versão do Grafana e siga o procedimento apropriado.
O recurso de chave de API foi removido no Grafana 11.x. Em vez disso, crie um token de conta de serviço seguindo o procedimento para o Grafana 10.0.x.
Ao atualizar da versão 9.0.x para a 10.0.x, as chaves de API criadas no Grafana 9.0.x permanecem visíveis na página Administration > api keys. Clique em migrate to service account para migrá-las para uma conta de serviço. Após a migração, a página api keys fica oculta. As chaves de API existentes continuam funcionando.
Grafana 9.0.x
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
Faça login no console do Managed Service for Grafana. No painel de navegação à esquerda, clique em Workspace Management.
-
Na página Workspace Management, localize o workspace que deseja gerenciar e clique na URL na coluna URL para acessar o Grafana.
NotaFaça login no Grafana com a conta de administrador e a senha configurada durante a criação do workspace. Também é possível clicar em Sign in with Alibaba Cloud para entrar no Grafana com a conta atual do Alibaba Cloud.
No canto superior esquerdo da página inicial do Grafana, clique no ícone
.-
No painel de navegação à esquerda do Grafana, escolha Configuration > API keys.
NotaPermissões de administrador são necessárias para acessar esta página.
-
Clique em New API key ou Add API key e configure os parâmetros.
Parâmetro
Descrição
Key name
Nome exclusivo para a chave de API.
Role
Defina como Viewer.
Time to live
Período de validade. Exemplo: 60s (60 segundos), 10m (10 minutos) ou 1d (1 dia).
-
Clique em Add. Na caixa de diálogo exibida, copie e salve a chave de API.
ImportanteA chave de API não pode ser visualizada novamente após o fechamento da caixa de diálogo.
Na caixa de diálogo API key created, clique no botão Copy ao lado do campo Key para copiar a chave de API. A caixa de diálogo também fornece um exemplo de comando curl para autenticar solicitações usando o cabeçalho HTTP
Authorization:curl -H "Authorization: Bearer eyJrIjoi..." https://grafana-xxx.grafana.aliyuncs.com/api/dashboards/home.
Grafana 10.0.x
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
Faça login no console do Managed Service for Grafana. No painel de navegação à esquerda, clique em Workspace Management.
-
Na página Workspace Management, localize o workspace que deseja gerenciar e clique na URL na coluna URL para acessar o Grafana.
NotaFaça login no Grafana com a conta de administrador e a senha configurada durante a criação do workspace. Também é possível clicar em Sign in with Alibaba Cloud para entrar no Grafana com a conta atual do Alibaba Cloud.
No canto superior esquerdo da página inicial do Grafana, clique no ícone
.-
No painel de navegação à esquerda do Grafana, escolha .
ImportantePermissões de administrador são necessárias para acessar este menu.
Uma conta de serviço consome uma conta de usuário.
-
Clique em Add service account, insira os parâmetros e clique em Create.
Parâmetro
Descrição
Display name
Nome exclusivo para a conta de serviço.
Role
Defina como Viewer.
-
No lado direito da página, clique em Add service account token e insira os parâmetros.
Parâmetro
Descrição
Display name
Nome exclusivo para o token.
Expiration
Período de validade do token.
-
No Expiration: O token não expira.
-
Set Expiration date: Especifique uma data de expiração.
Expiration date
Obrigatório quando você seleciona Set Expiration date.
-
Clique em Generate token. Na caixa de diálogo exibida, clique em Copy to clipboard and close.
O token não pode ser visualizado novamente após o fechamento da caixa de diálogo.
Etapa 3: Gerar um link compartilhável
Grafana 9.0.x
Na interface do Grafana, abra o painel que deseja compartilhar.
Clique no ícone
e obtenha o link compartilhável na aba Link.-
Anexe
&aliyun_api_key=<API key value>ao final do link. Substitua<API key value>pela chave de API obtida na Etapa 2.https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key=eyJr****WkIwNnN2c0RTSD****** Use o link compartilhável para acessar o painel do Grafana sem fazer login.
Grafana 10.0.x
Na interface do Grafana, abra o painel que deseja compartilhar.
-
Clique no ícone
e obtenha o link compartilhável na aba Link.Na caixa de diálogo, defina opções como lock time range (converte um intervalo de tempo relativo em absoluto), theme (atual, escuro ou claro) e shorten URL. Na seção Link URL na parte inferior, clique no botão Copy.
-
Anexe
&aliyun_api_key=<API key value>ao final do link. Mantenha o nome do parâmetro de URLaliyun_api_keyinalterado e substitua seu valor pelo token de conta de serviço obtido na Etapa 2.https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key=eyJrIjoiWkIwNnN2c0RTSD****** Use o link compartilhável para acessar o painel do Grafana sem fazer login.
Etapa 4: Gerar um link compartilhável de alta segurança (opcional)
Os links compartilháveis gerados na Etapa 3: Gerar um link compartilhável exigem rotação periódica da chave de API para evitar riscos de segurança decorrentes da exposição da chave. Esta seção descreve como gerar um link compartilhável de alta segurança para uma chave de API no Grafana 9.0.x e para um token de conta de serviço no Grafana 10.0.x.
Antes de começar, defina o parâmetro de tempo de execução api_key_share_version como v2.
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
Faça login no console do Managed Service for Grafana. No painel de navegação à esquerda, clique em Workspace Management.
Na página workspace management, clique no ID do workspace de destino. No painel de navegação à esquerda, clique em Parameter Settings.
Defina o parâmetro de tempo de execução api_key_share_version como v2 e clique em Save and Apply.
Chave de API (Grafana 9.0.x)
-
Decodifique em Base64 a chave de API obtida na Etapa 2: Criar uma chave de API.
Base64 é um método de codificação comum usado para transmitir bytecode de 8 bits pela rede. Ele usa 64 caracteres imprimíveis para representar dados binários.
Use sites de ferramentas comuns para decodificação, como base64.
-
Decodifique em Java.
package main; import java.util.Base64; public class Base64Example{ public static void main(String[] args) { String apiKey = "eyJr****REpzZGYzd2JIa0N3ekgyWjlWWmhrSTM5bWdGT2hGSmwiLCJuIjoidGVzdDEiLCJpZCI6MX0="; String decodeKey = new String(Base64.getDecoder().decode(apiKey)); System.out.println(decodeKey); } }Saída:
{"k":"DJsd****HkCwzH2Z9VZhkI39mgFOhFJl","n":"test1","id":1} -
Decodifique em Go.
package main; import "fmt" import "encoding/base64" func main() { apiKey := "eyJr****REpzZGYzd2JIa0N3ekgyWjlWWmhrSTM5bWdGT2hGSmwiLCJuIjoidGVzdDEiLCJpZCI6MX0=" decodeKey, err := base64.StdEncoding.DecodeString(apiKey) if err != nil { fmt.Println(err.Error()) return } fmt.Println(string(decodeKey)) }Saída:
{"k":"DJsd****HkCwzH2Z9VZhkI39mgFOhFJl","n":"test1","id":1}
-
Derive um hash PBKDF2 do valor
kno objeto JSON decodificado.PBKDF2 (Password-Based Key Derivation Function 2) é uma função de derivação de chave usada para derivar com segurança uma chave criptográfica a partir de uma senha e outros parâmetros, como um salt e o número de iterações. É comumente usada para armazenamento de senhas e foi projetada para dificultar a recuperação de senhas em texto simples ou a quebra das chaves derivadas por um invasor, mesmo se um banco de dados for comprometido.
É possível derivar o hash de diferentes maneiras. A tabela a seguir descreve os parâmetros necessários.
Parâmetro
Descrição
salt
Defina como o nome da chave de API, que corresponde ao valor
ndo objeto JSON decodificado. Neste exemplo, o valor étest1.iterations
Defina o valor como
10000.output length
Defina o valor como
50bytes.key size
Defina o valor como
256bits.Output type
Defina o tipo como
Hex.Use ferramentas de criptografia online comuns, como PBKDF2.
-
Derive o hash em Java.
package main; import javax.crypto.SecretKeyFactory; import java.security.GeneralSecurityException; import javax.crypto.spec.PBEKeySpec; import java.security.spec.KeySpec; public class PBKDFExapmle { public static void main(String[] args) { String password = "DJsd****HkCwzH2Z9VZhkI39mgFOhFJl"; String salt = "test1"; int iterationCount = 10000; int outputLength = 50 * 8; try { KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), iterationCount, outputLength); SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); byte[] keyBytes = skf.generateSecret(spec).getEncoded(); System.out.println(bytesToHex(keyBytes)); } catch (GeneralSecurityException e) { e.printStackTrace(); } } private static String bytesToHex(byte[] bytes) { StringBuilder hexString = new StringBuilder(); for (byte b : bytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString(); } }Saída:
1e5b**80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882** -
Derive o hash em Go.
package main; import "fmt" import "encoding/hex" import "crypto/sha256" import "golang.org/x/crypto/pbkdf2" func main() { password:="DJsd****HkCwzH2Z9VZhkI39mgFOhFJl" salt:="test1" newPasswd := pbkdf2.Key([]byte(password), []byte(salt), 10000, 50, sha256.New) encodePassword:= hex.EncodeToString(newPasswd) fmt.Println(encodePassword) }Saída:
1e5b**80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882**
-
Calcule uma assinatura MD5 a partir da saída do PBKDF2.
O algoritmo de resumo de mensagem MD5 é uma função de hash criptográfico amplamente utilizada que produz um valor de hash de 128 bits (16 bytes) para garantir a integridade da transmissão de informações.
Construa a string a ser assinada da seguinte forma:
<PBKDF2 Password> + "_" + <current Unix timestamp in seconds>Senha PBKDF2: 1e5b**80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882**
Se a hora atual do sistema for 2024-09-20 17:12:13, o timestamp Unix em segundos será
1726823533.String para assinar: 1e5b**80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882**_1726823533
Calcule a assinatura MD5 de diferentes maneiras:
Use ferramentas de criptografia online comuns, como MD5.
-
Calcule a assinatura MD5 em Java.
package main; import java.security.MessageDigest; public class MD5 { public static void main(String[] args) { String pbkdfPassword = "1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****"; long timeSeconds=System.currentTimeMillis()/1000; String key=pbkdfPassword+"_"+timeSeconds; System.out.println(MD5.getMD5String(key,"UTF-8")); } public static String getMD5String(String str, String charset) { try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(str.getBytes(charset)); byte[] byteArray = messageDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArray.length; i++) { if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) { md5StrBuff.append("0").append( Integer.toHexString(0xFF & byteArray[i])); } else { md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); } } return md5StrBuff.toString().toLowerCase(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("MD5 error:"+e.getMessage()); } } } -
Calcule a assinatura MD5 em Go.
package main; import ( "crypto/md5" "encoding/hex" "fmt" "io" "time" "strconv" ) func main() { // The string for which you want to calculate the MD5 hash. pbkdfPassword := "1e5b****80184e78832544aae4d2e031a3539c10b575b75d7c1d44af49fcf5a7de9c58a5f0035ce35fff0e5b0476e882****" timeSeconds:= time.Now().Unix() key:=pbkdfPassword+"_"+strconv.FormatInt(timeSeconds, 10) // Use the MD5 package to calculate the MD5 hash of the string. hash := md5.New() io.WriteString(hash, key) md5Str := hash.Sum(nil) // Convert the binary MD5 hash to a hexadecimal string. md5StrHex := hex.EncodeToString(md5Str) fmt.Println("MD5 of", key, "is", md5StrHex) }
-
Anexe as informações da assinatura MD5 gerada como parâmetros ao link.
Parâmetros:
Parâmetro
Descrição
Exemplo
aliyun_api_key_sign
Assinatura MD5, que muda com o tempo.
c3bf89b867cc88df72d507edc4d1****
aliyun_api_key_timestamp
Timestamp da assinatura. A assinatura expira se a diferença entre este timestamp e a hora do servidor exceder um minuto.
1726823533
aliyun_api_key_name
Nome da chave de API.
test1
aliyun_api_key_org_id
ID da organização à qual a chave de API pertence.
1
aliyun_api_key_expire_seconds
Duração, em segundos, durante a qual a sessão permanece válida após o login com a URL assinada.
Padrão: 3600
Exemplo:
https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key_sign=c3bf89b867cc88df72d507edc4d1****&aliyun_api_key_timestamp=1726823533&aliyun_api_key_name=test1&aliyun_api_key_org_id=1Agora é possível gerar programaticamente links mais seguros e sem login para o Grafana, o que também evita a exposição da chave de API.
Token de conta de serviço (Grafana 10.0.x)
-
Divida o token de conta de serviço da Etapa 2: Criar um token de conta de serviço e derive um hash PBKDF2 de seus componentes.
PBKDF2 (Password-Based Key Derivation Function 2) é uma função de derivação de chave usada para derivar com segurança uma chave criptográfica a partir de uma senha e outros parâmetros, como um salt e o número de iterações. É comumente usada para armazenamento de senhas e foi projetada para dificultar a recuperação de senhas em texto simples ou a quebra das chaves derivadas por um invasor, mesmo se um banco de dados for comprometido.
Divida o token de conta de serviço pelo caractere sublinhado (
_).# Example service account token: Token: glsa_yV9HAOVCjNKkvKoLMiypOc5T0Oov****_4f5ff3ce # After splitting: Prefix: glsa Secret: yV9HAOVCjNKkvKoLMiypOc5T0Oov**** Salt: 4f5ff3ceÉ possível derivar o hash de diferentes maneiras. A tabela a seguir descreve os parâmetros necessários.
Parâmetro
Descrição
salt
Defina como o sufixo do token. Neste exemplo, o valor é
4f5ff3ce.iterations
Defina o valor como
10000.output length
Defina o valor como
50bytes.key size
Defina o valor como
256bits.Output type
Defina o tipo como
Hex.Use sites de ferramentas comuns para decodificação, como charsetpbkdf2.
-
Derive o hash em Java.
package main; import javax.crypto.SecretKeyFactory; import java.security.GeneralSecurityException; import javax.crypto.spec.PBEKeySpec; import java.security.spec.KeySpec; public class PBKDFExapmle { public static void main(String[] args) { String password = "yV9H****jNKkvKoLMiypOc5T0OovHXPV"; String salt = "4f5ff3ce"; int iterationCount = 10000; int outputLength = 50 * 8; try { KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), iterationCount, outputLength); SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); byte[] keyBytes = skf.generateSecret(spec).getEncoded(); System.out.println(bytesToHex(keyBytes)); } catch (GeneralSecurityException e) { e.printStackTrace(); } } private static String bytesToHex(byte[] bytes) { StringBuilder hexString = new StringBuilder(); for (byte b : bytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } return hexString.toString(); } }Saída:
c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549**** -
Derive o hash em Go.
package main; import "fmt" import "encoding/hex" import "crypto/sha256" import "golang.org/x/crypto/pbkdf2" func main() { password:="yV9H****jNKkvKoLMiypOc5T0OovHXPV" salt:="4f5ff3ce" newPasswd := pbkdf2.Key([]byte(password), []byte(salt), 10000, 50, sha256.New) encodePassword:= hex.EncodeToString(newPasswd) fmt.Println(encodePassword) }Saída:
c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****
-
Calcule uma assinatura MD5 a partir da saída do PBKDF2.
O Algoritmo de Resumo de Mensagem MD5 é uma função de hash criptográfico amplamente utilizada que pode produzir um valor de hash de 128 bits (16 bytes) usado para garantir a integridade e consistência da transmissão de informações.
Construa a string a ser assinada da seguinte forma:
<PBKDF2 Password> + "_" + <current Unix timestamp in seconds>Senha PBKDF2:
c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****Se a hora atual do sistema for 2024-09-20 17:12:13, o timestamp Unix em segundos será
1726823533.String para assinar:
c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****_1726823533Calcule a assinatura MD5 de diferentes maneiras:
Use ferramentas de criptografia online comuns, como MD5.
-
Calcule a assinatura MD5 em Java.
package main; import java.security.MessageDigest; public class MD5 { public static void main(String[] args) { String pbkdfPassword = "c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****"; long timeSeconds=System.currentTimeMillis()/1000; String key=pbkdfPassword+"_"+timeSeconds; System.out.println(MD5.getMD5String(key,"UTF-8")); } public static String getMD5String(String str, String charset) { try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(str.getBytes(charset)); byte[] byteArray = messageDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArray.length; i++) { if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) { md5StrBuff.append("0").append( Integer.toHexString(0xFF & byteArray[i])); } else { md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); } } return md5StrBuff.toString().toLowerCase(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("MD5 error:"+e.getMessage()); } } } -
Calcule a assinatura MD5 em Go.
package main; import ( "crypto/md5" "encoding/hex" "fmt" "io" "time" "strconv" ) func main() { // The string for which you want to calculate the MD5 hash. pbkdfPassword := "c3cd****971bab928e4ecd6e7a00c74657696ea07d38c43f3bb5dc3190f2285cb80695cf7bf2f25c9b1f34fe1e0f9549****" timeSeconds:= time.Now().Unix() key:=pbkdfPassword+"_"+strconv.FormatInt(timeSeconds, 10) // Use the MD5 package to calculate the MD5 hash of the string. hash := md5.New() io.WriteString(hash, key) md5Str := hash.Sum(nil) // Convert the binary MD5 hash to a hexadecimal string. md5StrHex := hex.EncodeToString(md5Str) fmt.Println("MD5 of", key, "is", md5StrHex) }
-
Anexe as informações da assinatura MD5 gerada como parâmetros ao link.
Parâmetros:
Parâmetro
Descrição
Exemplo
aliyun_api_key_sign
Assinatura MD5, que muda com o tempo.
c3bf89b867cc88df72d507edc4d1****
aliyun_api_key_timestamp
Timestamp da assinatura. A assinatura expira se a diferença entre este timestamp e a hora do servidor exceder um minuto.
1726823533
aliyun_api_key_name
Nome do token de conta de serviço.
sa-1---75c7-41ae-94da-**
aliyun_api_key_org_id
ID da organização à qual o token de conta de serviço pertence.
1
aliyun_api_key_expire_seconds
Duração, em segundos, durante a qual a sessão permanece válida após o login com a URL assinada.
Padrão: 3600
Exemplo:
https://grafana-example.grafana.aliyuncs.com/d/TZWea****/test?orgId=1&from=167081684****&to=167083844****&aliyun_api_key_sign=c3bf89b867cc88df72d507edc4d1****&aliyun_api_key_timestamp=1726823533&aliyun_api_key_name=sa-1-******-*****-75c7-41ae-94da-*******&aliyun_api_key_org_id=1Agora é possível gerar programaticamente links mais seguros e sem login para o Grafana, evitando a exposição do token de conta de serviço.
Perguntas frequentes
-
Ao acessar um painel incorporado, a página falha ao carregar e o navegador exibe um erro refused to connect.
Causa possível: O parâmetro allow_embedding não está definido para um painel incorporado. Para configurar o parâmetro allow_embedding, consulte a Etapa 1.
-
O painel não exibe dados. A página mostra uma mensagem Not found e uma notificação de aviso amarela Unauthorized, e a área do painel está vazia.
Para painéis incorporados, esse problema pode ocorrer se o navegador não conseguir gravar um cookie. As possíveis causas incluem:
Solicitações entre domínios: Se os domínios raiz forem diferentes, a configuração padrão impede a gravação de cookies.
O parâmetro cookie_samesite está definido como none, mas o parâmetro cookie_secure está definido como false.
O domínio usa HTTP. Como o parâmetro cookie_secure é ineficaz sobre HTTP, sirva seu domínio via HTTPS.
Solução: Reconfigure os parâmetros do Grafana conforme descrito na Etapa 1.
-
Ao acessar um painel por meio de um link compartilhado, o Grafana exibe o erro If you're seeing this Grafana has failed to load its application files. A página sugere etapas de solução de problemas para configurações de proxy reverso, implantações de subcaminho (verifique
root_urlou definaserve_from_sub_path = true), builds de desenvolvimento local, reinicialização do grafana-server e compatibilidade do navegador.Causas possíveis:
A versão do seu navegador está desatualizada.
-
As configurações do seu navegador estão bloqueando o painel incorporado.
Solução:
Verifique as configurações do seu navegador para permitir cookies.
Se estiver usando o Chrome no modo anônimo, permita todos os cookies.
-
Para incorporação de painéis, devo definir um curto período de validade para uma chave de API e rotacioná-la frequentemente, ou devo configurar uma chave de longa duração?
Configure o período de validade com base nos seus requisitos de segurança. Recomendamos rotacionar a chave a cada três meses. Se uma chave de API for comprometida, exclua-a imediatamente.
-
Existe um limite para o número de chaves de API que posso criar?
O código-fonte do Grafana não impõe um limite rígido. No entanto, a interface só consegue exibir no máximo 100 chaves na página de gerenciamento. Para facilitar a gestão, recomendamos usar 100 chaves ou menos.
-
O sistema exclui automaticamente uma chave de API quando seu período de validade expira?
Não, chaves de API expiradas não são excluídas automaticamente. Elas permanecem no sistema, mas ficam ocultas por padrão. Na página API keys do Grafana, clique em Include expired keys para exibi-las. Ativar a opção Include expired keys mostra os registros das chaves de API expiradas, incluindo nome, função e horário de expiração. Para remover uma chave, clique no botão de exclusão na linha correspondente.