O ClickHouse pode expor suas próprias métricas para coleta pelo 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>
A seção `<prometheus.handlers>` pode ser usada para criar handlers mais avançados.
Esta seção é semelhante a [<http_handlers>](/concepts/features/interfaces/http), mas funciona para protocolos prometheus:
```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>
</handler>
</my_rule_1>
</handlers>
</prometheus>
Configurações:
| 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 |
Verifique (substitua 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>
Configurações:
| 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>
Configurações:
| 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>
Última modificação em 10 de junho de 2026