tomcat部署和利用ELK架构收集tomcat日志

前言

截止目前,运维圈内的人对tomcat肯定也有不少认知,那么我在借用前车之鉴再来整理一遍,也是为了以后方便自己查看,所以加上了tomcat部分,重点还是ELK收集日志部分,在此处注明。

tomcat是什么?

Tomcat 服务器Apache软件基金会项目中的一个核心项目,是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,Tomcat和Nginx、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。一般情况下多用Nginx+Tomcat,Nginx处理静态,Tomcat处理动态程序。

tomcat官网:http://tomcat.apache.org/

tomcat Server组成部分说明

  • server
    Server元素代表了整个Cataline的servlet容器
  • Service
    是由一个或多个Connector,以及一个Engine(负责处理所有的Connector所获得的客户请求)组成,这样的一个大集合
  • Connector
    一个Connector在指定的端口上监听客户请求,并获得的请求交给Engine来处理,从Engine处获得回应并返回客户
  • Engine
    一个Engine下可以配置多个虚拟主机(Virtual Host),每个虚拟主机都有一个域名
  • Host
    每个虚拟主机下可以部署一个或多个Web App,每个Web App对应 一个Context
  • Context
    一个Context对应一个Web Application,一个Web Application由一个或多个Servlet组成

tomcat缺省端口是多少,怎么修改?

  1. 找到Tomcat目录下的conf文件夹
  2. 进入conf文件夹里面找到server.xml文件
  3. 打开server.xml文件
  4. 在server.xml文件里面找到下列信息
  5. 把Connector标签的8080端口改成你想要的端口

tomcat有哪几种Connector运行模式?

  • BIO 同步并阻塞:
    一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,在Linux系统中默认使用这种方式。
    配置项:protocol=”HTTP/1.1”

  • NIO 同步飞阻塞:
    利用Java的异步IO处理,可以通过少量的线程处理大量的请求,可以复用同一个线程处理多个connection(多路复用)。
    Tomcat8在Linux系统中默认使用这种方式。
    Tomcat7必须修改Connector配置来启动。
    配置项:
    protocol=”org.apache.coyote.http11.Http11NioProtocol”

  • APR 异步非阻塞:
    即Apache Portable Runtime,从操作系统层面解决io阻塞问题。
    配制项:
    protocol=”org.apache.coyote.http11.Http11AprProtocol”

备注:需在本地服务器安装APR库。Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

tomcat 部署

tomcat需要JDK(java)环境的依赖,如果你的是Centos7图形化界面并在安装时勾选了开发工具,一般java,python都是安装好的,没有的话,就用yum手动安装一下
yum -y install java-1.8.0-openjdk*

上传apache-tomcat-8.5.55.tar.gz到/usr/local并解压,改名为tomcat8

[root@localhost local]# tar zxf apache-tomcat-8.5.55.tar.gz 
[root@localhost local]# ls
apache-tomcat-8.5.55         bin  games    lib    libexec  share
apache-tomcat-8.5.55.tar.gz  etc  include  lib64  sbin     src
[root@localhost local]# mv apache-tomcat-8.5.55 ./tomcat8
[root@localhost local]# ls
apache-tomcat-8.5.55.tar.gz  etc    include  lib64    sbin   src
bin                          games  lib      libexec  share  tomcat8
[root@localhost local]# 

tomcat不需要编译安装,解压完就会有自带目录
这样就可以对tomcat进行操作和控制了

tomcat目录结构

[root@localhost local]#  cd /usr/local/tomcat8/
[root@localhost local]#  tree -L 1
 .
 ├── bin  ##存放启动、关闭tomcat或者其它功能的脚本(.bat文件和.sh文件)
 ├── BUILDING.txt
 ├── conf  ##存放tomcat配置相关的文件
 ├── CONTRIBUTING.md
 ├── lib  ##存放Web应用能访问的JAR包
 ├── LICENSE
 ├── logs  ##存放tomcat日志文件
 ├── NOTICE
 ├── README.md
 ├── RELEASE-NOTES
 ├── RUNNING.txt
 ├── temp  ##临时文件
 ├── webapps  ##Web应用程序的跟目录
 └── work  ##用以产生有JSP编译出的Servlet的.java和.class文件
 
 7directories, 7files

tomcat配置文件放在conf的安装目录里

[root@localhost tomcat8]# cd conf/
[root@localhost conf]# ll
total 224
-rw-------. 1 root root  13446 May  6 06:14 catalina.policy
-rw-------. 1 root root   7661 May  6 06:14 catalina.properties
-rw-------. 1 root root   1338 May  6 06:14 context.xml
-rw-------. 1 root root   1149 May  6 06:14 jaspic-providers.xml
-rw-------. 1 root root   2313 May  6 06:14 jaspic-providers.xsd
-rw-------. 1 root root   3916 May  6 06:14 logging.properties
-rw-------. 1 root root   7588 May  6 06:14 server.xml    ##主配置文件
-rw-------. 1 root root   2164 May  6 06:14 tomcat-users.xml   ## tomcat管理用户配置文件
-rw-------. 1 root root   2633 May  6 06:14 tomcat-users.xsd
-rw-------. 1 root root 171756 May  6 06:14 web.xml
[root@localhost conf]#

webapps目录说明:这里几个目录对应着主界面的上面的按钮,可以直接在主界面查看帮助文档,及web界面直接管理

