整体架构

 

一:环境准备  

  1、环境规划准备
  1. 192.168.43.16 jdkelasticsearch-master logstashkibana  
  2. 192.168.43.17 jdkelasticsearch-node1  
  3. 192.168.43.18 jdkelasticsearch-node2  
  4. 192.168.43.19 liunx filebeat
  2、安装JDK
  elasticseach以及logstash的运行都需要jdk环境,在三台机器上分别安装jdk-12.0.2   
  1. #解压
  2. tar -zxvf jdk-12.0.2_linux-x64_bin.tar.gz -C /usr/
  3.  
  4. #设置环境变量
  5. vim /etc/profile
  6. export JAVA_HOME=/usr/jdk-12.0.2/
  7. export JRE_HOME=$JAVA_HOME/jre
  8. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  9. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  10.  
  11. #使环境变量生效
  12. source /etc/profile
  3、操作系统调优设置
  1. # 修改系统文件
  2. vim /etc/security/limits.conf
  3.  
  4. #增加的内容
  5. * soft nofile 65536
  6. * hard nofile 65536
  7. * soft nproc 2048
  8. * hard nproc 4096
  9.  
  10. #修改系统文件
  11. vim /etc/security/limits.d/20-nproc.conf
  12.  
  13. #调整成以下配置
  14. * soft nproc 4096
  15. root soft nproc unlimited
  16.  
  17. vim /etc/sysctl.conf
  18. #在最后追加
  19. vm.max_map_count=262144
  20. fs.file-max=655360
  21.  
  22. #使用 sysctl -p 查看修改结果
  23. sysctl -p
  4、配置hosts
  1. vim /etc/hosts
  2. 192.168.43.16 elk-master-node
  3. 192.168.43.17 elk-data-node1
  4. 192.168.43.18 elk-data-node2
  5、关闭防火墙以及SELINUX
  1. sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
  2. setenforce 0
  3. systemctl stop firewalld
  4. systemctl disable firewalld
  6、创建elk用户
  1. groupadd elk
  2. useradd g elk elk
  7、安装目录规划
  1. mkdir -p /home/app/elk
  2. chown -R elk:elk /home/app/elk
  8、下载软件包(elaticsearch-node上只安装elaticsearch)
    将压缩包全部解压至/home/app/elk目录
  1. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz
  2. wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.2.tar.gz
  3. wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.2-linux-x86_64.tar.gz
  4. tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz -C /home/app/elk && \
  5. tar -zxvf logstash-7.3.2.tar.gz -C /home/app/elk && \
  6. tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz -C /home/app/elk

二、安装elasticsearch

  1、配置elasticsearch(切换至elk用户)

  创建Elasticsearch数据目录​ mkdir /home/app/elk/elasticsearch-7.3.2/data -p

  创建Elasticsearch日志目录 mkdir /home/app/elk/elasticsearch-7.3.2/logs -p

  主节点配置:vim /home/app/elk/elasticsearch-7.3.2/config/elasticsearch.yml

  1. # 集群名称
  2. cluster.name: es
  3. # 节点名称
  4. node.name: es-master
  5. # 存放数据目录,先创建该目录
  6. path.data: /home/app/elk/elasticsearch-7.3.2/data
  7. # 存放日志目录,先创建该目录
  8. path.logs: /home/app/elk/elasticsearch-7.3.2/logs
  9. # 节点IP
  10. network.host: 192.168.43.16
  11. # tcp端口
  12. transport.tcp.port: 9300
  13. # http端口
  14. http.port: 9200
  15. # 种子节点列表,主节点的IP地址必须在seed_hosts中
  16. discovery.seed_hosts: ["192.168.43.16:9300","192.168.43.17:9300","192.168.43.18:9300"]
  17. # 主合格节点列表,若有多个主节点,则主节点进行对应的配置
  18. cluster.initial_master_nodes: ["192.168.43.16:9300"]
  19. # 主节点相关配置
  20.  
  21. # 是否允许作为主节点
  22. node.master: true
  23. # 是否保存数据
  24. node.data: true
  25. node.ingest: false
  26. node.ml: false
  27. cluster.remote.connect: false
  28.  
  29. # 跨域
  30. http.cors.enabled: true
  31. http.cors.allow-origin: "*"

  192.168.43.17数据节点从配置:vim /home/app/elk/elasticsearch-7.3.2/config/elasticsearch.yml

  1. # 集群名称
  2. cluster.name: es
  3. # 节点名称
  4. node.name: es-data1
  5. # 存放数据目录,先创建该目录
  6. path.data: /home/app/elk/elasticsearch-7.3.2/data
  7. # 存放日志目录,先创建该目录
  8. path.logs: /home/app/elk/elasticsearch-7.3.2/logs
  9. # 节点IP
  10. network.host: 192.168.43.17
  11. # tcp端口
  12. transport.tcp.port: 9300
  13. # http端口
  14. http.port: 9200
  15. # 种子节点列表,主节点的IP地址必须在seed_hosts中
  16. discovery.seed_hosts: ["192.168.43.16:9300","192.168.43.17:9300","192.168.43.18:9300"]
  17. # 主合格节点列表,若有多个主节点,则主节点进行对应的配置
  18. cluster.initial_master_nodes: ["192.168.43.16:9300"]
  19. # 主节点相关配置
  20.  
  21. # 是否允许作为主节点
  22. node.master: false
  23. # 是否保存数据
  24. node.data: true
  25. node.ingest: false
  26. node.ml: false
  27. cluster.remote.connect: false
  28.  
  29. # 跨域
  30. http.cors.enabled: true
  31. http.cors.allow-origin: "*"
