文章目录
- 一、安装Java
- 二、安装 Logstash
- 1、下载Logstash
- 2、安装Logstash
- 二、使用Logstash
- 1、安装结果测试
- 2、测试文件启动
- 3、监控指定端口输入
- 4、从文件中推送到`Logstash`
- 5、设置输出到ES中
- 五、使用File Beat导入数据
- 1、下载安装Filebeat
- 2、核心点
- 六、安装问题
- 1、 GeoIP Filter in ECS-Compatiblity mode
- 2、配置到ES中未连接报错
- 3、权限问题`error loading config file`
- 七、参考文档
一、安装Java
之前写的安装JDK的
Linux(centos 7.5)服务器安装JDK(1.8)
yum安装JDK
# 查看可安装java版本
yum list java*
# 安装JDK11
yum install java-11-openjdk-demo.x86_64
二、安装 Logstash
1、下载Logstash
https://www.elastic.co/cn/downloads/logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.3.3-linux-x86_64.tar.gz
2、安装Logstash
创建安装目录
mkdir /usr/local/logstash
解压缩安装文件
tar -zxvf logstash-8.3.3-linux-x86_64.tar.gz -C /usr/local/logstash
二、使用Logstash
1、安装结果测试
执行以下命令
cd logstash-8.3.3
bin/logstash -e 'input { stdin { } } output { stdout {} }'
如果你在你的 Terminal 中看到和我一样的输出,说明你的 Logstash 安装时成功的。
2、测试文件启动
我们也可以创建一个自己的 logstash.conf 文件,并存于你的文件系统的一个目录下。这个 logstash.conf 的文件内容如下:
input {
heartbeat {
interval => 10
type => "heartbeat"
}
}
output {
stdout {
codec => rubydebug
}
}
启动
bin/logstash -f heartbeat.conf
通过这样的 -f 选项,我们可以启动任何一个我们喜欢路径的 longstash 配置文件。
3、监控指定端口输入
创建一个自己的logstash.conf
文件
input {
tcp {
port => 9900
}
}
output {
stdout { }
}
运行Logstash
bin/logstash -f weblog.conf
接下来,我们使用 nc 应用把数据发送到 TCP 端口号 9900,并查看 console 的输出。我们在另外一个 console 中打入如下的命令
echo 'hello logstash' | nc localhost 9900
4、从文件中推送到Logstash
新建一个含有日志文件:
14.49.42.25 - - [12/May/2019:01:24:44 +0000] “GET /articles/ppp-over-ssh/ HTTP/1.1” 200 18586 “-” “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b1) Gecko/20091014 Firefox/3.6b1 GTB5”
执行以下命令推送大Logstash
head -n 1 weblog-sample.log | nc localhost 9900
5、设置输出到ES中
核心配置:
elasticsearch {
hosts => ["http://172.28.70.231:9200"]
index => "logstash"
user => "elastic"
password => "23hUMjScdjOkbKiqCYj9"
}
完整配置:
input {
tcp {
port => 9900
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
mutate {
convert => {
"bytes" => "integer"
}
}
geoip {
source => "clientip"
target => "clientgeo"
}
useragent {
source => "agent"
target => "useragent"
}
}
output {
stdout { }
elasticsearch {
hosts => ["http://172.28.70.231:9200"]
index => "logstash"
user => "elastic"
password => "23hUMjScdjOkbKiqCYj9"
}
}
从日志文件weblog-sample.log
中导入数据
head -n 1 weblog-sample.log | nc localhost 9900
五、使用File Beat导入数据
https://www.elastic.co/cn/downloads/beats/
1、下载安装Filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.3.3-linux-x86_64.tar.gz
解压缩安装包
tar -zxvf filebeat-8.3.3-linux-x86_64.tar.gz
新建配置文件filebeat_apache.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /Users/liuxg/data/apache_logs/*
output.logstash:
hosts: ["localhost:5044"]
运行Filebeat
$ ./filebeat -c filebeat_apache.yml
就会将日志同步到Logstash
。
2、核心点
日志所在的目录(正则表达式),可匹配目录以及文件。
/Users/liuxg/data/apache_logs/*
六、安装问题
1、 GeoIP Filter in ECS-Compatiblity mode
[2022-08-04T11:05:00,966][ERROR][logstash.javapipeline ][main] Pipeline error {:pipeline_id=>"main", :exception=>#<LogStash::ConfigurationError: GeoIP Filter in ECS-Compatiblity mode requires a `target` when `source` is not an `ip` sub-field,。
修复内容
改为target
去展示
2、配置到ES中未连接报错
需要配置上到达ES
的index
。
elasticsearch {
hosts => ["http://172.28.70.231:9200"]
index => "logstash"
user => "elastic"
password => "23hUMjScdjOkbKiqCYj9"
}
3、权限问题error loading config file
权限问题:
如果没有赋予权限,下面启动会报错:
Exiting: error loading config file: open filebeat.yml: permission denied
如果赋予777权限,也会报错:
Exiting: error loading config file: config file (“filebeat.yml”) can only be writable by the owner but the permissions are “-rwxrwxrwx” (to fix the permissions use: ‘chmod go-w /usr/share/filebeat/filebeat.yml’)
解决:
chmod 755 /home/filebeat/filebeat.yml
七、参考文档
Logstash:把 Apache 日志导入到 Elasticsearch
Logstash:Logstash 入门教程 (二)