整体架构

 

一:环境准备  

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

 # 集群名称
cluster.name: es
# 节点名称
node.name: es-master
# 存放数据目录,先创建该目录
path.data: /home/app/elk/elasticsearch-7.3.2/data
# 存放日志目录,先创建该目录
path.logs: /home/app/elk/elasticsearch-7.3.2/logs
# 节点IP
network.host: 192.168.43.16
# tcp端口
transport.tcp.port: 9300
# http端口
http.port: 9200
# 种子节点列表,主节点的IP地址必须在seed_hosts中
discovery.seed_hosts: ["192.168.43.16:9300","192.168.43.17:9300","192.168.43.18:9300"]
# 主合格节点列表,若有多个主节点,则主节点进行对应的配置
cluster.initial_master_nodes: ["192.168.43.16:9300"]
# 主节点相关配置 # 是否允许作为主节点
node.master: true
# 是否保存数据
node.data: true
node.ingest: false
node.ml: false
cluster.remote.connect: false # 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

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

 # 集群名称
cluster.name: es
# 节点名称
node.name: es-data1
# 存放数据目录,先创建该目录
path.data: /home/app/elk/elasticsearch-7.3.2/data
# 存放日志目录,先创建该目录
path.logs: /home/app/elk/elasticsearch-7.3.2/logs
# 节点IP
network.host: 192.168.43.17
# tcp端口
transport.tcp.port: 9300
# http端口
http.port: 9200
# 种子节点列表,主节点的IP地址必须在seed_hosts中
discovery.seed_hosts: ["192.168.43.16:9300","192.168.43.17:9300","192.168.43.18:9300"]
# 主合格节点列表,若有多个主节点,则主节点进行对应的配置
cluster.initial_master_nodes: ["192.168.43.16:9300"]
# 主节点相关配置 # 是否允许作为主节点
node.master: false
# 是否保存数据
node.data: true
node.ingest: false
node.ml: false
cluster.remote.connect: false # 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
192.168.43.18数据节点从配置:vim /home/app/elk/elasticsearch-7.3.2/config/elasticsearch.yml
 # 集群名称
cluster.name: es
# 节点名称
node.name: es-data2
# 存放数据目录,先创建该目录
path.data: /home/app/elk/elasticsearch-7.3.2/data
# 存放日志目录,先创建该目录
path.logs: /home/app/elk/elasticsearch-7.3.2/logs
# 节点IP
network.host: 192.168.43.18
# tcp端口
transport.tcp.port: 9300
# http端口
http.port: 9200
# 种子节点列表,主节点的IP地址必须在seed_hosts中
discovery.seed_hosts: ["192.168.43.16:9300","192.168.43.17:9300","192.168.43.18:9300"]
# 主合格节点列表,若有多个主节点,则主节点进行对应的配置
cluster.initial_master_nodes: ["192.168.43.16:9300"]
# 主节点相关配置 # 是否允许作为主节点
node.master: false
# 是否保存数据
node.data: true
node.ingest: false
node.ml: false
cluster.remote.connect: false # 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

  2、启动elasticserach

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

  3、监控检查

 curl -X GET 'http://192.168.43.16:9200/_cluster/health?pretty'
[root@localhost elk]# curl -X GET 'http://192.168.43.16:9200/_cluster/health?pretty'
{
"cluster_name" : "es",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 5,
"active_shards" : 10,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
#status=green表示服务正常

三、安装kibana

  1、修改配置文件

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

  2、启动kibana

 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

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

  2、配置filebeat.yml

 vim /opt/software/filebeat-7.3.2/filebeat.yml
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
fields:
log_source: nginx-access
- type: log
paths:
- /var/log/nginx/error.log
fields:
log_source: nginx-error
#============================== Dashboards =====================================
setup.dashboards.enabled: false
#============================== Kibana =====================================
#添加libana仪表盘
setup.kibana:
host: "192.168.43.16:5601"
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["192.168.43.16:5044"]

  3、启动filebeat

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

四、安装logstash

  1、创建logstash.conf文件

 vim /home/app/elk/logstash-7.3.2/config/logstash.conf
input {
beats {
port => 5044
}
}
filter {
if [fields][log_source]=="nginx-access"{
grok {
match => {
"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}'
}
overwrite => ["message"]
}
}
if [fields][log_source]=="nginx-error"{
grok {
match => {
"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}'
}
overwrite => ["message"]
}
}
}
output {
if [fields][log_source]=="nginx-access"{
elasticsearch {
hosts => ["http://192.168.43.16:9200"]
action => "index"
index => "nginx-access-%{+YYYY.MM.dd}"
}
}
if [fields][log_source]=="nginx-error"{
elasticsearch {
hosts => ["http://192.168.43.16:9200"]
action => "index"
index => "nginx-error-%{+YYYY.MM.dd}"
}
}
stdout { codec => rubydebug }
}

  2、启动logstash

 /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. JavaScript数组方法详解

    JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...

  2. JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...

  3. 最简单流处理引擎——Kafka Streaming简介

    Kafka在0.10.0.0版本以前的定位是分布式,分区化的,带备份机制的日志提交服务.而kafka在这之前也没有提供数据处理的顾服务.大家的流处理计算主要是还是依赖于Storm,Spark Stre ...

  4. Python数据类型详解——元组

    Python数据类型详解--元组 有时候我们的列表数据不想被别人修改时该怎么办? 此时,就可以使用元组来存放,元祖又称为只读列表,不能修改 定义方式:与列表类似,将列表的[]换成()即可. 特性: 1 ...

  5. 第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题

    第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 1.原题呈现 2.试题答案 3.题目解析 因博客园无法打出公式等,所以给你们几个小编推荐的链接去看看,在这里小编深感抱歉! https ...

  6. Java多线程(十二):中断机制

    这里详细分析interrupt(),interrupted(),isInterrupted()三个方法 interrupt() 中断这个线程,设置中断标识位 public void interrupt ...

  7. 关于工作流引擎ccflow待办分类 研究与技术实现

    关于工作流引擎待办分类 研究与技术实现 关键字:工作流引擎 BPM系统 待办类型 名词:待办 概要介绍:待办就是当前的登录人员要处理的工作,在工作流程里面的节点类型不同,业务场景不同,我们把待办分为如 ...

  8. P2059 [JLOI2013]卡牌游戏 概率DP

    link:https://www.luogu.org/problemnew/show/P2059 题意: 有n个人,类似约瑟夫环的形式踢人,但是报的数是不同的,是在给定的许多数中随机抽取,问最后第i个 ...

  9. hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)

    题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x ...

  10. CodeForces round 520 div2

    A:A Prank 题意:给定一个递增序列, 问最多能删除多少个连续数字,要求删除数字之后能还原成原来的数列. 题解:直接找就好了,为了方便可以使得第0个数字为0, 第n+1个元素为1001 代码: ...