一,介绍说明
1.1, logstash是什么
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。学习、下载、安装可以参考官方的文档说明:
Logstash:收集、解析和转换日志 | Elastic通过这一灵活且开源的收集、解析和扩充管道,Logstash(Elastic Stack 的一部分)能够整合任何来源、任何格式的数据。免费下载。正在上传…重新上传取消https://www.elastic.co/cn/logstash/官方的三个图很经典,可以帮助我们理解Logstash的作用:
1,采集各种样式、大小和来源的数据
2,实时解析和转换数据
3,选择您的存储库,传输您的数据
1.2, Logstash在ELK中的位置
1.3, Logstash采集Tomcat日志
首先Logstash会对日志文件进行输入,过滤,输出处理。
通过Logstash采集Tomcat的日志后,输出到ElasticSearch db里,最后通过图形化方式,例如使用Kibana来展示。
二,Tomcat安装配置
因为本文是以测试为目的,因此Tomcat使用单节点。下面先进行Tomcat安装及配置。
2.1 环境说明
安装可以参考这个文章:
下面是我安装的粗略步骤:
用户创建:
#groupadd tomcat
#useradd -g tomcat tomcat -m
JDK可以去官网下载,可以解压安装,可以rpm安装。本文安装如下:
环境变量配置:
2.3 Tomcat安装
官网下载安装包,解压,修改文件权限为tomcat:tomcat,
Tomcat安装如下:
2.4 Tomcat配置
环境变量设置
vi /home/tomcat/.bash_profile
# 配置Tomcat环境变量
export CATALINA_HOME=/app/tomcat/
export PATH=$PATH:$CATALINA_HOME/bin
修改配置文件:/app/tomcat/conf/tomcat-users.xml
---------------------------------------------------
......
---------------------------------------------------
启停Tomcat:
su - tomcat
cd /usr/local/tomcat/bin
./startup.sh
./shutdown.sh
访问Tomcat管理页面:
三,Logstash安装配置
建议先阅读官方网站:Installing Logstash | Logstash Reference [8.4] | Elastic正在上传…重新上传取消https://www.elastic.co/guide/en/logstash/8.4/installing-logstash.html安装方式有二进制,APT, YUM, Docker的方式,本文选择二进制的方式。
3.1 Logstash基础软件安装
下载安装包Download Logstash Free | Get Started Now | Elastic
上传到服务器,解压到对于的目录:/app/logstash,修改文件权限为es:es
3.2 Logstash连接Elasticsearch
3.2.1 设置证书https证书
从8.0开始您需要为 Logstash 配置身份验证凭据才能建立通信。如果身份验证失败,Logstash 会引发异常,并且处理管道将停止。因此Logstash也需要进行相应的配置。
Elasticsearch 在启动时会生成自己的默认自签名安全套接字层 (SSL) 证书。Logstash 必须先建立安全套接字层 (SSL) 连接,然后才能将数据传输到安全的 Elasticsearch 集群。Logstash 必须具有签署 Elasticsearch 集群证书的证书颁发机构 (CA) 的副本。
一般来说,安装ES的时候会通过如下命令创建证书库文件:
elasticsearch-certutil ca
elasticsearch-certutil cert --ca elastic-stack-ca.p12 --dns goya1 --name goya1
elasticsearch-certutil cert --ca elastic-stack-ca.p12 --dns goya2 --name goya2
elasticsearch-certutil cert --ca elastic-stack-ca.p12 --dns goya3 --name goya3
elastic-stack-ca.p12(根证书),goya1.p12(节点1证书),goya2.p12(节点2证书),goya3.p12(节点3证书)。这里我的logstash也是安装在节点1(goya1)上。
logstash 不能够直接使用 PKCS#12类型的证书,所以我们需要用openssl命令去goya1.p12的证书中提取pem证书:
openssl pkcs12 -in goya1.p12 -clcerts -nokeys -chain -out logstash-ca.pem
执行后会得到logstash使用的pem证书,名为 logstash-ca.pem
将其拷贝到/app/logstash/config/certs目录
3.2 配置logstash收集tomcat日志
配置Logstash输出到ES终端
cd /app/logstash/config
[es@goya1 config]$ ls -ltr
......
-rwxr-xr-x. 1 es es 405 Sep 15 02:23 tomcat_log_es.conf
[es@goya1 config]$ cat tomcat_log_es.conf
input {
file {
path => "/app/tomcat/logs/tomcat_access_json.*.log"
start_position => "beginning"
type => "tomcat_log"
}
}
output {
elasticsearch {
hosts => ["https://192.168.88.5:9200"]
index => "tomcat_log_%{+YYYY-MM-dd}"
ssl => true
ssl_certificate_verification => false
cacert => "/app/logstash/config/certs/logstash-ca.pem"
user => "elastic"
password => "123456"
}
}
3.3 Tomcat日志格式设置
有的时候Tomcat日志exception可能由几十行组成,我们需要将多行日志变成一行来收集,因此需要将Tomcat的日志设置为json格式。
vi /app/tomcat/conf/server.xml
在文件末尾添加相应的内容:
......
prefix="tomcat_access_json" suffix=".log"
pattern="{"clientip":"%h","ClientUser":"%l","authenticated":"%u","AccessTime":"%t","method":"%r","status":"%s","SendBytes":"%b","Query?string":"%q","partner":"%{Referer}i","AgentVersion":"%{User-Agent}i"}"/>
重新启动tomcat并查看日志,检验是否配置成功,产生新的日志还是需要通过使用浏览器访问8080端口,在Tomcat的demo样例中对tomcat发送请求产生日志。
/app/tomcat/logs/tomcat_access_json.2022-09-06.log
编辑
整理一下上图的输出格式显示如下:
{
"clientip":"192.168.88.1",
"ClientUser":"-",
"authenticated":"-",
"AccessTime":"[06/Sep/2022:07:00:36 -0400]",
"method":"GET /examples/jsp/images/return.gif HTTP/1.1",
"status":"200",
"SendBytes":"1231",
"Query?string":"",
"partner":"http://192.168.88.5:8080/examples/jsp/",
"AgentVersion":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}
3.4 启动Logstash
[es@goya1 logs]$ logstash -f /app/logstash/config/tomcat_log_es.conf
三,验证Tomcat日志数据写入ES
通过运行Tomcat的示例来生成相应的日志:
对应的通过elasticsearch-head 确认数据是否写入了ES中:
或者Kibana进行查看:
至此,Logstash基础安装配置完成。