1

我在我的应用程序中使用 kibana7.5.2

下面是使用的dockerfile

FROM node:10.15.2-alpine
LABEL maintainer "AppInfra"

ENV VERSION 7.5.2

ENV PATH /usr/share/kibana/bin:$PATH

ADD kibana-${VERSION}-linux-x86_64.tar.gz /usr/share/

RUN mv /usr/share/kibana-$VERSION-linux-x86_64 /usr/share/kibana && \
    addgroup -g 1111 myuser && \
    adduser -D -u 1111 -G myuser myuser && \
    echo "http://mynexusurl:8082/main"  >> /etc/apk/repositories && \
    echo "http://mynexusurl:8082/community"  >> /etc/apk/repositories && \
    apk add --no-cache su-exec libc6-compat gcompat && \
    sed -i 's,NODE="${DIR}/node/bin/node",NODE="/usr/local/bin/node",g' /usr/share/kibana/bin/kibana-plugin && \
    sed -i 's,NODE="${DIR}/node/bin/node",NODE="/usr/local/bin/node",g'  /usr/share/kibana/bin/kibana && \
    rm -rf /usr/share/kibana/node && \
    rm -rf /usr/share/kibana/x-pack* && \
    chown -R myuser:myuser /usr/share/kibana


COPY kibana.yml /usr/share/kibana/config/kibana.yml
COPY docker-entrypoint.sh /

RUN chmod 755 /docker-entrypoint.sh
USER myuser
#RUN /usr/share/kibana/bin/kibana 2>&1 | grep -m 1 "Optimization of .* complete in .* seconds"

WORKDIR /usr/share/kibana

EXPOSE 5601


#USER myuser
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["kibana"]

和 entrypoint.sh 是

#!/bin/sh
set -e
# Run as user "kibana" if the command is "kibana"
if [ "$1" = 'kibana' ]
then
if [ "$ELASTICSEARCH_URL" ]
        then
                sed -ri "s!^(\#\s*)?(elasticsearch\.hosts: ).*!\2 [ \"$ELASTICSEARCH_URL\" ]!" /usr/share/kibana/config/kibana.yml
        fi

fi
exec "$@"

环境变量是 ELASTICSEARCH_URL http://clogstore.storage:9200

下面是 kibana.yml 文件

--- 
elasticsearch.hosts: 
  - "http://elasticsearch:9200"
logging.verbose: true
server.basePath: /clog
server.host: "0.0.0.0"
server.rewriteBasePath: false

如果我尝试执行 docker run 命令,我的 kibana 容器正在启动,并且在 10 秒内容器将停止并出现以下错误

Error: EFAULT: bad address in system call argument, read
    at Object.readSync (fs.js:494:3)
    at tryReadSync (fs.js:333:20)
    at Object.readFileSync (fs.js:362:19)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:20)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/usr/share/kibana/node_modules/terser-webpack-plugin/dist/minify.js:8:15)
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: This socket has been ended by the other party
    at Socket.writeAfterFIN [as write] (net.js:396:12)
    at PoolWorker.writeEnd (/usr/share/kibana/node_modules/thread-loader/dist/WorkerPool.js:129:20)
    at PoolWorker.dispose (/usr/share/kibana/node_modules/thread-loader/dist/WorkerPool.js:273:12)
    at WorkerPool.disposeWorkers (/usr/share/kibana/node_modules/thread-loader/dist/WorkerPool.js:370:16)
    at WorkerPool.terminate (/usr/share/kibana/node_modules/thread-loader/dist/WorkerPool.js:305:10)
    at WorkerPool.disposeWorkers (/usr/share/kibana/node_modules/thread-loader/dist/WorkerPool.js:364:12)
    at Timeout.timeout.setTimeout [as _onTimeout] (/usr/share/kibana/node_modules/thread-loader/dist/WorkerPool.js:358:44)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)
Emitted 'error' event at:
    at Socket.writeAfterFIN [as write] (net.js:399:8)
    at PoolWorker.writeEnd (/usr/share/kibana/node_modules/thread-loader/dist/WorkerPool.js:129:20)
    [... lines matching original stack trace ...]
    at Timer.processTimers (timers.js:223:10)

奇怪的是,如果我取消注释 dockerfile 中的以下行

运行 /usr/share/kibana/bin/kibana 2>&1 | grep -m 1 ".* 的优化在 .* 秒内完成"

我在 7.4.2 kibana 中验证了它的工作正常,如果我尝试在 kibana 7.5.2 中做同样的事情,docker build 会在这个特定的行等待,即使在 3 小时后 docker build 也没有进行。

我想知道为什么我会收到这个错误。

这条特定线的意义是什么

如何制作我的 kibana 容器

如果我应该添加这个特定的行,那么如何让它快速构建。构建甚至没有完成一次:(

请帮我解决这个问题。

我对 kibana 很陌生,我被卡住了。我需要用 kibana 7.5.2 制作我的容器。任何早期帮助将不胜感激

提前致谢

注意:我尝试使用 kibana 7.5.1 aswel。遇到同样的问题。

4

1 回答 1

1

您正在使用的 dockerfile 似乎是从基本许可证 Kibana 下载(包括 X-Pack)构建映像,然后手动删除 x-pack 目录。当插件(例如位于 x-pack 目录中的插件)被禁用时,Kibana 需要重新构建所有 javascript 包。这个被称为优化器的过程非常占用内存,并且取决于代码库的大小,因此所需的内存量可能会在不同版本之间发生变化。

有几个选项:

  1. 您可以尝试从 OSS Kibana 版本构建您的文件,这不包括 x-pack 插件,并且不需要重建 javascript 包https://www.elastic.co/downloads/past-releases/kibana -oss-7-5-2
  2. 分配更多内存,4GB应该足够了。
  3. 构建一个至少有 4GB 内存的中间镜像。构建完成后,运行映像不再需要如此高的内存使用量。
于 2020-02-11T11:55:45.817 回答