Expondo métricas
Se você estiver usando o ClickHouse Cloud, poderá expor métricas para o Prometheus usando a integração com o Prometheus.
<prometheus>
<port>9363</port>
<endpoint>/metrics</endpoint>
<metrics>true</metrics>
<asynchronous_metrics>true</asynchronous_metrics>
<events>true</events>
<errors>true</errors>
<histograms>true</histograms>
<dimensional_metrics>true</dimensional_metrics>
</prometheus>
Section `<prometheus.handlers>` can be used to make more extended handlers.
This section is similar to [<http_handlers>](/concepts/features/interfaces/http) but works for prometheus protocols:
```xml
<prometheus>
<port>9363</port>
<handlers>
<my_rule_1>
<url>/metrics</url>
<handler>
<type>expose_metrics</type>
<metrics>true</metrics>
<asynchronous_metrics>true</asynchronous_metrics>
<events>true</events>
<errors>true</errors>
<histograms>true</histograms>
<dimensional_metrics>true</dimensional_metrics>
<labels>
<environment>production</environment>
<shard from_env="SHARD_NAME"></shard>
</labels>
</handler>
</my_rule_1>
</handlers>
</prometheus>
| Name | Default | Description |
|---|---|---|
port | nenhum | Porta usada para servir o protocolo de exposição de métricas. |
endpoint | /metrics | Endpoint HTTP para a coleta de métricas pelo servidor Prometheus. Começa com /. Não deve ser usado com a seção <handlers>. |
url / headers / method | nenhum | Filtros usados para encontrar um handler correspondente para uma requisição. Semelhantes aos campos com os mesmos nomes na seção <http_handlers>. |
metrics | true | Expõe métricas da tabela system.metrics. |
asynchronous_metrics | true | Expõe os valores atuais das métricas da tabela system.asynchronous_metrics. |
events | true | Expõe métricas da tabela system.events. |
errors | true | Expõe o número de erros por código de erro ocorridos desde a última reinicialização do servidor. Essas informações também podem ser obtidas em system.errors. |
histograms | true | Expõe métricas de histograma de system.histogram_metrics |
dimensional_metrics | true | Expõe métricas dimensionais de system.dimensional_metrics |
labels | nenhum | Rótulos constantes adicionados a cada métrica exposta. Cada elemento filho define um rótulo: o nome do elemento é o nome do rótulo (que deve corresponder a [a-zA-Z_][a-zA-Z0-9_]*) e o valor do elemento é o valor do rótulo. Os valores dos rótulos oferecem suporte a substituições de configuração padrão, como o atributo from_env. Um nome de rótulo é rejeitado quando começa com __ (reservado pelo Prometheus) ou quando entra em conflito com um rótulo que este endpoint já grava para uma de suas seções habilitadas. Portanto, o conjunto reservado segue a superfície de exportação ativa do endpoint: le quando histograms está habilitado; os rótulos de ClickHouse_Info (name, version, version_describe, version_major, version_minor, version_patch) quando info está habilitado; e qualquer rótulo usado por uma família de métricas de histograma ou dimensional exposta (por exemplo, group, direction ou operation_type) quando histograms ou dimensional_metrics está habilitado. Como isso depende do que o endpoint realmente expõe, um nome pode ser válido em um endpoint, mas rejeitado em outro. |
127.0.0.1 pelo endereço IP ou hostname do seu servidor ClickHouse):
curl 127.0.0.1:9363/metrics
Protocolo remote-write
O ClickHouse oferece suporte ao protocolo remote-write. Os dados recebidos por esse protocolo são gravados em uma tabela TimeSeries (que deve ser criada previamente).<prometheus>
<port>9363</port>
<handlers>
<my_rule_1>
<url>/write</url>
<handler>
<type>remote_write</type>
<database>db_name</database>
<table>time_series_table</table>
</handler>
</my_rule_1>
</handlers>
</prometheus>
| Name | Default | Description |
|---|---|---|
port | nenhum | Porta usada para expor o protocolo remote-write. |
url / headers / method | nenhum | Filtros usados para encontrar um handler correspondente para uma requisição. Semelhante aos campos de mesmo nome na seção <http_handlers>. |
table | nenhum | O nome de uma tabela TimeSeries para gravar os dados recebidos pelo protocolo remote-write. Esse nome também pode conter, opcionalmente, o nome de um banco de dados. |
database | nenhum | O nome de um banco de dados onde está localizada a tabela especificada na configuração table, caso ele não esteja especificado na configuração table. |
Protocolo remote-read
O ClickHouse oferece suporte ao protocolo remote-read. Os dados são lidos de uma tabela TimeSeries e enviados por esse protocolo.<prometheus>
<port>9363</port>
<handlers>
<my_rule_1>
<url>/read</url>
<handler>
<type>remote_read</type>
<database>db_name</database>
<table>time_series_table</table>
</handler>
</my_rule_1>
</handlers>
</prometheus>
| Nome | Padrão | Descrição |
|---|---|---|
port | nenhum | Porta para atender ao protocolo remote-read. |
url / headers / method | nenhum | Filtros usados para encontrar um handler correspondente para uma solicitação. Semelhante aos campos com os mesmos nomes na seção <http_handlers>. |
table | nenhum | O nome de uma tabela TimeSeries para ler os dados a serem enviados pelo protocolo remote-read. Esse nome também pode, opcionalmente, conter o nome de um banco de dados. |
database | nenhum | O nome de um banco de dados onde está localizada a tabela especificada na configuração table, caso ele não esteja especificado na configuração table. |
Configuração de vários protocolos
É possível especificar vários protocolos em um único lugar:<prometheus>
<port>9363</port>
<handlers>
<my_rule_1>
<url>/metrics</url>
<handler>
<type>expose_metrics</type>
<metrics>true</metrics>
<asynchronous_metrics>true</asynchronous_metrics>
<events>true</events>
<errors>true</errors>
<histograms>true</histograms>
<dimensional_metrics>true</dimensional_metrics>
</handler>
</my_rule_1>
<my_rule_2>
<url>/write</url>
<handler>
<type>remote_write</type>
<table>db_name.time_series_table</table>
</handler>
</my_rule_2>
<my_rule_3>
<url>/read</url>
<handler>
<type>remote_read</type>
<table>db_name.time_series_table</table>
</handler>
</my_rule_3>
</handlers>
</prometheus>