192.168.43.18数据节点从配置:vim /home/app/elk/elasticsearch-7.3.2/config/elasticsearch.yml
  1. # 集群名称
  2. cluster.name: es
  3. # 节点名称
  4. node.name: es-data2
  5. # 存放数据目录,先创建该目录
  6. path.data: /home/app/elk/elasticsearch-7.3.2/data
  7. # 存放日志目录,先创建该目录
  8. path.logs: /home/app/elk/elasticsearch-7.3.2/logs
  9. # 节点IP
  10. network.host: 192.168.43.18
  11. # tcp端口
  12. transport.tcp.port: 9300
  13. # http端口
  14. http.port: 9200
  15. # 种子节点列表,主节点的IP地址必须在seed_hosts中
  16. discovery.seed_hosts: ["192.168.43.16:9300","192.168.43.17:9300","192.168.43.18:9300"]
  17. # 主合格节点列表,若有多个主节点,则主节点进行对应的配置
  18. cluster.initial_master_nodes: ["192.168.43.16:9300"]
  19. # 主节点相关配置
  20.  
  21. # 是否允许作为主节点
  22. node.master: false
  23. # 是否保存数据
  24. node.data: true
  25. node.ingest: false
  26. node.ml: false
  27. cluster.remote.connect: false
  28.  
  29. # 跨域
  30. http.cors.enabled: true
  31. http.cors.allow-origin: "*"

  2、启动elasticserach

sh /home/app/elk/elasticsearch-7.3.2/bin/elasticsearch -d

  3、监控检查

  1. curl -X GET 'http://192.168.43.16:9200/_cluster/health?pretty'
  2. [root@localhost elk]# curl -X GET 'http://192.168.43.16:9200/_cluster/health?pretty'
  3. {
  4. "cluster_name" : "es",
  5. "status" : "green",
  6. "timed_out" : false,
  7. "number_of_nodes" : 3,
  8. "number_of_data_nodes" : 3,
  9. "active_primary_shards" : 5,
  10. "active_shards" : 10,
  11. "relocating_shards" : 0,
  12. "initializing_shards" : 0,
  13. "unassigned_shards" : 0,
  14. "delayed_unassigned_shards" : 0,
  15. "number_of_pending_tasks" : 0,
  16. "number_of_in_flight_fetch" : 0,
  17. "task_max_waiting_in_queue_millis" : 0,
  18. "active_shards_percent_as_number" : 100.0
  19. }
  20. #status=green表示服务正常

三、安装kibana

  1、修改配置文件

  1. cd /home/app/elk/kibana-7.3.2-linux-x86_64/config
  2. vim kibana.yml
  3. # 配置kibana的端口
  4. server.port: 5601
  5. # 配置监听ip
  6. server.host: "192.168.43.16"
  7. # 配置es服务器的ip,如果是集群则配置该集群中主节点的ip
  8. elasticsearch.hosts: "http://192.168.43.16:9200/"
  9. # 配置kibana的日志文件路径,不然默认是messages里记录日志
  10. logging.dest:/home/app/elk/kibana-7.3.2-linux-x86_64/logs/kibana.log

  2、启动kibana

  1. nohup /home/app/elk/kibana-7.3.2-linux-x86_64/bin/kibana &

