• yum安装logstash 不生效


    问题描述

    根据logstash的配置方法写了一个配置文件,并放入/etc/logstash/conf.d/目录下,然后我们运行logstash

    # service logstash start
    Logstash started.
    # service logstash status Redirecting to
    /bin/systemctl status logstash.service ● logstash.service - logstash Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2018-04-19 16:51:23 CST; 22h ago Main PID: 2772 (java)
    
    

    程序已经启动,启动后,ES并没有收集到预期的日志信息,
    查看/var/log/logstash/logstash.log只有Logstash启动信息,没有日志相关的信息。 


    然后停止logstash使用,logstash -f /etc/logstash/conf.d 方式再次启动logstash进行测试,
    结果ES可以收到相关的日志 
    也就是说以服务的方式启动logstash,/etc/logstash/conf.d下的配置文件不生效,使用-f参数指定配置文件是生效的!!

    问题分析过程

    1. 首先查看了使用服务方式启动时的进程参数

    通过与手动启动的方式对比并没有什么区别,但结果却不同,于是我们追溯使用服务方式启动时的具体环境参数和命令

    2. 分析/etc/init.d/logstash的启动过程

    通过第1点的分析,我们追溯到服务的启动环境可能是导致结果不一样的原因,
    而在CentOS7中的启动是由/etc/systemd/system/logstash.service控制的,
    所以我们分析该脚本中的启动代码:

    打开启动文件

    [Unit]
    Description=logstash
    
    [Service]
    Type=simple
    User=logstash
    Group=logstash
    # Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
    # Prefixing the path with '-' makes it try to load, but if the file doesn't
    # exist, it continues onward.
    EnvironmentFile=-/etc/default/logstash
    EnvironmentFile=-/etc/sysconfig/logstash
    ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"
    Restart=always
    WorkingDirectory=/
    Nice=19
    LimitNOFILE=16384
    
    [Install]
    WantedBy=multi-user.target

    我们使用手动命令直接在bash中以root用户执行上述命令同样是有效的,Logstash正确工作,
    所以我们几乎确认是由于logstash的默认执行用户(logstash)权限不足导致的。

    3. 修改文件属主和权限方法

    1.将配置文件权限修改为777
    # chmod 777 /etc/logstash/conf.d/logstash.conf

    2.将修改属主为logstash

    1、2测试结果  都失败

    4. 修改启动文件——直接以root用户运行(成功)

    logstash是以logstash用户启动的

    我们将其修改为root,

    修改前

    [Unit]
    Description=logstash
    
    [Service]
    Type=simple
    User=logstash
    Group=logstash
    # Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.

    修改后

    [Unit]
    Description=logstash
    
    [Service]
    Type=simple
    User=root
    Group=root
    # Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.

     重新加载 systemctl 服务

    # systemctl daemon-reload

    重启 logstash

    # service logstash restart 

  • 相关阅读:
    Windows Driver Mode 1
    一个程序员的奋斗经历 2
    JavaScript判断文件是否存在
    流程图个图标详解
    wget for windows
    软件的开发周期
    Firefox支持activex的插件
    第二次作业
    C/C++字符串使用整理
    c#学习小记录(1)
  • 原文地址:https://www.cnblogs.com/centos2017/p/logstash.html
Copyright © 2020-2023  润新知