Регистрация в Openshift 3.11 для внешнего экземпляра ElasticSearch - PullRequest
1 голос
/ 11 марта 2019

У меня есть внешний экземпляр ElasticSearch, который я бы хотел, чтобы Fluentd и Kibana соответственно использовали в OSE 3.11. Экземпляр ES в настоящий момент небезопасен, так как это просто внутренний пилот. Основываясь на документации по OSE здесь (https://docs.openshift.com/container-platform/3.11/install_config/aggregate_logging.html#sending-logs-to-an-external-elasticsearch-instance),, я должен иметь возможность обновить количество переменных ES_ * соответственно в конфигурации развертывания ElasticSearch. Первая проблема заключается в том, что переменные, на которые ссылаются документы, не не существует в конфигурации развертывания ElasticSearch.

Во-вторых, я попытался обновить эти значения с помощью файла инвентаризации. Например, для свойства openshift_logging_es_host в описании указано: Имя службы Elasticsearch, куда Fluentd должен отправлять журналы.

Это были значения из моего инвентарного файла:

openshift_logging_install_logging=true
openshift_logging_es_ops_nodeselector={'node-role.kubernetes.io/infra':'true'}
openshift_logging_es_nodeselector={'node-role.kubernetes.io/infra':'true'}
openshift_logging_es_host='169.xx.xxx.xx'
openshift_logging_es_port='9200'
openshift_logging_es_ops_host='169.xx.xxx.xx'
openshift_logging_es_ops_port='9200'
openshift_logging_kibana_env_vars={'ELASTICSEARCH_URL':'http://169.xx.xxx.xx:9200'}
openshift_logging_es_ca=none
openshift_logging_es_client_cert=none
openshift_logging_es_client_key=none
openshift_logging_es_ops_ca=none
openshift_logging_es_ops_client_cert=none
openshift_logging_es_ops_client_key=none

Единственная вышеупомянутая переменная, которая, кажется, залипает после удаления / установки ведения журнала, - это openshift_logging_kibana_env_vars. Я не уверен, почему другие не были соблюдены - возможно, я упускаю тот, который вызывает использование этих переменных.

В любом случае, после того, как эти попытки потерпели неудачу, я в конце концов нашел значения, установленные в наборе демонов logging-fluentd. Я могу редактировать через CLI или консоль, чтобы установить хост, порт, ключи клиента, сертификаты и т. Д. Я также установил эквиваленты операций. Журналы fluentd подтверждают, что эти значения установлены, однако он пытается использовать https в сочетании со стандартной комбинацией fluentd / changeme id / pwd.

2019-03-08 11:49:00 -0600 [warn]: temporarily failed to flush the buffer. next_retry=2019-03-08 11:54:00 -0600 error_class="Fluent::ElasticsearchOutput::ConnectionFailure" error="Can not reach Elasticsearch cluster ({:host=>\"169.xx.xxx.xx\", :port=>9200, :scheme=>\"https\", :user=>\"fluentd\", :password=>\"obfuscated\"})!" plugin_id="elasticsearch-apps"

Итак, в идеале, я бы хотел установить их в качестве переменных инвентаря, и все просто работает. Если у кого-нибудь есть предложение, чтобы решить эту проблему, пожалуйста, дайте мне знать.

Менее чем идеально, я могу изменить конфигурацию развертывания ES или Fluentd Dameon Set после установки и установить требуемые значения, предполагая, что кто-то знает, как избежать https?

Спасибо за любой вклад, который у вас может быть.

Обновление:

Мне удалось заставить это работать, но не с помощью задокументированных свойств или предоставленного предложения. В итоге я просмотрел различные сборники пьес, чтобы определить используемые переменные. Мне также пришлось настроить взаимный TLS, поскольку, когда я указывал расположение файлов сертификатов как none / undefined, в журналах указывалось «Файл не найден». По сути, ни один или неопределенный не переводится в "", который он пытается открыть в виде файла. Итак, это была волшебная комбинация свойств, которая поможет вам на 99,9% пути.

openshift_logging_es_host=169.xx.xxx.xxx
openshift_logging_fluentd_app_host=169.xx.xxx.xxx
openshift_logging_fluentd_ops_host=169.xx.xxx.xxx
openshift_logging_fluentd_ca_path='/tmp/keys/client-ca.cer'
openshift_logging_fluentd_key_path='/tmp/keys/client.key'
openshift_logging_fluentd_cert_path='/tmp/keys/client.cer'
openshift_logging_fluentd_ops_ca_path='/tmp/keys/client-ca.cer'
openshift_logging_fluentd_ops_key_path='/tmp/keys/client.key'
openshift_logging_fluentd_ops_cert_path='/tmp/keys/client.cer'

Примечания:

  • Вам необходимо скопировать ключи в /tmp/keys до.
  • По завершении вы заметите, что OPS_HOST не будет установлен в наборе демонов. Я оставил это в свойствах выше, так как считаю, что это просто ошибка, и, возможно, она будет исправлена ​​после 3.11, что я и использую. Чтобы настроить это просто oc edit ds/logging-fluentd и измените соответственно.

С этими изменениями данные журнала отправляются моему внешнему экземпляру ES.

1 Ответ

0 голосов
/ 11 марта 2019

Мое предложение является менее идеальным решением, которое отправляет журналы на внешний агрегатор журналов, используя secure-forward.conf, см. Настройка Fluentd для отправки журналов на внешний агрегатор журналов , чтобы узнать больше о сбоях.

Вы можете настроить плагин вывода Flexiblesearch , а также плагин secure_forward без https.

Для экземпляра

# oc edit cm logging-fluentd -n openshift-logging
...
  secure-forward.conf: |
    <store>
      @type elasticsearch
      host external.es.example.com
      port 9200
    </store>
...

ОБНОВЛЕНИЕ : Я протестировал против внешнего fluentd вместо ES, потому что у меня нет внешнего ES экземпляра в моей руке.Для проверки активации журналов я также распечатывал журналы в виде файла во время теста.

  secure-forward.conf: |
    <store>
    @type forward
     <server>
       host external.fluented.example.com
       port 24224
     </server>
    </store>
    <store>
    @type file
    path /var/log/secure-forward-test.log
    </store>

Я проверял, что указанная выше конфигурация может передавать журналы во внешние fluentd и локальные файлы журналов.

...