

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Etiquetas y anotaciones
<a name="v10-alerting-overview-labels"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 10.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 9.x de Grafana, consulte [Uso de la versión 9 de Grafana](using-grafana-v9.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

Las etiquetas y anotaciones contienen información sobre una alerta. Tanto las etiquetas como las anotaciones tienen la misma estructura: un conjunto de valores con nombre; sin embargo, sus usos previstos son diferentes. Un ejemplo de etiqueta, o de anotación equivalente, podría ser `alertname="test"`.

La principal diferencia entre una etiqueta y una anotación es que las etiquetas se utilizan para diferenciar una alerta de todas las demás alertas, mientras que las anotaciones se utilizan para agregar información adicional a una alerta existente.

Por ejemplo, pensemos en dos alertas de uso elevado de la CPU: una para `server1` y otra para `server2`. En este ejemplo, podríamos tener una etiqueta denominada `server` en la que la primera alerta tenga la etiqueta `server="server1"` y la segunda alerta tenga la etiqueta `server="server2"`. Sin embargo, es posible que también queramos agregar una descripción a cada alerta, como `"The CPU usage for server1 is above 75%."`, dónde `server1` y `75%` se sustituyen por el nombre y el uso de la CPU del servidor (consulte la documentación sobre [Plantillas de etiquetas y anotaciones](v10-alerting-overview-labels-templating.md) para ver cómo hacerlo). Este tipo de descripción sería más adecuada como anotación.

## Etiquetas
<a name="v10-alerting-overview-labels-labels"></a>

Las etiquetas contienen información que identifica una alerta. Un ejemplo de etiqueta podría ser `server=server1`. Cada alerta puede tener más de una etiqueta y el conjunto completo de etiquetas de una alerta se denomina conjunto de etiquetas. Es este conjunto de etiquetas el que identifica la alerta.

Por ejemplo, una alerta puede tener el conjunto de etiquetas `{alertname="High CPU usage",server="server1"}`, mientras que otra alerta puede tener el conjunto de etiquetas `{alertname="High CPU usage",server="server2"}`. Son dos alertas independientes porque, aunque sus etiquetas `alertname` son las mismas, las etiquetas `server` son diferentes.

El conjunto de etiquetas de una alerta es una combinación de las etiquetas del origen de datos, las etiquetas personalizadas de la regla de alerta y una serie de etiquetas reservadas, como `alertname`.

**Etiquetas personalizadas**

Las etiquetas personalizadas son etiquetas adicionales de la regla de alerta. Al igual que las anotaciones, las etiquetas personalizadas deben tener un nombre y su valor puede contener una combinación de texto y código de plantilla que se evalúa cuando se activa una alerta. La documentación sobre cómo crear etiquetas personalizadas de plantillas se encuentra [aquí](v10-alerting-overview-labels-templating.md).

Al utilizar etiquetas personalizadas con las plantillas, es importante asegurarse de que el valor de la etiqueta no cambie entre evaluaciones consecutivas de la regla de alerta, ya que esto acabará creando un gran número de alertas distintas. Sin embargo, no importa que la plantilla produzca valores de etiqueta diferentes para alertas diferentes. Por ejemplo, no coloque el valor de la consulta en una etiqueta personalizada, ya que esto acabará creando un nuevo conjunto de alertas cada vez que cambie el valor. En su lugar, utilice anotaciones.

También es importante asegurarse de que la etiqueta configurada para una alerta no tenga dos o más etiquetas con el mismo nombre. Si una etiqueta personalizada tiene el mismo nombre que una etiqueta del origen de datos, la sustituirá. Sin embargo, si una etiqueta personalizada tiene el mismo nombre que una etiqueta reservada, la etiqueta personalizada se omitirá en la alerta.

## Anotaciones
<a name="v10-alerting-overview-labels-annotations"></a>

Las anotaciones son pares con nombres que agregan información adicional a las alertas existentes. Hay una serie de anotaciones sugeridas en Grafana, como `description`, `summary`, `runbook_url`, `dashboardUId` y `panelId`. Al igual que las etiquetas personalizadas, las anotaciones deben tener un nombre y su valor puede contener una combinación de texto y código de plantilla que se evalúa cuando se activa una alerta. Si una anotación contiene código de plantilla, la plantilla se evalúa una vez cuando se activa la alerta. No se vuelve a evaluar, aunque se resuelva la alerta. La documentación sobre cómo crear anotaciones de plantillas se encuentra [aquí](v10-alerting-overview-labels-templating.md).

**Topics**
+ [Etiquetas](#v10-alerting-overview-labels-labels)
+ [Anotaciones](#v10-alerting-overview-labels-annotations)
+ [Cómo funciona la búsqueda de coincidencias de etiquetas](v10-alerting-overview-labels-matching.md)
+ [Etiquetas en Grafana Alerting](v10-alerting-overview-labels-alerting.md)
+ [Plantillas de etiquetas y anotaciones](v10-alerting-overview-labels-templating.md)

# Cómo funciona la búsqueda de coincidencias de etiquetas
<a name="v10-alerting-overview-labels-matching"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 10.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 9.x de Grafana, consulte [Uso de la versión 9 de Grafana](using-grafana-v9.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

Use etiquetas y comparadores de etiquetas para vincular las reglas de alerta con las políticas de notificaciones y los silencios. Esto ofrece una forma muy flexible de administrar las instancias de alerta, especificar qué política debe gestionarlas y qué alertas silenciar.

Un comparador de etiquetas consta de 3 partes distintas: la **etiqueta**, el **valor** y el **operador**.
+ El campo **Etiqueta** es el nombre de la etiqueta que debe coincidir. Debe coincidir exactamente con el nombre de la etiqueta.
+ El campo **Valor** coincide con el valor correspondiente al nombre de **Etiqueta** especificado. La forma en que coincide depende del valor de **Operador**.
+ El campo **Operador** es el operador que debe coincidir con el valor de la etiqueta. Los operadores disponibles son:


| Operador | Description (Descripción) | 
| --- | --- | 
| `=` | Selecciona etiquetas que son exactamente iguales al valor. | 
| `!=` | Selecciona etiquetas que no son iguales al valor. | 
| `=~` | Selecciona etiquetas que buscan expresiones regulares que coincidan con el valor. | 
| `!~` | Selecciona etiquetas que buscan expresiones regulares que no coincidan con el valor. | 

Si utiliza varios criterios de comparación de etiquetas, se combinan mediante el operador lógico AND. Esto significa que todos los criterios de comparación deben coincidir para poder vincular una regla a una política.

## Ejemplo
<a name="v10-alerting-overview-labels-matching-ex"></a>

Si define el siguiente conjunto de etiquetas para su alerta:

```
{ foo=bar, baz=qux, id=12 }
```

entonces:
+ Un comparador de etiquetas definido como `foo=bar` busca coincidencias con esta regla de alerta.
+ Un comparador de etiquetas definido como `foo!=bar` *no* busca coincidencias con esta regla de alerta.
+ Un comparador de etiquetas definido como `id=~[0-9]+` busca coincidencias con esta regla de alerta.
+ Un comparador de etiquetas definido como `baz!~[0-9]+` busca coincidencias con esta regla de alerta.
+ Dos comparadores de etiquetas definidos como `foo=bar` y `id=~[0-9]+` buscan coincidencias con esta regla de alerta.

## Exclusión de etiquetas
<a name="v10-alerting-overview-labels-matching-exclude"></a>

También puede escribir criterios de coincidencia de etiquetas para excluirlas.

Este es un ejemplo que muestra cómo excluir la etiqueta `team`. Puede elegir entre cualquiera de estos valores para excluir la etiqueta.
+ `team=""`
+ `team!~.+`
+ `team=~^$`

# Etiquetas en Grafana Alerting
<a name="v10-alerting-overview-labels-alerting"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 10.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 9.x de Grafana, consulte [Uso de la versión 9 de Grafana](using-grafana-v9.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

En este tema se explica por qué las etiquetas son un componente fundamental de las alertas.
+ El conjunto completo de etiquetas de una alerta lo que la identifica de forma única entre las alertas de Grafana.
+ El Alertmanager utiliza etiquetas para hacer coincidir las alertas con los silencios y los grupos de alertas en las políticas de notificaciones.
+ En la interfaz de usuario de alertas se muestran etiquetas para cada instancia de alerta generada durante la evaluación de esa regla.
+ Los puntos de contacto pueden acceder a las etiquetas para generar dinámicamente notificaciones que contienen información específica de la alerta que está dando lugar a una notificación.
+ Puede agregar etiquetas a una [regla de alerta](v10-alerting-configure.md). Las etiquetas se configuran manualmente, usan funciones de plantilla y pueden hacer referencia a otras etiquetas. Las etiquetas agregadas a una regla de alerta tienen prioridad en caso de colisión entre etiquetas (excepto en el caso de las etiquetas reservadas de Grafana, a continuación puede obtener más información).

## Compatibilidad con un Alertmanager externo
<a name="v10-alerting-overview-labels-alerting-external"></a>

El Alertmanager integrado de Grafana admite claves y valores de etiquetas Unicode. Si usa un Prometheus Alertmanager externo, las claves de etiqueta deben ser compatibles con su [modelo de datos](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). Esto significa que las claves de etiqueta solo deben contener **letras ASCII**, **números** y **guiones bajos** y coincidir con la expresión regular `[a-zA-Z_][a-zA-Z0-9_]*`. El motor de Grafana Alerting eliminará o sustituirá todos los caracteres no válidos antes de enviarlos al administrador de alertas externo de acuerdo con las siguientes reglas:
+ `Whitespace` se eliminará.
+ `ASCII characters` se reemplazará por `_`.
+ `All other characters` se reemplazará por su representación hexadecimal en minúsculas. Si este es el primer carácter, tendrá el prefijo `_`.

**nota**  
Si se sanean varias claves de etiqueta con el mismo valor, a los duplicados se les agregará un hash corto de la etiqueta original como sufijo.

## Etiquetas reservadas de Grafana
<a name="v10-alerting-overview-labels-alerting-reserved"></a>

**nota**  
Grafana reserva las etiquetas con el prefijo `grafana_` para un uso especial. Si se agrega una etiqueta configurada manualmente que empiece por `grafana_`, se sobrescribirá en caso de colisión.

Las etiquetas reservadas de Grafana se pueden utilizar de la misma forma que las etiquetas configuradas manualmente. La lista actual de etiquetas reservadas disponibles es:


| Etiqueta | Description (Descripción) | 
| --- | --- | 
| grafana\$1folder | Título de la carpeta que contiene la alerta. | 

# Plantillas de etiquetas y anotaciones
<a name="v10-alerting-overview-labels-templating"></a>

****  
Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la **versión 10.x de Grafana**.  
Para los espacios de trabajo de Grafana que admiten la versión 9.x de Grafana, consulte [Uso de la versión 9 de Grafana](using-grafana-v9.md).  
Para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana, consulte [Uso de la versión 8 de Grafana](using-grafana-v8.md).

Puede utilizar plantillas para incluir datos de consultas y expresiones en etiquetas y anotaciones. Por ejemplo, es posible que desee establecer la etiqueta de gravedad de una alerta en función del valor de la consulta o utilizar la etiqueta de instancia de la consulta en una anotación de resumen para saber qué servidor hace un uso elevado de la CPU.

Todas las plantillas deben escribirse en [texto/plantilla](https://pkg.go.dev/text/template). Independientemente de si va a crear una plantilla para una etiqueta o una anotación, debe escribir cada plantilla en línea dentro de la etiqueta o anotación para la que esté creando la plantilla. Esto significa que no puede compartir plantillas entre etiquetas y anotaciones, sino que tendrá que copiar las plantillas donde quiera usarlas.

Cada plantilla se evalúa siempre que se evalúa la regla de alerta y se evalúa para cada alerta por separado. Por ejemplo, si la regla de alerta tiene una anotación resumida basada en una plantilla y la regla de alerta tiene 10 alertas de activación, la plantilla se ejecutará 10 veces, una para cada alerta. En la medida de lo posible, evite hacer cálculos costosos en las plantillas.

## Ejemplos
<a name="v10-alerting-overview-labels-templating-examples"></a>

En lugar de escribir un tutorial completo, text/template, the following examples attempt to show the most common use-cases we have seen for templates. You can use these examples verbatim, or adapt them as necessary for your use case. For more information about how to write text/template consulte la documentación de [texto/plantilla](https://pkg.go.dev/text/template).

**Impresión de todas las etiquetas, separadas por comas**

Para imprimir todas las etiquetas, separadas por comas, imprima la variable `$labels`:

```
{{ $labels }}
```

Por ejemplo, si aparece una alerta con las etiquetas `alertname=High CPU usage`, `grafana_folder=CPU alerts` y `instance=server1`, imprimiría: 

```
alertname=High CPU usage, grafana_folder=CPU alerts, instance=server1
```

**nota**  
Si utiliza condiciones clásicas, `$labels` no contendrá ninguna etiqueta de la consulta. Consulte [la variable \$1labels](#v10-alerting-overview-labels-templating-the-labels-variable) para obtener más información.

**Impresión de todas las etiquetas, una por línea**

Para imprimir todas las etiquetas, una por línea, usa `range` a para iterar sobre cada key/value par e imprimirlas individualmente. Aquí, `$k` hace referencia al nombre y `$v`, al valor de la etiqueta actual: 

```
{{ range $k, $v := $labels -}}
{{ $k }}={{ $v }}
{{ end }}
```

Por ejemplo, si aparece una alerta con las etiquetas `alertname=High CPU usage`, `grafana_folder=CPU alerts` y `instance=server1`, imprimiría:

```
alertname=High CPU usage
grafana_folder=CPU alerts
instance=server1
```

**nota**  
Si utiliza condiciones clásicas, `$labels` no contendrá ninguna etiqueta de la consulta. Consulte [la variable \$1labels](#v10-alerting-overview-labels-templating-the-labels-variable) para obtener más información.

**Impresión de una etiqueta individual**

Para imprimir una etiqueta individual, utilice la función `index` con la variable `$labels`: 

```
The host {{ index $labels "instance" }} has exceeded 80% CPU usage for the last 5 minutes
```

Por ejemplo, si aparece una alerta con la etiqueta `instance=server1`, se imprimiría:

```
The host server1 has exceeded 80% CPU usage for the last 5 minutes
```

**nota**  
Si utiliza condiciones clásicas, `$labels` no contendrá ninguna etiqueta de la consulta. Consulte [la variable \$1labels](#v10-alerting-overview-labels-templating-the-labels-variable) para obtener más información.

**Impresión del valor de una consulta**

Para imprimir el valor de una consulta instantánea, puede imprimir su identificador de referencia mediante la función `index` y la variable `$values`: 

```
{{ index $values "A" }}
```

Por ejemplo, si una consulta instantánea devuelve el valor 81,2345, se imprimirá:

```
81.2345
```

Para imprimir el valor de una consulta de rango, primero debe reducirla de una serie temporal a un vector instantáneo con una expresión reducida. A continuación, puede imprimir el resultado de la expresión reducida mediante su identificador de referencia en su lugar. Por ejemplo, si la expresión reducida toma el promedio de A y tiene el RefID B, escribiría: 

```
{{ index $values "B" }}
```

**Impresión del valor para personas de una consulta**

Para imprimir el valor para personas de una consulta instantánea, utilice la función `humanize`:

```
{{ humanize (index $values "A").Value }}
```

Por ejemplo, si una consulta instantánea devuelve el valor 81,2345, se imprimirá: 

```
81.234
```

Para imprimir el valor para personas de una consulta de rango, primero debe reducirla de una serie temporal a un vector instantáneo con una expresión reducida. A continuación, puede imprimir el resultado de la expresión reducida mediante su identificador de referencia en su lugar. Por ejemplo, si la expresión reducida toma el promedio de A y tiene el RefID B, escribiría: 

```
{{ humanize (index $values "B").Value }}
```

**Impresión del valor de una consulta como porcentaje**

Para imprimir el valor de una consulta instantánea como un porcentaje, utilice la función `humanizePercentage`:

```
{{ humanizePercentage (index $values "A").Value }}
```

Esta función espera que el valor sea un número decimal entre 0 y 1. Si, por el contrario, el valor es un número decimal entre 0 y 100, puede dividirlo entre 100 en la consulta o mediante una expresión matemática. Si la consulta es una consulta de rango, primero debe reducirla de una serie temporal a un vector instantáneo con una expresión reducida.

**Establecimiento de una gravedad a partir del valor de una consulta**

Para establecer una etiqueta de gravedad a partir del valor de una consulta, utilice una instrucción if y la función de comparación mayor que. Asegúrese de utilizar decimales (`80.0`,,`50.0`, etc.) al hacer comparaciones`0.0`, `$values` ya que no text/template admite la coerción de tipos. Puede encontrar una lista de todas las funciones de comparación admitidas [aquí](https://pkg.go.dev/text/template#hdr-Functions).

```
{{ if (gt $values.A.Value 80.0) -}}
high
{{ else if (gt $values.A.Value 50.0) -}}
medium
{{ else -}}
low
{{- end }}
```

**Impresión de todas las etiquetas a partir de una condición clásica**

No puede utilizar `$labels` para imprimir etiquetas a partir de la consulta si utiliza las condiciones clásicas y debe utilizar `$values` en su lugar. Esto se debe a que las condiciones clásicas descartan estas etiquetas para aplicar un comportamiento unidimensional (como máximo una alerta por regla de alerta). Si las condiciones clásicas no descartaran estas etiquetas, las consultas que devolvieran varias series temporales harían que las alertas oscilaran entre activadas y resueltas constantemente, ya que las etiquetas cambiarían cada vez que se evaluara la regla de alerta.

En cambio, la variable `$values` contiene los valores reducidos de todas las series temporales para todas las condiciones que se activen. Por ejemplo, si tiene una regla de alerta con una consulta A que devuelve dos series temporales y una condición B clásica con dos condiciones, `$values` contendría `B0`, `B1`, `B2` y `B3`. Si la condición clásica B tuviera solo una condición, `$values` contendría solo `B0` y `B1`.

Para imprimir todas las etiquetas de todas las series temporales de activación, utilice la siguiente plantilla (asegúrese de sustituir `B` de la expresión regular por el RefID de la condición clásica si es diferente): 

```
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Labels }}{{ end }}
{{ end }}
```

Por ejemplo, una condición clásica para dos series temporales que superen una sola condición imprimiría: 

```
B0: instance=server1
B1: instance=server2
```

Si la condición clásica tiene dos o más condiciones y una serie temporal supera varias condiciones al mismo tiempo, sus etiquetas se duplicarán para cada condición que se supere: 

```
B0: instance=server1
B1: instance=server2
B2: instance=server1
B3: instance=server2
```

Si necesita imprimir etiquetas únicas, debería considerar la posibilidad de cambiar las reglas de alerta de unidimensionales a multidimensionales. Para ello, sustituya la condición clásica por expresiones de reducción y matemáticas.

**Impresión de todos los valores a partir de una condición clásica**

Para imprimir todos los valores de una condición clásica, tome el ejemplo anterior y sustituya `$v.Labels` por `$v.Value`: 

```
{{ range $k, $v := $values -}}
{{ if (match "B[0-9]+" $k) -}}
{{ $k }}: {{ $v.Value }}{{ end }}
{{ end }}
```

Por ejemplo, una condición clásica para dos series temporales que superen una sola condición imprimiría: 

```
B0: 81.2345
B1: 84.5678
```

Si la condición clásica tiene dos o más condiciones y una serie temporal supera varias condiciones al mismo tiempo, `$values` contendrá los valores de todas las condiciones: 

```
B0: 81.2345
B1: 92.3456
B2: 84.5678
B3: 95.6789
```

## Variables
<a name="v10-alerting-overview-labels-templating-variables"></a>

Las siguientes variables están disponibles al crear plantillas de etiquetas y anotaciones:

### Variable de etiquetas
<a name="v10-alerting-overview-labels-templating-the-labels-variable"></a>

La variable `$labels` contiene todas las etiquetas de la consulta. Por ejemplo, supongamos que tiene una consulta que devuelve el uso de la CPU de todos los servidores y tiene una regla de alerta que se activa cuando alguno de los servidores ha superado el 80 % de uso de la CPU durante los últimos 5 minutos. Quiere agregar una anotación de resumen a la alerta que indique qué servidor hace un uso elevado de la CPU. Con la variable `$labels`, puede escribir una plantilla que imprima una oración legible por personas, como: 

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes
```

**nota**  
Si utiliza una condición clásica, `$labels` no contendrá ninguna etiqueta de la consulta. Las condiciones clásicas descartan estas etiquetas para aplicar un comportamiento unidimensional (como máximo una alerta por regla de alerta). Si quiere utilizar las etiquetas de la consulta en la plantilla, siga el ejemplo anterior *Impresión de todas las etiquetas a partir de una condición clásica*.

### Valor de la variable
<a name="v10-alerting-overview-labels-templating-the-value-variable"></a>

La variable `$value` es una cadena que contiene las etiquetas y los valores de todas las consultas instantáneas, las expresiones de umbral, reducción y matemáticas, así como las condiciones clásicas de la regla de alerta. No contiene los resultados de las consultas de rango, ya que pueden devolver entre 10 y 10 000 filas o métricas. Si lo hiciera, para consultas especialmente grandes, una sola alerta podría consumir decenas de segundos MBs de memoria y Grafana se quedaría sin memoria muy rápidamente.

Para imprimir la variable `$value` en el resumen, escribiría algo como esto: 

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ $value }}
```

Y tendría un aspecto similar al siguiente:

```
CPU usage for instance1 has exceeded 80% for the last 5 minutes: [ var='A' labels={instance=instance1} value=81.234 ]
```

Aquí `var='A'` se refiere a la consulta instantánea con el identificador de referencia A, `labels={instance=instance1}` se refiere a las etiquetas y `value=81.234` al uso medio de la CPU en los últimos 5 minutos.

Si quiere imprimir solo una parte de la cadena en lugar de la cadena completa, utilice la variable `$values`. Contiene la misma información que `$value`, pero en una tabla estructurada, y es mucho más fácil de usar que escribir una expresión regular para que coincida solo con el texto deseado.

### Variable de valores
<a name="v10-alerting-overview-labels-templating-the-values-variable"></a>

La `$values` variable es una tabla que contiene las etiquetas y los valores de punto flotante de todas las consultas y expresiones instantáneas, indexadas por su referencia. IDs

Para imprimir el valor de la consulta instantánea con el RefID A:

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ index $values "A" }}
```

Por ejemplo, en el caso de una alerta con las etiquetas `instance=server1` y una consulta instantánea con el valor `81.2345`, imprimiría:

```
CPU usage for instance1 has exceeded 80% for the last 5 minutes: 81.2345
```

Si la consulta en el ID de referencia A es una consulta de rango en lugar de una consulta instantánea, agregue una expresión de reducción con el ID de referencia B y sustituya `(index $values "A")` por `(index $values "B")`:

```
CPU usage for {{ index $labels "instance" }} has exceeded 80% for the last 5 minutes: {{ index $values "B" }}
```

## Funciones
<a name="v10-alerting-overview-labels-templating-functions"></a>

Las siguientes funciones están disponibles al crear plantillas de etiquetas y anotaciones:

**args**

La función `args` traduce una lista de objetos a un mapa con las claves arg0, arg1, etc. El objetivo es permitir que se pasen varios argumentos a las plantillas.

```
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}}
```

```
1 2
```

**externalURL**

La función `externalURL` devuelve la URL externa del servidor Grafana.

```
{{ externalURL }}
```

```
https://example.com/grafana
```

**graphLink**

La función `graphLink` devuelve la ruta a la vista gráfica en [Explore en la versión 10 de Grafana](v10-explore.md) para la expresión y el origen de datos indicados.

```
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```

```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}]
```

**humanize**

La función `humanize` humaniza los números decimales.

```
{{ humanize 1000.0 }}
```

```
1k
```

**humanize1024**

`humanize1024` funciona de manera similar a `humanize`, pero usa 1024 como base en lugar de 1000.

```
{{ humanize1024 1024.0 }}
```

```
1ki
```

**humanizeDuration**

La función `humanizeDuration` humaniza una duración en segundos.

```
{{ humanizeDuration 60.0 }}
```

```
1m 0s
```

**humanizePercentage**

La función `humanizePercentage` humaniza un valor de relación en porcentaje.

```
{{ humanizePercentage 0.2 }}
```

```
20%
```

**humanizeTimestamp**

La función `humanizeTimestamp` humaniza una marca de tiempo Unix.

```
{{ humanizeTimestamp 1577836800.0 }}
```

```
2020-01-01 00:00:00 +0000 UTC
```

**match**

La función `match` hace coincidir el texto con un patrón de expresión regular.

```
{{ match "a.*" "abc" }}
```

```
true
```

**pathPrefix**

La función `pathPrefix` devuelve la ruta del servidor Grafana.

```
{{ pathPrefix }}
```

```
/grafana
```

**tableLink**

La función `tableLink` devuelve la ruta a la vista tabular en [Explore en la versión 10 de Grafana](v10-explore.md) para la expresión y el origen de datos indicados.

```
{{ tableLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }}
```

```
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}]
```

**title**

La función `title` pone en mayúscula el primer carácter de cada palabra.

```
{{ title "hello, world!" }}
```

```
Hello, World!
```

**toLower**

La función `toLower` devuelve todo el texto en minúsculas.

```
{{ toLower "Hello, world!" }}
```

```
hello, world!
```

**toUpper**

La función `toUpper` devuelve todo el texto en mayúsculas.

```
{{ toUpper "Hello, world!" }}
```

```
HELLO, WORLD!
```

**reReplaceAll**

La función `reReplaceAll` reemplaza el texto que coincide con la expresión regular.

```
{{ reReplaceAll "localhost:(.*)" "example.com:$1" "localhost:8080" }}
```

```
example.com:8080
```