三、安装filebeat(192.168.43.19上事先跑了jumpserver服务)

  本次实验我们在192.168.43.19上安装filebeat单独对nginx的访问日志和错误日志进行采集,网上有关于发送json格式的配置,在此为了练习grok,直接发送原格式进行配置

  1、下载filebeat

  1. wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.2-linux-x86_64.tar.gz
  2. mkdir -p /opt/software
  3. tar -zxvf filebeat-7.3.2-linux-x86_64.tar.gz -C /opt/software

  2、配置filebeat.yml

  1. vim /opt/software/filebeat-7.3.2/filebeat.yml
  2. #=========================== Filebeat inputs =============================
  3. filebeat.inputs:
  4. - type: log
  5. paths:
  6. - /var/log/nginx/access.log
  7. fields:
  8. log_source: nginx-access
  9. - type: log
  10. paths:
  11. - /var/log/nginx/error.log
  12. fields:
  13. log_source: nginx-error
  14. #============================== Dashboards =====================================
  15. setup.dashboards.enabled: false
  16. #============================== Kibana =====================================
  17. #添加libana仪表盘
  18. setup.kibana:
  19. host: "192.168.43.16:5601"
  20. #----------------------------- Logstash output --------------------------------
  21. output.logstash:
  22. # The Logstash hosts
  23. hosts: ["192.168.43.16:5044"]

  3、启动filebeat

  1. cd /opt/software/filebeat-7.3.2
  2. nohup ./filebeat -c filebeat.yml &

四、安装logstash

  1、创建logstash.conf文件

  1. vim /home/app/elk/logstash-7.3.2/config/logstash.conf
  2. input {
  3. beats {
  4. port => 5044
  5. }
  6. }
  7. filter {
  8. if [fields][log_source]=="nginx-access"{
  9. grok {
  10. match => {
  11. "message" => '%{IP:clientip}\s*%{DATA}\s*%{DATA}\s*\[%{HTTPDATE:requesttime}\]\s*"%{WORD:requesttype}.*?"\s*%{NUMBER:status:int}\s*%{NUMBER:bytes_read:int}\s*"%{DATA:requesturl}"\s*%{QS:ua}'
  12. }
  13. overwrite => ["message"]
  14. }
  15. }
  16. if [fields][log_source]=="nginx-error"{
  17. grok {
  18. match => {
  19. "message" => '(?<time>.*?)\s*\[%{LOGLEVEL:loglevel}\]\s*%{DATA}:\s*%{DATA:errorinfo},\s*%{WORD}:\s*%{IP:clientip},\s*%{WORD}:%{DATA:server},\s*%{WORD}:\s*%{QS:request},\s*%{WORD}:\s*%{QS:upstream},\s*%{WORD}:\s*"%{IP:hostip}",\s*%{WORD}:\s*%{QS:referrer}'
  20. }
  21. overwrite => ["message"]
  22. }
  23. }
  24. }
  25. output {
  26. if [fields][log_source]=="nginx-access"{
  27. elasticsearch {
  28. hosts => ["http://192.168.43.16:9200"]
  29. action => "index"
  30. index => "nginx-access-%{+YYYY.MM.dd}"
  31. }
  32. }
  33. if [fields][log_source]=="nginx-error"{
  34. elasticsearch {
  35. hosts => ["http://192.168.43.16:9200"]
  36. action => "index"
  37. index => "nginx-error-%{+YYYY.MM.dd}"
  38. }
  39. }
  40. stdout { codec => rubydebug }
  41. }

  2、启动logstash

  1. /home/app/elk/logstash-7.3.2/bin/logstash -f /home/app/elk/logstash-7.3.2/config/logstash.conf

六、登陆kibana平台

  分别点击管理--》索引管理,这时候就能看到nginx的访问日志和错误日志的数据了

  接下来创建索引,分别对访问日志和错误日志建立索引,建立完之后点击discover,就能看到日志数据了

  nginx-access

  nginx-error

参考文档:

http://blog.leanote.com/post/tanyulonglong@126.com/%E5%AE%98%E6%96%B9%E5%AE%89%E8%A3%85%E6%96%87%E6%A1%A3-2

https://elkguide.elasticsearch.cn/logstash/plugins/filter/mutate.html

