Установка chproxy
chproxy - это http-прокси и балансировщик нагрузки для базы данных ClickHouse, реализованный на go.
Основные возможности:
- индивидуальная маршрутизация и кэширование ответов;
- гибкие ограничения;
- автоматическое продление SSL сертификатов.
Готовим конфигурацию
Создаем файл /etc/chproxy/config.yml
log_debug: true
hack_me_please: true
server:
http:
listen_addr: "10.55.126.27:9090"
users:
- name: "report"
password: "gxuDczvNWMQZS0Bwa9Q7JEnDUN6y"
to_cluster: "ch"
to_user: "default"
max_concurrent_queries: 1000
max_execution_time: 10m
clusters:
- name: "ch"
nodes: [
"10.55.126.3:8123",
"10.55.126.4:8123",
"10.55.126.5:8123"
]
users:
- name: "default"
password: ""
Запуск и проверка
chproxy -config=/etc/chproxy/config.yml &
echo 'select * from logs;' | curl 'http://10.55.126.27:9090/?user=report&password=gxuDczvNWMQZS0Bwa9Q7JEnDUN6y&database=cloud_audit' --data-binary @-
Перемонтируем jdbc
Меняем точку входа jdbc_connection_string из прямого подключения к clickhouse на chproxy в файле etc/logstash/pipelines/clickhouse-get.conf и параметры подключения (jdbc_user и jdbc_password).
cat /
input {
jdbc {
#jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/clickhouse-jdbc-0.4.0.jar"
jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/clickhouse-jdbc-0.4.0.jar"
jdbc_driver_class => "com.clickhouse.jdbc.ClickHouseDriver"
#jdbc_connection_string => "jdbc:clickhouse://10.55.126.3:8123/cloud_audit"
jdbc_connection_string => "jdbc:clickhouse://10.55.126.27:9090/cloud_audit"
#jdbc_user => "grafana"
#jdbc_password => "Grafana_Pass"
jdbc_user => "report"
jdbc_password => "gxuDczvNWMQZS0Bwa9Q7JEnDUN6y"
schedule => "* * * * *"
#statement_filepath => "/etc/logstash/from-scratch.sql"
statement => "select timestamp,source,event.value from logs WHERE timestamp > :sql_last_value ORDER BY timestamp"
tracking_column => "timestamp"
use_column_value => true
}
}
filter {
mutate {
rename => ["timestamp", "update_time" ]
}
}
output {
# stdout { codec => rubydebug { metadata => true } }
#file {
# path => "/tmp/logstash_out.log"
#}
elasticsearch {
hosts => ["http://10.55.126.27:9200"]
manage_template => false
index => "main_vk3-%{+YYYY.MM.dd}"
ilm_rollover_alias => "main_vk3_clickhouse"
ilm_pattern => "000001"
ilm_policy => "main_vk3_clickhouse"
ssl => false
cacert => '/etc/opensearch/tls/client.pem'
ssl_certificate_verification => false
user => "admin"
password => "ES_Seret_pass"
}
}