logstash安装:

  1. ## 解压安装
  2. tar -zxvf logstash-6.6.0.tar.gz -C /usr/local/
  3. ## conf下配置文件说明:
  4. # logstash配置文件:/config/logstash.yml
  5. # JVM参数文件:/config/jvm.options
  6. # 日志格式配置文件:log4j2.properties
  7. # 制作Linux服务参数:/config/startup.options
  8. ## 配置文件说明:
  9. vim /usr/local/logstash-6.6.0/config/logstash.yml
  10. --path.config f logstash启动时使用的配置文件
  11. --configtest t:测试 Logstash 读取到的配置文件语法是否能正常解析
  12. --log或-l:日志输出存储位置
  13. --pipeline.workers w:运行 filter output pipeline 线程数量。默认是 CPU 核数。
  14. --pipeline.batch.size b:每个 Logstash pipeline 线程,在执行具体的 filter output 函数之前,最多能累积的日志条数。
  15. --pipeline.batch.delay u:每个 Logstash pipeline 线程,在打包批量日志的时候,最多等待几毫秒。
  16. --verbose:输出调试日志
  17. --debug:输出更多的调试日志
  18. ## 虚拟机配置
  19. vim /usr/local/logstash-6.6.0/config/jvm.options
  20. ## 启动配置 比如启动时的java位置、LS的home等
  21. vim /usr/local/logstash-6.6.0/config/startup.options
  22. ## 数据收集目录:/usr/local/logstash-6.6.0/data
  23. ## 插件目录:/usr/local/logstash-6.6.0/vendor/bundle/jruby/1.9/gems
  24. ## 查看插件命令:
  25. /usr/local/logstash-6.6.0/bin/logstash-plugin list
  26. ## 更新插件命令:
  27. /usr/local/logstash-6.6.0/bin/logstash-plugin update logstash-xxxx-xxxxx
  28. ## 安装插件命令:
  29. /usr/local/logstash-6.6.0/bin/logstash-plugin install logstash-xxxx-xxxxx
  30. ## 插件地址: https://github.com/logstash-plugins

logstash语法与基本使用:

  1. Logstash设计了自己的DSL包括有区域,注释,数据类型(布尔值,字符串,数值,数组,哈希),条件判断字段引用等。
  2. Logstash用{}来定义区域。区域内可以包括插件区域定义,你可以在一个区域内定义多个插件。插件区域内则可以定义键值对设置。
  3. 格式、语法、使用方式: ```shell

    注释.

    input { … }

filter { … }

output { … }

  1. ```shell
  2. ## 两个input设置:
  3. input {
  4. file {
  5. path => "/var/log/messages"
  6. type => "syslog"
  7. }
  8. file {
  9. path => "/var/log/apache/access.log"
  10. type => "apache"
  11. }
  12. }
  1. ## 数据类型:
  2. ## bool类型
  3. debug => true
  4. ## string类型
  5. host => "hostname"
  6. ## number类型
  7. port => 6789
  8. ## array or list类型
  9. path => ["/var/log/message","/var/log/*.log"]
  10. ## hash类型
  11. match => {
  12. "field1" => "value1"
  13. "field2" => "value2"
  14. }
  15. ## codec类型
  16. codec => "json"
  17. ##字段引用方式:
  18. {
  19. "agent": "Mozilla/5.0 (compatible; MSIE 9.0)",
  20. "ip": "192.168.24.44",
  21. "request": "/index.html"
  22. "response": {
  23. "status": 200,
  24. "bytes": 52353
  25. },
  26. "ua": {
  27. "os": "Windows 7"
  28. }
  29. }
  30. ##获取字段值:
  31. [response][status]
  32. [ua][os]
  1. ## 条件判断condition:
  2. if EXPRESSION {
  3. ...
  4. } else if EXPRESSION {
  5. ...
  6. } else {
  7. ...
  8. }
  9. ==(等于), !=(不等于), <(小于), >(大于), <=(小于等于), >=(大于等于), =~(匹配正则), !~(不匹配正则)
  10. in(包含), not in(不包含), and(与), or(或), nand(非与), xor(非或)
  11. ()(复合表达式), !()(对复合表达式结果取反)
  1. ## 使用环境变量(缺失报错):
  2. input {
  3. tcp {
  4. port => "${TCP_PORT}"
  5. }
  6. }
  7. ## 使用环境变量(缺失使用默认值):
  8. input {
  9. tcp {
  10. port => "${TCP_PORT:54321}"
  11. }
  12. }
  1. logstash例子: ```shell

    input 从标准输入流:

    input { stdin { } }

输入数据之后 如何进行处理:

filter {

grok:解析元数据插件,这里从input输入进来的所有数据默认都会存放到 “message” 字段中

grok提供很多正则表达式,地址为:http://grokdebug.herokuapp.com/patterns

比如:%{COMBINEDAPACHELOG} 表示其中一种正则表达式 Apache的表达式

grok { match => { “message” => “%{COMBINEDAPACHELOG}” } }

date:日期格式化

date { match => [ “timestamp” , “dd/MMM/yyyy:HH:mm:ss Z” ] } }

output 从标准输出流:

output { elasticsearch { hosts => [“192.168.11.35:9200”] } stdout { codec => rubydebug } }

  1. 5. file插件使用:
  2. ```shell
  3. ## file插件
  4. input {
  5. file {
  6. path => ["/var/log/*.log", "/var/log/message"]
  7. type => "system"
  8. start_position => "beginning"
  9. }
  10. }
  11. ## 其他参数:
  12. discover_interval ## 表示每隔多久检测一下文件,默认15秒
  13. exclude ## 表示排除那些文件
  14. close_older ## 文件超过多长时间没有更新,就关闭监听 默认3600s
  15. ignore_older ## 每次检查文件列表 如果有一个文件 最后修改时间超过这个值 那么就忽略文件 86400s
  16. sincedb_path ## sincedb保存文件的位置,默认存在home下(/dev/null)
  17. sincedb_write_interval ## 每隔多久去记录一次 默认15秒
  18. stat_interval ## 每隔多久查询一次文件状态 默认1秒
  19. start_position ## 从头开始读取或者从结尾开始读取