Logstash8.4在Linux系统上的安装以及配置Tomcat日志(ELK安装part2)(未完待续)

一,介绍说明

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安装及配置。

https://tomcat.apache.org/

 2.1 环境说明

 

安装可以参考这个文章:

Linux安装tomcat_北冥牧之的博客-CSDN博客_linux安装tomcat一、下载tomcat打开tomcat下载页面,tomcat10下载页面:如果你 不想做代码的迁移工作,可以选择Tomcat9及其以下的版本。我们这里是为了安装Tomcat,选择Tomcat9作为演示的版本。二、解压将下载好的Tomcat上传到指定目录,并解压:tar -zxvf apache-tomcat-9.0.58.tar.gz打开对应目录如下图:三、配置jdk环境变量# 编辑配置文件vim /etc/profile# 输入命令,配置jdk环境变量exhttps://blog.csdn.net/qq_42971035/article/details/1227786152.2 JDK 安装

下面是我安装的粗略步骤:

用户创建:

#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

---------------------------------------------------

......

<!--
  The sample user and role entries below are intended for use with the
  examples web application. They are wrapped in a comment and thus are ignored
  when reading this file. If you wish to configure these users for use with the
  examples web application, do not forget to remove the <!.. ..> that surrounds
  them. You will also need to set the passwords to something appropriate.
-->

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-gui"/>
  <user username="tomcat" password="changeit123" roles="tomcat,manager-gui"/>
  <user username="both" password="changeit123" roles="tomcat,role1"/>
  <user username="role1" password="changeit123" roles="role1"/>
</tomcat-users>
---------------------------------------------------

启停Tomcat:
su - tomcat
cd /usr/local/tomcat/bin
./startup.sh
./shutdown.sh

访问Tomcat管理页面: 

三,Logstash安装配置

建议先阅读官方网站:Installing Logstash | Logstash Reference [8.4] | Elastichttps://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

参考官方文档:Secure your connection to Elasticsearch | Logstash Reference [8.4] | Elastic     

     从8.0开始您需要为 Logstash 配置身份验证凭据才能建立通信。如果身份验证失败,Logstash 会引发异常,并且处理管道将停止。因此Logstash也需要进行相应的配置。
      Elasticsearch 在启动时会生成自己的默认自签名安全套接字层 (SSL) 证书。Logstash 必须先建立安全套接字层 (SSL) 连接,然后才能将数据传输到安全的 Elasticsearch 集群。Logstash 必须具有签署 Elasticsearch 集群证书的证书颁发机构 (CA) 的副本。

3.2.1 设置证书SSL证书

如果X-Pack安全被启用,你还需要为内置的logstash_system用户指定凭证,例如在logstash.yml文件里配置:
xpack.monitoring.elasticsearch.url:["http://es-node-host:9200"] 
xpack.monitoring.elasticsearch.username: "logstash_system" 
xpack.monitoring.elasticsearch.password: "xxxxxx"
进一步,如果在Elasticsearch集群上启用了SSL/TLS,请指定将用于验证集群中节点身份的可信CA证书。
要将CA证书添加到Logstash节点的可信证书,可以使用ca设置指定PEM编码证书的位置:
xpack.monitoring.elasticsearch.ssl.ca: /path/to/ca.crt
或者,你可以使用truststore(包含证书的Java Keystore文件)来配置受信任的证书:
xpack.monitoring.elasticsearch.ssl.truststore.path: /path/to/file
xpack.monitoring.elasticsearch.ssl.truststore.password: password
此外,你还可以选择使用keystore(包含证书的Java keystore文件)来设置客户端证书:
xpack.monitoring.elasticsearch.ssl.keystore.path: /path/to/file
xpack.monitoring.elasticsearch.ssl.keystore.password: password
将嗅探设置为true,以便发现elasticsearch集群的其他节点,默认值为false。
xpack.monitoring.elasticsearch.sniffing: false

1, 配置CA证书:我们需要PKCS#12类型的证书
[es@goya1 config]$ elasticsearch-certutil ca
生成根证书 elastic-logstash-ca.p12

