热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

文章目录前言tomcat是什么?tomcatServer组成部分说明tomcat缺省端口是多少,怎么修改?tomcat有哪几种Connector运行模式?tomcat部署tomca

文章目录

  • 前言
    • tomcat是什么?
    • tomcat Server组成部分说明
    • tomcat缺省端口是多少,怎么修改?
    • tomcat有哪几种Connector运行模式?
    • tomcat 部署
      • tomcat目录结构
      • tomcat的启动与关闭
    • ELK架构环境
    • 修改filebeat配置文件
    • 修改logstash配置文件
    • 扩展:开启kibana监控功能
前言

截止目前,运维圈内的人对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.

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

现在,开始准备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架构环境图示

《tomcat部署和利用ELK架构收集tomcat日志》
上一篇用此架构完成了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="{"client":"%h","client user":"%l","authenticated":"%u","access time":"%t","method":"%r","status":"%s","send bytes":"%b","Query?string":"%q","partner":"%{Referer}i","Agent version":"%{User-Agent}i"}"/>

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

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

《tomcat部署和利用ELK架构收集tomcat日志》
kibana展示如下
《tomcat部署和利用ELK架构收集tomcat日志》

扩展:开启kibana监控功能

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

不需要修改任何配置
直接开启就可以用
《tomcat部署和利用ELK架构收集tomcat日志》
默认按它的点击 Turn on Monitoring
就会出现这个监控界面
并且es也会多出了2个监控项
《tomcat部署和利用ELK架构收集tomcat日志》

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

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


推荐阅读
author-avatar
那一年2502931247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有