一步步教你部署 EFK 日志分析系统

x33g5p2x  于2021-11-22 转载在 其他  
字(7.9k)|赞(0)|评价(0)|浏览(516)

前言

通过filebeat监控tomcat日志,提交给es,并由kibana可视化分析

一、拓扑图

二、项目环境

  1. tomcat CentOS 7-1 192.168.126.11 filebeat
  2. Node1 CentOS 7-2 192.168.126.12 ElasticsearchKibana
  3. Node2 CentOS 7-3 192.168.126.13 Elasticsearch

三、配置tomcat服务器

1. 安装 JDK ,配置 JAVA 环境

  • 关闭防火墙
  1. [root@tomcat ~]#systemctl stop firewalld.service
  2. [root@tomcat ~]#systemctl disable firewalld.service
  3. [root@tomcat ~]#setenforce 0
  4. setenforce: SELinux is disabled
  • 准备好安装包,上传到 /opt/ 目录
  1. [root@tomcat ~]#cd /opt/
  2. [root@tomcat /opt]#ls
  3. apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm rh
  • 安装 JDK ,并设置 JDK 的环境变量
  1. [root@tomcat /opt]#rpm -ivh jdk-8u201-linux-x64.rpm
  2. [root@tomcat /opt]#vim /etc/profile.d/java.sh #/etc/profile.d/环境变量脚本目录
  3. export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
  4. export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #可执行文件的位置
  5. export PATH=$JAVA_HOME/bin:$PATH
  6. [root@tomcat /opt]#source /etc/profile.d/java.sh #将脚本导入到环境变量中,使其生效
  7. [root@tomcat /opt]#java -version #查看版本
  8. java version "1.8.0_201"
  9. Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
  10. Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

CLASSPATH:编译、运行Java程序时(tomcat),JRE 会去该变量指定的路径中搜索所需的类( .class)文件。
dt.jar:是关于运行环境的类库,主要是swing 的包。
tools.jar:主要是一 些 jdk 工具的类库,包括 javac, java,javap, javadoc等。
JDK:java development kit ( java开发工具)
JRE:java runtime environment ( java运行时环境)
JVM:java virtuak machine (java虚拟机) ,使 java程序可以在多种平台上运行class文件

  • 这里可以写个 JAVA 小程序来测试是否可以正常工作
  1. [root@tomcat /opt]#vim a.java
  2. public class a {
  3. public static void main (String[] args) {
  4. System.out.println("姜姜是美女");
  5. }
  6. }
  1. [root@tomcat /opt]#javac a.java #执行,编译成功后生成可执行文件
  2. [root@tomcat /opt]#java a #输出成功
  3. 姜姜是美女

2. 安装配置 Tomcat

在安装 Tomcat 之前必须先安装 JDK,因为 JDK 是 java 语言的软件包开发工具,其中包含了JVM(java 虚拟机),编写好的 java 源程序经过编译可形成 java 字节码,只要安装了 JDK ,就可用 JVM 解释这些字节码文件,从而保证了 java 的跨平台性

  • 解压 apache-tomcat-9.0.16.tar.gz 包
  1. [root@tomcat /opt]#tar zxvf apache-tomcat-9.0.16.tar.gz #解包
  2. [root@tomcat /opt]#mv apache-tomcat-9.0.16 /usr/local/tomcat #转移包位置并改名

3. Tomcat 配置说明

  • 查看 /usr/local/ 目录(Tomcat 的主目录)
  1. [root@tomcat opt]# cd /usr/local/tomcat/
  2. [root@tomcat tomcat]# ll
  3. 总用量 124
  4. drwxr-x---. 2 root root 4096 11 22 00:34 bin
  5. -rw-r-----. 1 root root 19203 2 5 2019 BUILDING.txt
  6. drwx------. 2 root root 238 2 5 2019 conf
  7. -rw-r-----. 1 root root 6095 2 5 2019 CONTRIBUTING.md
  8. drwxr-x---. 2 root root 4096 11 22 00:34 lib
  9. -rw-r-----. 1 root root 57092 2 5 2019 LICENSE
  10. drwxr-x---. 2 root root 6 2 5 2019 logs
  11. -rw-r-----. 1 root root 2333 2 5 2019 NOTICE
  12. -rw-r-----. 1 root root 3255 2 5 2019 README.md
  13. -rw-r-----. 1 root root 6854 2 5 2019 RELEASE-NOTES
  14. -rw-r-----. 1 root root 16262 2 5 2019 RUNNING.txt
  15. drwxr-x---. 2 root root 30 11 22 00:34 temp
  16. drwxr-x---. 7 root root 81 2 5 2019 webapps
  17. drwxr-x---. 2 root root 6 2 5 2019 work
  • 主目录详细说明如下
