Конфигурационные параметры ksqlDB
Для конфигурации сервиса используйте следующие параметры, доступные в ADCM.
|
ПРИМЕЧАНИЕ
|
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
Listener port |
Порт, который слушает ksqlDB-server. Указывается в качестве параметра |
8088 |
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
JMX_PORT |
Порт, по которому ksqlDB-server отдает JMX-метрики |
10099 |
LOG_DIR |
Каталог для хранения логов |
/var/log/ksql |
KSQL_HEAP_OPTS |
Размер heap, выделенный процессу ksqlDB-server |
-Xmx3g |
KSQL_JVM_PERFORMANCE_OPTS |
Параметры JVM в части опций PERFORMANCE |
-server -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+ExplicitGCInvokesConcurrent -XX:NewRatio=1 -Djava.awt.headless=true |
CLASSPATH |
Параметр виртуальной машины Java или компилятора Java, который указывает расположение пользовательских классов и пакетов |
/usr/lib/ksql/libs/* |
KSQL_CLASSPATH |
Путь к Java-развертыванию ksqlDB Server и связанных классов Java |
${CLASSPATH} |
KSQL_OPTS |
Переменная среды, указывает параметры конфигурации сервера ksqlDB. Свойства, установленные с помощью |
-Djava.security.auth.login.config=/etc/ksqldb/jaas_config.conf |
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
authentication.method |
Способ аутентификации |
BASIC |
authentication.roles |
Список ролей пользователей, разделенных запятыми. Чтобы авторизоваться на сервере ksqlDB, аутентифицированный пользователь должен принадлежать хотя бы к одной из этих ролей. Подробнее см. Basic-аутентификация |
admin |
authentication.realm |
Cоответствовует разделу в файле jaas_config.file, который определяет, как сервер аутентифицирует пользователей, и должен быть передан как параметр JVM во время запуска сервера |
KsqlServer-Props |
Path to password.properties |
Путь к password.properties |
/etc/ksqldb/password.properties |
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
application.id |
Идентификатор приложения |
ksql-server |
ksql.internal.topic.replicas |
Фактор репликации для внутренних топиков ksqlDB Servers |
1 |
ksql.streams.state.dir |
Каталог хранилища для работы с отслеживанием состояния |
/usr/lib/ksql/state |
ksql.streams.replication.factor |
Основные внутренние топики Kafka Streams |
1 |
ksql.streams.topic.min.insync.replicas |
Минимальное количество брокеров, которые должны иметь данные, записанные в синхронизированные реплики |
2 |
ksql.streams.num.standby.replicas |
Количество реплик для операций с состоянием |
1 |
ksql.streams.producer.acks |
Количество брокеров, которым необходимо подтвердить получение сообщения, прежде чем оно будет считаться успешной записью |
all |
ksql.streams.producer.delivery.timeout.ms |
Срок годности пакетного файла (batch) (в мс) |
2147483647 |
ksql.streams.producer.max.block.ms |
Максимально допустимое время для блокировки производителем (в мс) |
9223372036854775000 |
ssl.endpoint.identification.algorithm |
Алгоритм идентификации конечной точки для проверки сервера |
http |
ssl.keystore.location |
Используется для HTTPS. Расположение файла хранилища ключей для использования SSL |
— |
ssl.keystore.type |
Формат файла keystore |
— |
ssl.keystore.пароль |
Используется для HTTPS. Пароль хранилища для файла |
— |
ssl.key.password |
Используется для HTTPS. Пароль закрытого ключа в файле keystore |
— |
ssl.truststore.location |
Расположение файла truststore |
— |
ssl.truststore.type |
Формат файла хранилища truststore |
— |
ssl.truststore.password |
Используется для HTTPS. Пароль хранилища для файла хранилища truststore |
— |
ksql.schema.registry.ssl.keystore.location |
Расположение файла хранилища ключей SSL |
— |
ksql.schema.registry.ssl.keystore.password |
Пароль для доступа к keystore |
— |
ksql.schema.registry.ssl.key.password |
Пароль ключа, содержащегося в keystore |
— |
ksql.schema.registry.ssl.keystore.type |
Формат файла keystore |
— |
ksql.schema.registry.ssl.truststore.location |
Расположение файла хранилища сертификатов SSL truststore |
— |
ksql.schema.registry.ssl.truststore.password |
Пароль для доступа к хранилищу truststore |
— |
ksql.schema.registry.ssl.truststore.type |
Формат файла хранилища truststore |
— |
Add key, value |
Введенные в этом поле параметры и их значения перезаписывают параметры, указанные в пользовательском интерфейсе ADCM. В этом поле также есть возможность определить значения для всех пользовательских параметров, которые не отображаются в интерфейсе, но разрешены в файле конфигурации server.properties |
— |
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
group.id |
Уникальный идентификатор группы |
ksql-connect-cluster |
key.converter |
Определяет формат данных в Kafka и способ их преобразования в данные Connect |
org.apache.kafka.connect.storage.StringConverter |
key.converter.schema.registry.url |
Расположение ключевых данных ksqlDB |
http://localhost:8081 |
value.converter |
Преобразователь класса для значений ksqlDB data |
io.confluent.connect.avro.AvroConverter |
value.converter.schema.registry.url |
Расположение значений ksqlDB data |
http://localhost:8081 |
config.storage.topic |
Имя внутреннего топика для хранения конфигураций |
ksql-connect-configs |
offset.storage.topic |
Имя внутреннего топика для хранения статистики подключения |
ksql-connect-offsets |
status.storage.topic |
Имя внутреннего топика для хранения статистики состояния подключения |
ksql-connect-statuses |
config.storage.replication.factor |
Фактор репликации для |
1 |
offset.storage.replication.factor |
Фактор репликации для |
1 |
status.storage.replication.factor |
Фактор репликации для |
1 |
internal.key.converter |
Класс преобразователя для внутренних значений с записями соединения |
org.apache.kafka.connect.json.JsonConverter |
internal.value.converter |
Класс преобразователя внутренних значений с записями соединения |
org.apache.kafka.connect.json.JsonConverter |
internal.key.converter.schemas.enable |
Конфигурация схемы для внутренней статистики подключения данных |
false |
Add key, value |
Введенные в этом поле параметры и их значения перезаписывают параметры, указанные в пользовательском интерфейсе ADCM. В этом поле также есть возможность определить значения для всех пользовательских параметров, которые не отображаются в интерфейсе, но разрешены в файле конфигурации connect.properties |
— |
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
interceptor.classes |
Установка нового элемента в объект свойств Java, который вы используете для создания нового источника при отсутствии каких-либо "перехватчиков" (interceptors) |
io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor |
Add key, value |
Введенные в этом поле параметры и их значения перезаписывают параметры, указанные в пользовательском интерфейсе ADCM. В этом поле также есть возможность определить значения для всех пользовательских параметров, которые не отображаются в интерфейсе, но разрешены в файле конфигурации datagen.properties |
— |
Шаблон пользовательского файла jaas.conf предназначен для указания пользовательских данных подключения клиентов других сервисов к текущему сервису (пути к keytab-файлам, параметр useTicketCache и другие). Подробнее см. Настройка пользовательского jaas.conf.
Значение по умолчанию:
{% if cluster.config.basic_auth_default_config is not none %}
{{ services.ksql.config.basic_auth_properties_content['authentication.realm'] }} {
org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required
file="{{ ksql_home_path }}/config/password.properties"
debug="false";
};
{% endif %}
{% if cluster.config.kerberos_client and cluster.config.kerberos_client.enable_kerberos %}
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=false
serviceName="kafka"
keyTab="{{ cluster.config.kerberos_client.keytab_dir }}/ksql-server.service.keytab"
principal="ksql-server/{{ ansible_fqdn }}@{{ cluster.config.kerberos_client.realm }}";
};
{%- elif cluster.config.sasl_plain_auth_default_config is not none %}
{%- set credential = cluster.config.sasl_plain_auth_default_config.sasl_plain_users_data %}
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="ksql-server"
password="{{ credential['ksql-server'] }}";
};
{% endif %}
Конфигурационные параметры компонента ksqlDB Server:
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
log4j.rootLogger |
Настройка уровня ведения логов |
INFO |
log4j.logger.org.reflections |
Настройка уровня вывода предупреждений Reflections |
ERROR |
log4j.logger.org.apache.kafka.streams |
Настройка уровня ведения логов Kafka Streams |
INFO |
log4j.logger.kafka |
Настройка уровня ведения логов брокера Kafka (вывод в server.log и стандартный вывод). См. также |
WARN |
log4j.logger.org.apache.zookeeper |
Настройка ведения логов клиента ZooKeeper |
WARN |
log4j.logger.org.apache.kafka |
Настройка уровня ведения логов брокера Kafka (вывод в server.log и стандартный вывод). См. также |
WARN |
log4j.logger.org.I0Itec.zkclient |
Настройка уровня ведения лога клиента ZooKeeper |
WARN |
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
log4j.logger.io.confluent.ksql.rest.server.resources.KsqlResource |
Запрет ksqlDB выходить из каждого получаемого запроса |
WARN |
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
log4j.logger.io.confluent.ksql.util.KsqlConfig |
Включите во избежание спама журналов значениями KsqlConfig |
WARN |
Шаблон для пользовательской настройки библиотеки логирования log4j.
Значение по умолчанию:
# Maintained by ADCM
{% set ksql_server_log4j_properties_configuration = services.ksql.SERVER.config.log4j_properties_configuration %}
log4j.rootLogger={{ ksql_server_log4j_properties_configuration['log4j.rootLogger'] }}, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c:%L)%n
log4j.appender.streams=org.apache.log4j.ConsoleAppender
log4j.appender.streams.layout=org.apache.log4j.PatternLayout
log4j.appender.streams.layout.ConversionPattern=[%d] %p %m (%c:%L)%n
log4j.logger.org.reflections={{ ksql_server_log4j_properties_configuration['log4j.logger.org.reflections'] }}, stdout
{% if services.ksql.SERVER.config.log4j_logger_io_confluent_ksql_rest_server_resources_KsqlResource['log4j.logger.io.confluent.ksql.rest.server.resources.KsqlResource'] is defined %}
log4j.logger.io.confluent.ksql.rest.server.resources.KsqlResource={{ services.ksql.SERVER.config.log4j_logger_io_confluent_ksql_rest_server_resources_KsqlResource['log4j.logger.io.confluent.ksql.rest.server.resources.KsqlResource'] }}
{% endif %}
{% if services.ksql.SERVER.config.log4j_logger_io_confluent_ksql_util_KsqlConfig['log4j.logger.io.confluent.ksql.util.KsqlConfig'] is defined %}
log4j.logger.io.confluent.ksql.util.KsqlConfig={{ services.ksql.SERVER.config.log4j_logger_io_confluent_ksql_util_KsqlConfig['log4j.logger.io.confluent.ksql.util.KsqlConfig'] }}
{% endif %}
log4j.logger.org.apache.kafka.streams={{ ksql_server_log4j_properties_configuration['log4j.logger.org.apache.kafka.streams'] }}, streams
log4j.additivity.org.apache.kafka.streams=false
log4j.logger.kafka={{ ksql_server_log4j_properties_configuration['log4j.logger.kafka'] }}, stdout
log4j.logger.org.apache.zookeeper={{ ksql_server_log4j_properties_configuration['log4j.logger.org.apache.zookeeper'] }}, stdout
log4j.logger.org.apache.kafka={{ ksql_server_log4j_properties_configuration['log4j.logger.org.apache.kafka'] }}, stdout
log4j.logger.org.I0Itec.zkclient={{ ksql_server_log4j_properties_configuration['log4j.logger.org.I0Itec.zkclient'] }}, stdout
Шаблон для пользовательской настройки файла логирования log4j_rolling_properties.
Значение по умолчанию:
# Maintained by ADCM
{% set broker_port = (services.kafka.config.Main.listeners | regex_replace('.*:(\\d+)$', '\\1')) %}
{% set broker_hosts_with_port = services.kafka.config.bootstrap_servers_without_protocol %}
log4j.rootLogger=INFO, main
# appenders
log4j.appender.main=org.apache.log4j.RollingFileAppender
log4j.appender.main.File=${ksql.log.dir}/ksql.log
log4j.appender.main.layout=org.apache.log4j.PatternLayout
log4j.appender.main.layout.ConversionPattern=[%d] %p %m (%c:%L)%n
log4j.appender.main.MaxFileSize=10MB
log4j.appender.main.MaxBackupIndex=5
log4j.appender.main.append=true
log4j.appender.streams=org.apache.log4j.RollingFileAppender
log4j.appender.streams.File=${ksql.log.dir}/ksql-streams.log
log4j.appender.streams.layout=org.apache.log4j.PatternLayout
log4j.appender.streams.layout.ConversionPattern=[%d] %p %m (%c:%L)%n
log4j.appender.kafka=org.apache.log4j.RollingFileAppender
log4j.appender.kafka.File=${ksql.log.dir}/ksql-kafka.log
log4j.appender.kafka.layout=org.apache.log4j.PatternLayout
log4j.appender.kafka.layout.ConversionPattern=[%d] %p %m (%c:%L)%n
log4j.appender.kafka.MaxFileSize=10MB
log4j.appender.kafka.MaxBackupIndex=5
log4j.appender.kafka.append=true
log4j.appender.kafka_appender=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.kafka_appender.layout=io.confluent.common.logging.log4j.StructuredJsonLayout
log4j.appender.kafka_appender.BrokerList=
{%- for host_with_port in broker_hosts_with_port.split(',') -%}
{% if loop.index > 1 %},{% endif -%}
{{ ('ssl' in cluster.multi_state) | ternary('https', 'http') }}://{{ host_with_port -}}
{% endfor %}
log4j.appender.kafka_appender.Topic=default_ksql_processing_log
log4j.appender.kafka_appender.SyncSend=true
log4j.appender.kafka_appender.IgnoreExceptions=false
{% if cluster.edition == 'enterprise' %}
{% set sasl_protocol = services.kafka.config['listeners_option']['sasl_protocol'] | d('none') %}
{% set ssl_enable = services.kafka.config['listeners_option']['ssl_enable'] | d(False) %}
log4j.appender.kafka_appender.SecurityProtocol={{ sasl_protocol | kafka_protocol(ssl_enable) }}
log4j.appender.kafka_appender.SaslMechanism={{ sasl_protocol | normalize_sasl_protocol }}
{% if sasl_protocol | normalize_sasl_protocol == 'PLAIN' %}
log4j.appender.kafka_appender.clientJaasConf=org.apache.kafka.common.security.plain.PlainLoginModule required \
username=ksql-server \
password="{{ cluster.config.sasl_plain_auth_default_config.sasl_plain_users_data['ksql-server'] }}";
{% endif %}
{% if sasl_protocol | normalize_sasl_protocol == 'GSSAPI' %}
log4j.appender.kafka_appender.SaslKerberosServiceName=kafka
log4j.appender.kafka_appender.clientJaasConf=com.sun.security.auth.module.Krb5LoginModule required \
useKeyTab=true \
storeKey=true \
keyTab="{{ cluster.config.kerberos_client.keytab_dir }}/ksql-server.service.keytab" \
principal="ksql-server/{{ ansible_fqdn }}@{{ cluster.config.kerberos_client.realm }}" \
serviceName="kafka";
{% endif %}
{% if ssl_enable %}
log4j.appender.kafka_appender.SslTruststoreLocation={{ services.kafka.config.server_properties_content['ssl.truststore.location'] }}
log4j.appender.kafka_appender.SslTruststorePassword={{ services.kafka.config.server_properties_content['ssl.truststore.password'] }}
{% endif %}
{% endif %}
# loggers
log4j.logger.org.reflections=ERROR, main
# Uncomment the following line to stop ksqlDB from logging out each request it receives:
#log4j.logger.io.confluent.ksql.rest.server.resources.KsqlResource=WARN
# And this one to avoid the logs being spammed with KsqlConfig values.
# Though these can be useful for debugging / investigations.
#log4j.logger.io.confluent.ksql.util.KsqlConfig=WARN
## ksqlDB Processing logs:
log4j.logger.processing=WARN, kafka_appender
log4j.additivity.processing=false
## Kafka Streams logs:
log4j.logger.org.apache.kafka.streams=INFO, streams
log4j.additivity.org.apache.kafka.streams=false
## Kafka Clients logs:
log4j.logger.org.apache.kafka.clients=INFO, clients
log4j.additivity.org.apache.kafka.clients=false
## Kafka Connect logs:
log4j.logger.org.apache.kafka.connect=INFO, connect
log4j.additivity.org.apache.kafka.connect=false
## Other Kafka logs:
log4j.logger.kafka=WARN, kafka
log4j.additivity.kafka=false
log4j.logger.org.apache.zookeeper=WARN, kafka
log4j.additivity.org.apache.zookeeper=false
log4j.logger.org.apache.kafka=WARN, kafka
log4j.additivity.org.apache.kafka=false
log4j.logger.org.I0Itec.zkclient=WARN, kafka
log4j.additivity.org.I0Itec.zkclient=false
# To achieve high throughput on pull queries, avoid logging every request from Jetty
log4j.logger.io.confluent.rest-utils.requests=WARN
ksql_migrations_log4j_properties_template
# Root logger -- disable all non-migrations-tool logging
log4j.rootLogger=OFF
# Migrations tool logger
log4j.logger.io.confluent.ksql.tools.migrations=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
Шаблон для пользовательской настройки файла логирования log4j_file_properties.
Значение по умолчанию:
#
# Copyright 2018 Confluent Inc.
#
# Licensed under the Confluent Community License (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# http://www.confluent.io/confluent-community-license
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
# For the general syntax of property based configuration files see
# the documentation of org.apache.log4j.PropertyConfigurator.
log4j.rootLogger=WARN, default.file
log4j.appender.default.file=io.confluent.ksql.util.TimestampLogFileAppender
log4j.appender.default.file.ImmediateFlush=true
log4j.appender.default.file.append=false
log4j.appender.default.file.file=${ksql.log.dir}/ksql-cli/cli-%timestamp.log
log4j.appender.default.file.layout=org.apache.log4j.PatternLayout
log4j.appender.default.file.layout.ConversionPattern=[%d] %p %m (%c:%L)%n
Шаблон для пользовательской настройки файла логирования log4j_silent_properties.
Значение по умолчанию:
#
# Copyright 2018 Confluent Inc.
#
# Licensed under the Confluent Community License (the "License"); you may not use
# this file except in compliance with the License. You may obtain a copy of the
# License at
#
# http://www.confluent.io/confluent-community-license
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
#
log4j.rootLogger=OFF