[root@localhost tomcat8]# cd webapps/
[root@localhost webapps]# ll
 总用量 4
 drwxr-x---. 14root root 409611月 1611:09 docs  ##tomcat帮助文档
 drwxr-x---.  6root root   8311月 1611:09 examples  ##web应用实例
 drwxr-x---.  5root root   8711月 1611:09 host-manager  ##主机管理
 drwxr-x---.  5root root  10311月 1611:09 manager  ##管理
 drwxr-x---.  3root root  28311月 1611:09 ROOT  ##默认网站根目录

tomcat日志文件

[root@localhost tomcat8]# cd logs/
[root@localhost logs]# ll
total 20
-rw-r-----. 1 root root 6022 May 26 11:44 catalina.2020-05-26.log
-rw-r-----. 1 root root 6022 May 26 11:44 catalina.out  ## 实时日志
-rw-r-----. 1 root root    0 May 26 11:44 host-manager.2020-05-26.log
-rw-r-----. 1 root root  459 May 26 11:44 localhost.2020-05-26.log
-rw-r-----. 1 root root    0 May 26 11:44 localhost_access_log.2020-05-26.txt  ## 访问日志
-rw-r-----. 1 root root    0 May 26 11:44 manager.2020-05-26.log  ## 管理日志
[root@localhost logs]# 

tomcat的启动与关闭

[root@localhost tomcat8]# cd bin/
[root@localhost bin]# ./shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
[root@localhost bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.

在这里插入图片描述

现在,开始准备ELK

ELK架构环境

主机IP描述
Centos(192.168.10.8)elasticseach,kibana
Centos(192.168.10.7)tomcat,filebeat
Centos(192.168.10.1)redis,logstash

ELK架构环境图示

在这里插入图片描述
上一篇用此架构完成了nginx的正确和错误日志的分离收集;
可以参考:https://blog.csdn.net/weixin_43815140/article/details/106365312

因为这2篇都是一起做的,环境都是一样,所以这一篇我也就不去部署相同的环境,直接去修改配置文件,上面的链接里面有完整的ELK架构部署

修改filebeat配置文件

修改filebeat配置文件
在原来nginx基础上添加tomcat日志部分并添加标签

############################日志输入########################################
filebeat.inputs:
#nginx日志
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  tags: ["access"]
  json.keys_under_root: true
  json.overwrite_keys: true

- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log
  tags: ["error"]
  
#tomcat日志
- type: log
  enabled: true
  paths:
    - /usr/local/tomcat8/logs/localhost_access_log.*.txt
  json.keys_under_root: true
  json.keys_under_root: true
  tags: ["tomcat"]
  
#自定义分片,默认3个
setup.template.settings:
  index.number_of_shards: 5

setup.kibana:
  hosts: ["192.168.10.8"]
#######################输出redis##################################
output.redis:
  hosts: ["192.168.10.1"]
  key: "filebeat"
  db: 0
  timeout: 5

修改logstash配置文件

###################################从redis输入日志########################################
input {
  redis {
    host => "192.168.10.1"
    port => "6379"
    db => "0"
    key => "filebeat"
    data_type => "list"
  }
}

#filter过滤处理,把某些参数值浮点化
filter {
  mutate {
    convert => ["upstream_time","float"]
    convert => ["request_time","float"]
  }
}

###################################日志输出给es########################################
output {
  stdout {}
   if "access" in [tags] {
    elasticsearch {
      hosts => ["http://192.168.10.8:9200"]
      index => "nginx_access-%{+YYYY.MM}"
      manage_template => false
    }
   }
   if "tomcat" in [tags] {
    elasticsearch {
      hosts => ["http://192.168.10.8:9200"]
      index => "tomcat_access-%{+YYYY.MM}"
      manage_template => false
    }
        }
   if "error" in [tags] {
    elasticsearch {
      hosts => ["http://192.168.10.8:9200"]
      index => "nginx_error-%{+YYYY.MM}"
      manage_template => false
    }
   }
}

在测试前不要忘了修改tomcat日志格式,使其支持JSON格式
需要在server.xml里面修改为下面的格式:

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="{&quot;client&quot;:&quot;%h&quot;,&quot;client user&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;access time&quot;:&quot;%t&quot;,&quot;method&quot;:&quot;%r&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;send bytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;Agent version&quot;:&quot;%{User-Agent}i&quot;}"/>

ok,现在测试tomcat日志收集情况

ab -c 100 -n 2000 http://192.168.10.7:8080/

在这里插入图片描述
kibana展示如下
在这里插入图片描述

扩展:开启kibana监控功能

kibana老版本里面需要安装X-PACK插件完成
而且之前都是收费的,ELK虽然都是开源的,但是人家的插件都是收费的
因为被人大量的破解,所以
在6.x版本以后,kibana监控功能已经免费发放到服务里面

不需要修改任何配置
直接开启就可以用
在这里插入图片描述
默认按它的点击 Turn on Monitoring
就会出现这个监控界面
并且es也会多出了2个监控项
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

没啦
ELK日志收集就这样了
至于公司里面你要怎么做,就看老大怎么给你分配了,
1/2台可以做,8/9台也可以做
到底怎么用你自己看着来,毕竟即使换掉了也不影响业务的进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值