bin存放启动和关闭Tomcat 的脚本文件,常用的是catalina.sh、startup.sh、shutdown.sh三个文件
conf存放Tomcat服务器的各种配置文件,常用的是server. xml(主配置文件)、context.xml、 tomcat-users.xml、web.xml四个文件
lib存放Tomcat服务器的jar包,一般不作任何改动,除非连接第三方服务,比如redis那就需要添加相对应的jar包
logs存放Tomcat日志
temp存放Tomcat 运行时产生的文件
webapps存放项目资源的目录
workTomcat.工作目录,一般清除Tomcat缓存的时候会使用到

4. 启动 Tomcat

  • 创建软连接,优化开启命令,便于管理
  1. [root@tomcat ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
  2. [root@tomcat ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
  3. [root@tomcat ~]# startup.sh
  4. Using CATALINA_BASE: /usr/local/tomcat
  5. Using CATALINA_HOME: /usr/local/tomcat
  6. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  7. Using JRE_HOME: /usr/java/jdk1.8.0_201-amd64
  8. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  9. Tomcat started
  • 开启服务
  1. [root@tomcat ~]# netstat -natp | grep 8080
  2. tcp6 0 0 :::8080 :::* LISTEN 50997/java
  • 打开浏览器访问 Tomcat 的主页 http://192.168.126.11:8080

5. 优化 Tomcat 启动速度

在生产环境中第一次启动 tomcat 可能会发现 tomcat 启动很慢,默认情况下可能需要几十秒,此时可以修改 jdk 参数进行优化

  1. vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
  2. #117 进行修改
  3. securerandom.source=file:/dev/urandom
  4. #/dev/random 和/dev/urandom 都是伪终端,但是/dev/urandom(随机值)提供的数据流更快
  5. #因为默认系统会有很多外界因素的影响,造成随机性并不是很好,使用urandom优化可以提供更好的数据流
  6. #重启tomcat
  7. /usr/local/tomcat/bin/shutdown.sh
  8. /usr/local/tomcat/bin/startup.sh

四、配置 Elasticsearch 环境

  1. #关闭防火墙
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. setenforce 0
  5. hostnamectl set-hostname node1 //c7-2修改主机名
  6. hostnamectl set-hostname node2 //c7-3修改主机名
  7. ----------以下操作,node1node2 相同---------------------------------
  8. #修改dns
  9. vim /etc/hosts
  10. 192.168.126.12 node1
  11. 192.168.126.13 node2
  12. cd /opt
  13. #将软件包传至该目录下
  14. rpm -ivh jdk-8u201-linux-x64.rpm
  15. vim /etc/profile.d/java.sh #/etc/profile.d/环境变量脚本目录
  16. export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
  17. export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #可执行文件的位置
  18. export PATH=$JAVA_HOME/bin:$PATH
  19. source /etc/profile.d/java.sh #将脚本导入到环境变量中,使其生效
  20. java -version #查看版本
  21. java version "1.8.0_201"
  22. Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
  23. Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

五、安装elasticsearch集群

1.部署 Elasticsearch 软件

  1. ------node1node2 操作相同---------------------------------------
  2. 1.安装 rpm
  3. cd /opt
  4. #将软件包传至该目录下
  5. rpm -ivh elasticsearch-5.5.0.rpm
  6. 2.加载系统服务
  7. systemctl daemon-reload //加载系统服务
  8. systemctl enable elasticsearch //开启服务
  9. 3.更改 ES 主要配置文件
  10. cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
  11. #备份
  12. vim /etc/elasticsearch/elasticsearch.yml
  13. //17行 cluster.name: my-elk-cluster #集群名字
  14. //23行 node.name: node1 #节点名字,node2节点就写node2
  15. //33行 path.data: /data/elk_data #数据存放路径
  16. //37行 path.logs: /var/log/elasticsearch/ #日志存放路径
  17. //43行 bootstrap.memory_lock: false #不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
  18. //55行 network.host: 0.0.0.0 #提供服务绑定的IP地址,0.0.0.0代表所有地址
  19. //59行 http.port: 9200 #侦听端口为9200
  20. //68行 discovery.zen.ping.unicast.hosts: ["node1", "node2"] #集群发现通过单播实现
  21. grep -v "^#" /etc/elasticsearch/elasticsearch.yml
  22. #检查配置
  23. 4.创建数据存放路径并授权
  24. mkdir -p /data/elk_data
  25. chown elasticsearch:elasticsearch /data/elk_data/
  26. 5.查看启动 ES 是否成功开启
  27. systemctl start elasticsearch.service
  28. netstat -antp | grep 9200
  29. #这里需要等一会儿才能出来,或者多restart重启几次服务即可
  30. 6.查看节点信息,用宿主机浏览器打开
  31. http://192.168.126.12:9200
  32. http://192.168.126.13:9200

2.检查集群健康状态

  • 检查群集健康情况
  1. 用宿主机浏览网页,打开 http://192.168.126.12:9200/_cluster/health?pretty

  • 检查群集状态信息
  1. 打开 http://192.168.126.12:9200/_cluster/state?pretty

3.安装 elasticsearch-head 插件

  • 我们可以通过安装elasticsearch-head插件来更方便的查看集群
  1. ------node1node2操作相同----------------------------------------
  2. 1.编译安装 node 组件依赖包
  3. cd /opt
  4. #将软件包传至本目录下
  5. yum install -y gcc gcc-c++ make
  6. tar zxvf node-v8.2.1.tar.gz
  7. cd node-v8.2.1/
  8. ./configure
  9. make -j 4 && make install
  10. #过程耗时较长!!建议同时编译安装node2
  11. 2.安装 phantomjs(前端框架)
  12. cd /usr/local/src/
  13. #将软件包传至本目录下
  14. tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
  15. cd phantomjs-2.1.1-linux-x86_64/bin
  16. cp phantomjs /usr/local/bin
  17. 3.安装 elasticsearch-head(数据可视化工具)
  18. cd /usr/local/src/
  19. #将软件包传至本目录下
  20. tar zxvf elasticsearch-head.tar.gz
  21. cd elasticsearch-head/
  22. npm install
  23. 4.修改主配置文件
  24. cd ~
  25. vim /etc/elasticsearch/elasticsearch.yml
  26. #在尾部添加配置
  27. http.cors.enabled: true
  28. http.cors.allow-origin: "*"
  29. #注释
  30. 1.开启跨域访问支持,默认为false
  31. 2.跨域访问允许的域名地址
  32. systemctl restart elasticsearch
  33. 5.启动 elasticsearch-head
  34. cd /usr/local/src/elasticsearch-head/
  35. npm run start &
  36. #切换到后台运行
  37. #按回车切回命令符操作
  38. netstat -lnupt |grep 9100
  39. netstat -lnupt |grep 9200

  1. 1.在宿主机上打开浏览器,访问 http://192.168.126.12:9100/
  2. 2.然后在 Elasticsearch 后面的栏目中摄入 http://192.168.126.12:9200,点击连接,查看群集颜色是否是健康的绿色
  3. 3.访问 http://192.168.126.13:9100/,同上操作

  • 登陆node1
  1. curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"xjj","mesg":"hello world"}'
  2. #索引为index-demo,类型为test,可以看到成功创建

  1. 1.打开浏览器输入http://192.168.126.12:9100/ 查看索引信息
  2. 2.可以看见索引默认被分片5个,并且有一个副本
  3. 3.点击数据浏览,会发现在node1上创建的索引为index-demo,类型为test这些相关的信息

六、部署filebeat

  1. cd /opt
  2. #把安装包拖进来
  3. rpm -ivh filebeat-5.5.1-x86_64.rpm //安装
  4. 1.编辑配置文件
  5. vim /etc/filebeat/filebeat.yml
  6. 12 filebeat.prospectors:
  7. 18 - input_type: log
  8. 21 paths:
  9. 22 - /usr/local/tomcat/logs/*.log
  10. 81 output.elasticsearch:
  11. 83 hosts: ["192.168.126.12:9200"]
  12. 2.(登录node1)手动载入ES索引模板
  13. curl -XPUT 'http://192.168.126.12:9200/_template/filebeat?pretty' -d@/etc/filebeat/file
  14. beat.template.json
  15. #成功会返回true
  16. 3.启动filebeat
  17. /etc/init.d/filebeat start
  18. 4.宿主机浏览 http://192.168.126.12:9100/ 查看索引信息

七、node1安装Kibana

  1. cd /usr/local/src/
  2. #将软件包传至本目录下
  3. rpm -ivh kibana-5.5.1-x86_64.rpm
  4. cd /etc/kibana/
  5. cp kibana.yml kibana.yml.bak
  6. vim kibana.yml
  7. //2行 server.port: 5601 #kibana打开的端口
  8. //7行 server.host: "0.0.0.0" #kibana侦听的地址
  9. //21行 elasticsearch.url: "http://192.168.126.12:9200" #和elasticsearch建立联系
  10. //30行 kibana.index: ".kibana" #在elasticsearch中添加.kibana索引
  11. systemctl start kibana.service
  12. systemctl enable kibana.service
  • 宿主机浏览 192.168.126.12:5601
  1. 1.首次登录创建一个索引 名字:filebeat-* ##这是对接系统日志文件
  2. Index name or pattern
  3. #下面输入filebeat-*
  4. 2.然后点最下面的出面的create 按钮创建
  5. 3.然后点最左上角的Discover按钮,会发现filebeat-*信息

相关文章