gpt4 book ai didi

docker - 导入所有数据后自动停止Logstash进程

转载 作者:行者123 更新时间:2023-12-02 17:48:58 29 4
gpt4 key购买 nike

情况:

  • 我每天中午 12 点通过 Logstash 手动将数据导入 Elasticsearch。
  • 我知道 Logstash 上没有“关闭”,因为理想情况下,您希望不断向服务器发送数据。
  • 我正在使用 elk-docker作为我的 ELK 堆栈。
  • 我编写了一个 shell 脚本,向 docker 容器发送命令以执行以下操作:

  • DailyImport.sh
    docker exec -it $DOCKER_CONTAINER_NAME opt/logstash/bin/logstash --path.data /tmp/logstash/data -e \
    'input {
    file {
    path => "'$OUTPUT_PATH'"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    mode => "read"
    file_completed_action => "delete"
    }
    }
    filter {
    csv {
    separator => ","
    columns => ["foo", "bar", "foo2", "bar2"]
    }

    }

    output {
    elasticsearch{
    hosts => "localhost:9200"
    index => "foo"
    document_type => "foo"
    }
    stdout {}
    }'

    我尝试并理解的内容:
  • 我读过添加 read模式和 file_completed_action删除会停止操作,我试过了,但没有用。
  • 我仍然需要发送 Ctrl + C手动停止管道。例如:
  • ^C[2019-02-21T15:49:07,787][WARN ][logstash.runner          ] SIGINT received. Shutting down.
    [2019-02-21T15:49:07,899][INFO ][filewatch.observingread ] QUIT - closing all files and shutting down.
    [2019-02-21T15:49:09,764][INFO ][logstash.pipeline ] Pipeline has terminated {:pipeline_id=>"main", :thread=>"#<Thread:0x6bdb92ea run>"}
    Done


    我已经读到我可以执行以下操作,但不知道如何操作:
  • 监视sincedb 文件以检查Logstash 何时达到EOF,然后杀死Logstash。
  • 请改用 stdin 输入。当标准输入已关闭且所有输入均已处理后,Logstash 将自行关闭。另一方面,Logstash 会因任何您不知道它处理了多少的原因而消亡。

  • 引用: https://discuss.elastic.co/t/stop-logstash-after-processing-the-file/84959

    我要的是:
  • 我不需要花哨的进度条来告诉我导入了多少数据(针对输入文件)。
  • 我只想在“完成”时结束操作,然后发送 Ctrl + C当它到达 EOF 或“完成导入”时。
  • 最佳答案

    对于读取模式下的文件输入,最近有一种方法可以在读取所有文件时退出进程,只需设置:
    input { file { exit_after_read => true } }
    https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html#plugins-inputs-file-exit_after_read

    关于docker - 导入所有数据后自动停止Logstash进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54811487/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com