Logstash 搭建 2021-11-11 程序之旅,记录 暂无评论 599 次阅读 ## Logstash 搭建 Logstash 是一个由 JRuby 语言编写的运行在 java 虚拟机上的具有收集,分析和转发数据流功能的工具。 ### 安装环境 - Elasticsearch 7.15.1 - Ubuntu 20.04 - logstash-7.15.2-amd64.deb ### Logstash 安装 [下载地址](https://www.elastic.co/cn/downloads/logstash) 我这里的安装环境 Ubuntu,选择 deb x86_64,如果是 CentOS 可以选择 rpm 使用 apt 或 yum 的安装的[教程地址](https://www.elastic.co/guide/en/logstash/current/installing-logstash.html#package-repositories) ```shell $ dpkg -i logstash-7.15.2-amd64.deb ``` ### Logstash 的简单使用 ```shell # 找到 logstash 的路径 $ whereis logstash logstash: /etc/logstash /usr/share/logstash $ cd /usr/share/logstash/bin $ ./logstash -e 'input { stdin { } } output { stdout {} }' # 把命令放到文件中使用 $ vim test.conf input { stdin { } } output { stdout {} } $ ./logstash -e test.conf # 输入 hello world 打印如下 { "@timestamp" => 2021-11-11T01:52:56.140Z, "host" => "iot-laptop", "@version" => "1", "message" => "hello world" } # 关闭 logstash $ systemctl stop logstash ``` #### Logstash 运行参数 | 参数 | 描述 | | :--------------------------: | :----------------------------------------------------------: | | -f,--config [CONFIG_PATH] | 指定配置文件,使用文件,目录,或者通配符加载配置信息,如果指定为目录或者通配符,按字母顺序加载 | | -e [CONFIG_STRING] | 用于指定字符串输入 | | -w, --filterwarkers [COUNT] | 指 FilterWorker的数量,默认为 1,指定 logstash 的工作线程数 | | --watchdog-timeout [SECONDS] | 设置 watchdog 的timeout 时间,默认是 10 秒 | | -l, --log [FILE] | 指定 logstash 的默认日志写入到一个文件中,默认为控制台输出 | | -v | 设置同时输出info和 debug 级别的日志,不过这个已经开始启用,用 verbose 和 debug 替代 | | --quiet | 静默模式,仅仅只有 error 级别信息输出 | | --verbose | info 级别的 log 输出 | | --debug | debug 级别的log 输出 | | --V, --version | 查看 logstash 的版本 | | -p,--puluginpath [PATH] | 然后指定好路径使用它们可以写自己的插件, | | -t, --configtest | 用来测试 Logstash 读取到的配置文件语法是否能正常解析 | ### Logstash 插件 logstash 执行步骤分为三步:input -> filter -> output input: 输入 codecs:解码 filter:对其时间进行过滤和处理 output:输出到输出端或者决定其存储在哪个组件里 ### 语法格式 #### 区域 logstash 中,使用 { } 来定义区域,区域内,我们可以定义插件,一个区域内是可以定义多个插件 #### 数据类型 布尔 boolean:ssl_enable => true 字节 Bytes: my_bytes => "10MiB" 字符串 String: name=>"Hello world" 数值 Number: port => 514 数组 Array:match => ["datetime", "UNIX", "ISO8601"] 哈希 Hash:options => { key1=> "value1", key2=>"value2"} 编码解码: codec: codec => "json" 密码型:my_password => "password" 路径:my_path => "/tmp/logstash" 注解:# #### 条件判断 - ==(等于),!=(不等于),<(小于),<=(小于等于) - =~(匹配正则),!~ (不匹配正则) - in(包含), not in(不包含) - and(与),or(或),nand(非与),xor(非或) - ():复合表达式,!():对复合表达式结果取反 #### 字段引用 Logstash 还支持变量内插,在字符串里使用字段引用的方法是这样的: ```json output{ statsd { increment -> "apache.%([response][status])" } } ``` ### Logstash + Elasticsearch 的日志打印 ```shell $ vim /etc/logstash/conf.d/iot-logstash.conf input { file { path => "/www/server/iot/logs/info/info.log" } } output { elasticsearch { hosts => ["http://localhost:9200"] } } # 使用 pm2 启动 $ vim iot-logstash-start.sh #!/bin/sh -e /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/iot-logstash.conf $ pm2 start --name iot-logstash iot-logstash-start.sh ``` 之前的 Elasticsearch 有安装 head 插件,所以直接登录 http://192.168.20.171:9100/ 可以查看日志的索引文档 ### Logstash 文件目录 打赏: 微信, 支付宝 标签: ELK, logback 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。