ELK7.3实战安装配置文档的更多相关文章

  1. azkaban编译安装配置文档

    azkaban编译安装配置文档 参考官方文档: http://azkaban.github.io/azkaban/docs/latest/ azkaban的配置文件说明:http://azkaban. ...

  2. Oracle12C安装配置文档

    Oracle12C安装配置文档   Oracle12C安装配置文档 准备软件: 开始安装: 打开从官网下载下来的两个压缩包,进行解压 打开解压好的后缀为2of2的文件夹找到路径为database下的“ ...

  3. IDEA2018.1安装配置文档

    一.软件安装 1. 下载地址: https://www.jetbrains.com/idea/download/#section=windows 2. 安装: 点击.exe,选择安装路径,点击next ...

  4. ELK6.x_Kafka 安装配置文档

    1. 环境描述 1.1.   环境拓扑 如上图所示:Kafka为3节点集群负责提供消息队列,ES为3节点集群.日志通过logstash或者filebeat传送至Kafka集群,再通过logstash发 ...

  5. RHEL6-HA集群在VMware虚拟机环境安装配置文档

    (一)系统环境描述 本文档基于RHEL6u5 系统安装,配置为2节点高可用集群,节点为两台VMware虚拟机. 也可参考http://blog.51cto.com/ty1992/1325327 (二) ...

  6. MySQL5.6.36 linux rpm包安装配置文档

    一.卸载自带mysql,删除MySQL的lib库,服务文件 [root@localhost ~]#rpm -qa|grep mysql qt-mysql-4.6.2-26.el6_4.x86_64 m ...

  7. Weblate 2.11安装配置文档

    一.系统环境: OS:CentOS 6.8 x64 Minimal HostName:Weblate IP:192.168.75.153 Python:2.7.13 pip:9.0.1 Weblate ...

  8. ganlia安装配置文档

    gangliaz在ubuntu中安装和配置很简单 1.  服务器端安装 sudo apt-get install ganglia-monitor ganglia-webfrontend rrdtool ...

  9. WebLogic12C安装配置文档

    jdk版本:1.8; jdk安装路径不准有空格 JDK安装: jdk版本:1.8; jdk安装路径不准有空格 WebLogic安装: 解压安装包 解压JAR 找到fmw_12.2.1.3.0_wls\ ...

随机推荐

  1. ABAP实现Geohash

    前几天群里有人问ABAP有没有Geohash函数,用来帮助SAP存储门店位置.实现对附近门店查找的功能.因为没有查到,所以我动手写了一个. Geohash是什么 Geohash是一种公共域地理编码系统 ...

  2. POJ 3186

    题意略. 思路:有一点区间dp的意思. 我令dp[ i ][ j ]表示:区间[1 , i]和区间[j , N]按某种顺序插值排好,所能获得的最大值. 状态转移方程:dp[ i ][ j ] = ma ...

  3. Django 项目创建到启动(最全最详细的第一个项目)

    一.前言 (一).概述 Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架 ...

  4. 知识图谱推理与实践 (2) -- 基于jena实现规则推理

    本章,介绍 基于jena的规则引擎实现推理,并通过两个例子介绍如何coding实现. 规则引擎概述 jena包含了一个通用的规则推理机,可以在RDFS和OWL推理机使用,也可以单独使用. 推理机支持在 ...

  5. CodeForces - 697D - Puzzles DFS

    传送门:D - Puzzles 题意:在一个图中,从1开始dfs,求每一个点到达的期望: 思路:(下面是队长写的) 首先求的是到每一个点的步数的期望. 记fa( u ) = v, son( v )表示 ...

  6. CodeForces Round #499 Div2

    A: Stages 题意: 给你n个字符, 现在需要从中选取m个字符,每个字符的花费为在字母表的第几位,并且如果选了某个字符, 那么下一个选择的字符必须要在字母表的2位之后, 假如选了e 那么 不能选 ...

  7. 如何设计web系统的监控

    如何使用httpclient设计开发一套web系统监控? 我之前有实现和写过关于运维和开发两个层面的监控系统的文章(https://www.cnblogs.com/zhikou/p/8576891.h ...

  8. Springboot2.x 自动创建表并且执行初始化数据

    1.使用springboot jdbc初始化数据库 项目结构 schema.sql drop table if exists user; create table user (id bigint(20 ...

  9. ERROR IN RESOURCESTART

    TOMCAT启动时出现这个问题,试遍了网上所有的方法就是不管用,卸载tomcat重新安装即可

  10. webpack中clean-webpack-plugin插件使用遇到的问题及解决方法

    webpack 会生成文件,然后将这些文件放置在 /dist 文件夹中,但是 webpack 无法追踪到哪些文件是实际在项目中用到的. 通常,在每次构建前清理 /dist 文件夹,是比较推荐的做法,因 ...