logstash介绍
logstash安装
- 前提条件: 服务器需要安装jdk1.8+
- 官网下载 此处下载的是 Logstash 6.5.0版本,另外服务器是centos
- 下载后上传到服务器 /home/program/logstash/ 文件夹下
- 解压 tar -zxvf ./logstash-6.5.0.tar.gz
- cd ./logstash-6.5.0/conf ,并新建配置文件my-logstash.conf
- 配置my-logstash.conf:
- input:
input{
beats {
port => 12044
}
} #配置日志来源于网络,传输端口12044
- filter:
- output:
file{
path=>"/home/logstash-logs/%{[fields][ip]}/%{+yyyy-MM-dd_HH}/log.log"
# %{},获取参数的表达式,对于日期需要使用%{+ } 。 fiels:ip 为filebeat自定义的KV,参见filebeat的配置
}
stdout{
codec=>json #将日志直接在控制台打印出来
}
- 启动: 进入bin目录, 执行 ./logstash -f ../config/my-logstash.conf 等待片刻,会有启动成功的提示
logstash输出到DB
上面的配置,已经可以将filebeat发送过来的日志进行保存到文件了,现在我们需要将日志同时保存到数据库,测试使用的是mysql数据库
logstash-output-jdbc
- 以下内容参考资料Logstash将数据导入至MYSQL, 并在linux发行版本Red Hat 4.8.5-11的基础上操作
- 在Red Hat 4.8.5-11上正确安装lostash 6.5 (参考上面)。
- 在Red Hat 4.8.5-11上安装mysql(以8.0版本为例)
- 在oracle官网下载对应的版本,此处下载red heat 8.0 为例,操作系统选择linux-generic
- 下载后,上传至服务器/home/program下
- 安装(由于我下载的是tar.xz格式的,所以下面的命令或许会有所差异,具体的根据下载的后缀进行更改命令来安装)
- 执行 xz -d mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
- 执行 tar -xvf ./mysql-8.0.13-linux-glibc2.12-x86_64.tar -C /usr/local
- 进入解压目录, 并重命名
cd /usr/local/
mv mysql-8.0.13-linux-glibc2.12-x86_64/ mysql
- 添加配置文件: vim /etc/my.cnf
[client]
port=3306
socket=/tmp/mysql/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/tmp/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=error.log
- 初始化mysql: mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
- 配置logstash
- 安装logstash-output-jdbc插件
- 下载 压缩包
- 解压, 并放在服务器任意文件夹 比如:/home/program/logstash/logstash-6.5.0/bin/logstash-output-jdbc-master
- 进入logstash安装目录 : /home/program/logstash/logstash-6.5.0
- 修改logstash下的Gemfile文件
vim ./Gemfile
, 在最后,添加一行gem "logstash-output-jdbc", :path => "/home/program/logstash/logstash-6.5.0/bin/logstash-output-jdbc-master"
- 安装output-jdbc插件
bin/logstash-plugin install --no-verify
- 查看是否安装成功:
bin/logstash-plugin list
- 下载connect的jar包 地址
- 在logstash的bin/logstash-output-jdbc-master目录下 , 新建/vendor/jar-dependencies/runtime-jars` , 并将刚才下载的jar包上传到此目录下
- 配置logstash
- 打开logstash配置文件
vim ./config/my-logstash.conf
,并添加如下内容:
filter{
grok{
match=>{
"message"=>"(?<JSON>{.*?})"
}
}
json{
source=>"JSON"
}
}
output{
jdbc {
driver_jar_path => "/home/program/logstash/logstash-6.5.0/bin/logstash-output-jdbc-master/vendor/jar-dependencies/runtime-jars/mysql-connector-java-8.0.12.jar"
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://数据库IP:数据库端口/数据库名称?user=数据库的用户名&password=数据库的密码"
statement => [ "INSERT INTO test (name, age) VALUES(111, ?)", "age" ]
}
}
- 启动logstash , 此时应该会报错:missing class: com.xx.HikariCP
- 由于output-jdbc-master中,有一个 logstash-output-jdbc.gemspec 文件, 打开后,可以发现器配置了com.xx.HikariCP , 并指定了具体的版本号2.7.2 ,需要去私服上下载该版本的jar, 然后放在logstash-core/lib/jars下即可