2, 节点 goya1 的节点证书 es-logstash-goya1.p12
[es@goya1 bin]$ elasticsearch-certutil cert --ca elastic-logstash-ca.p12 --dns goya1 --name es-logstash-goya1
warning: ignoring JAVA_HOME=/app/elasticsearch/jdk; using bundled JDK
This tool assists you in the generation of X.509 certificates and certificate
signing requests for use with SSL/TLS in the Elastic stack.
......
Enter password for CA (elastic-logstash-ca.p12) :changeit123
Please enter the desired output file [es-logstash-goya1.p12]: 
Enter password for es-logstash-goya1.p12 : changeit123
Certificates written to /app/elasticsearch/es-logstash-goya1.p12
This file should be properly secured as it contains the private key for 
your instance.
This file is a self contained file and can be copied and used 'as is'
For each Elastic product that you wish to configure, you should copy
this '.p12' file to the relevant configuration directory
and then follow the SSL configuration instructions in the product guide.

For client applications, you may only need to copy the CA certificate and
configure the client to trust this certificate.
 

[es@goya1 certs]$ openssl pkcs12 -in es-logstash-goya1.p12 -clcerts -nokeys -chain -out logstash-ca.pem

拷贝证书
将ES上的证书拷贝到logstash相应的一个目录下:
cp /app/elasticsearch/config/certs/* /app/logstash/config/certs
[root@goya1 certs]# ls -ltr
total 16
-rw-------. 1 root root 3596 Sep  6 10:23 elastic-certificates.p12
-rw-------. 1 root root 2672 Sep  6 10:23 elastic-stack-ca.p12
-rw-r--r--. 1 root root 1200 Sep  6 10:23 elasticsearch-ca.pem
-rw-r--r--. 1 root root 3652 Sep  6 10:23 http.p12
为 Logstash 监控配置凭据编辑
如果您想使用 Elastic Stack 监控功能监控您的 Logstash 实例,并将监控数据存储在安全的 Elasticsearch 集群中,您必须为具有适当权限的用户配置用户名和密码。
为此,安全功能预配置了 logstash_system内置用户。此用户具有监视功能所需的最低权限,不应用于任何其他目的 - 它特别不打算在 Logstash 管道中使用。
默认情况下,logstash_system用户没有密码。在您设置密码之前,不会启用用户。
设置密码命令
[root@goya1 certs]# elasticsearch-reset-password -u logstash_system -i
......
[root@goya1 certs]# elasticsearch-reset-password -u logstash_admin_user -i
......

这里可能会报错,因为logstash_admin_user在ES可能没有创建,需要手动去创建和设置密码,不足如下:

创建角色:

创建用户:

验证用户创建是否成功:
您可以通过运行以下操作来检查凭据是否正确:
curl -XGET https://192.168.88.5:9200 -u logstash_system:changeit123 -k
curl -XGET https://192.168.88.5:9200 -u logstash_admin_user:changeit123 -k

3.2 Logstash配置文件

主要用于控制logstash运行时的状态。包含了Logstash配置标志;也可以用命令行的方式,在命令行上设置的任何标志都会覆盖logstash配置文件中的相应设置。

[es@goya1 certs]$ cp /app/elasticsearch/config/certs/* ./
[es@goya1 certs]$ ls -ltr
total 16
-rw-------. 1 es es 3596 Sep 14 03:34 elastic-certificates.p12
-rw-------. 1 es es 2672 Sep 14 03:34 elastic-stack-ca.p12
-rw-r--r--. 1 es es 1200 Sep 14 03:34 elasticsearch-ca.pem
-rw-r--r--. 1 es es 3652 Sep 14 03:34 http.p12
 

3.3 配置Logstash输出到ES终端

[es@goya1 config]$ pwd
/app/logstash/config
[es@goya1 config]$ cat tomcat_log_es.conf
input {
  file {
    path => "/usr/local/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}"
  }
}
 

3.? Tomcat日志格式设置

 有的时候Tomcat日志exception可能由几十行组成,我们需要将多行日志变成一行来收集,因此需要将Tomcat的日志设置为json格式。

vi /app/tomcat/conf/server.xml

在文件末尾添加相应的内容:

......
<!-- 为logstash 添加新的日志格式配置 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="tomcat_access_json" suffix=".log"
        pattern="{&quot;clientip&quot;:&quot;%h&quot;,&quot;ClientUser&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;AccessTime&quot;:&quot;%t&quot;,&quot;method&quot;:&quot;%r&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;SendBytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;AgentVersion&quot;:&quot;%{User-Agent}i&quot;}"/>

      </Host>
    </Engine>
  </Service>
</Server>
重新启动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"
}


版权声明:本文为yangkei原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。