elk日志采集系统 新增或修改多个日志采集配置文件

举报
tea_year 发表于 2025/12/27 14:38:15 2025/12/27
【摘要】 在Logstash的conf.d目录下新增或修改多个日志采集配置文件,并且不重启Logstash就能让这些配置生效,核心是利用Logstash的配置自动重载功能(就是你之前用到的-r参数),我会帮你梳理具体的实现方法和注意事项。一、Logstash已开启配置自动重载这是不重启生效的关键,你启动Logstash时需要带上**-r(或--config.reload.automatic)参数**,...

在Logstash的conf.d目录下新增或修改多个日志采集配置文件,并且不重启Logstash就能让这些配置生效,核心是利用Logstash的配置自动重载功能(就是你之前用到的-r参数),我会帮你梳理具体的实现方法和注意事项。

一、Logstash已开启配置自动重载


这是不重启生效的关键,你启动Logstash时需要带上**-r(或--config.reload.automatic)参数**,并且指定加载conf.d整个目录(而非单个文件)。

1. 正确的启动命令(加载conf.d目录+自动重载)


# 推荐:测试配置语法后启动

./logstash --path.settings /etc/logstash/ -t -f /etc/logstash/conf.d/

# 启动Logstash,-r开启自动重载,-f指定conf.d目录(会加载所有.conf文件)

./logstash --path.settings /etc/logstash/ -r -f /etc/logstash/conf.d/ &

-f /etc/logstash/conf.d/:表示加载该目录下所有.conf后缀的配置文件(多个配置文件会被合并执行)。
-r:开启配置自动重载,Logstash会默认每3秒检查conf.d目录下的配置文件是否有变化(新增、修改、删除),有变化则自动加载新配置,无需重启。
2. 调整自动重载的检查间隔(可选)
如果需要修改检查间隔(比如改为10秒),可以在启动命令中添加--config.reload.interval参数:

./logstash --path.settings /etc/logstash/ -r --config.reload.interval 10s -f /etc/logstash/conf.d/ &

二、在conf.d下管理多个采集配置文件的方法


你可以在conf.d目录下创建多个.conf文件,每个文件对应一个日志采集任务(比如采集Nginx日志、系统日志、Tomcat日志),Logstash会自动合并这些配置并执行。

示例:创建两个采集配置文件
配置文件1:采集Nginx日志(nginx.conf)

# /etc/logstash/conf.d/nginx.conf
input {
  file {
    path => "/var/log/nginx/access.log"
    type => "nginx_access"
    start_position => "end"
  }
}

filter {
  if [type] == "nginx_access" {
    grok {
      match => { "message" => '%{IPORHOST:remote_addr} - %{USERNAME:remote_user} \[%{HTTPDATE:time_local}\] "%{METHOD:request_method} %{URIPATH:request_path} %{HTTPVERSION:http_version}" %{NUMBER:status:int} %{NUMBER:body_bytes_sent:int} "%{URI:http_referer}" "%{DATA:http_user_agent}"' }
      remove_field => ["message"]
    }
    date {
      match => [ "time_local", "dd/MMM/yyyy:HH:mm:ss Z" ]
      target => "@timestamp"
    }
  }
}

output {
  if [type] == "nginx_access" {
    elasticsearch {
      hosts => ["http://10.0.0.22:9200"]
      index => "nginx-access-%{+YYYY.MM.dd}"
    }
  }
}


配置文件2:采集系统日志(syslog.conf)

# /etc/logstash/conf.d/syslog.conf
input {
  file {
    path => "/var/log/messages"
    type => "syslog"
    start_position => "end"
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => '%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}' }
      remove_field => ["message"]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
      target => "@timestamp"
    }
  }
}

output {
  if [type] == "syslog" {
    elasticsearch {
      hosts => ["http://10.0.0.22:9200"]
      index => "syslog-%{+YYYY.MM.dd}"
    }
  }
}


3. 新增/修改配置文件后,无需重启的操作
新增配置文件:直接在conf.d下创建新的.conf文件并保存,Logstash会在3秒内自动加载。
修改配置文件:编辑已有的.conf文件并保存,Logstash会自动重载新配置。
删除配置文件:删除conf.d下的.conf文件,Logstash会自动停止对应的采集任务。


三、验证配置是否生效


查看Logstash日志
tail -f /var/log/logstash/logstash-plain.log
1.
如果配置重载成功,会看到类似以下日志:

[2025-12-22T10:00:00,000][INFO ][logstash.config.source.multilocal] Reloading config files from path: /etc/logstash/conf.d/*.conf
[2025-12-22T10:00:01,000][INFO ][logstash.javapipeline    ][main] Pipeline has been reloaded {:pipeline_id=>"main"}
1.
2.
检查Elasticsearch索引
curl -X GET "http://10.0.0.22:9200/_cat/indices?v"
1.
如果能看到新增的索引(比如syslog-2025.12.22),说明配置已生效。

四、注意事项(避免配置重载失败)


配置文件语法必须正确:如果新增/修改的配置有语法错误,Logstash会在日志中输出错误,且不会重载配置(原有配置仍会继续运行)。建议修改后先执行以下命令测试语法:

./logstash --path.settings /etc/logstash/ -t -f /etc/logstash/conf.d/
1.
看到Configuration OK表示语法正确。

多个配置文件的逻辑冲突:多个配置文件的input/filter/output会被合并,建议用type或tags字段区分不同的日志采集任务(如示例中的type => "nginx_access"),避免过滤或输出时混淆。

大文件采集的重载影响:如果采集的是大日志文件,重载配置不会中断正在进行的采集,新配置会应用到后续的日志行。

五、总结


核心实现:启动Logstash时添加-r参数并指定加载conf.d目录,即可开启配置自动重载,无需重启就能生效新配置。
配置管理:在conf.d下创建多个.conf文件,每个文件对应一个采集任务,用type/tags区分不同日志流。
关键检查:修改配置后先测试语法,再通过Logstash日志或ES索引验证配置是否生效。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。