JavaShuo
  • 栏目
  • 标签

Elasticsearch+Logstash+Kibana搭建分布式日志平台

时间  2020-06-04
标签 elasticsearch+logstash+kibana elasticsearch logstash kibana 搭建 分布式 日志 平台 栏目 日志分析 繁體版
原文   原文链接

1、前言

编译安装html

一、ELK简介

下载相关安装包地址:https://www.elastic.co/cn/downloadsjava

ELK是Elasticsearch+Logstash+Kibana的简称node

  • ElasticSearch是一个基于Lucene的分布式全文搜索引擎,提供 RESTful API进行数据读写linux

  • Logstash是一个收集,处理和转发事件和日志消息的工具nginx

  • Kibana是Elasticsearch的开源数据可视化插件,为查看存储在ElasticSearch提供了友好的Web界面,并提供了条形图,线条和散点图,饼图和地图等分析工具

总的来讲,ElasticSearch负责存储数据,Logstash负责收集日志,并将日志格式化后写入ElasticSearch,Kibana提供可视化访问ElasticSearch数据的功能。redis

二、ELK工做流

ELK工做流

应用将日志按照约定的Key写入Redis,Logstash从Redis中读取日志信息写入ElasticSearch集群。Kibana读取ElasticSearch中的日志,并在Web页面中以表格/图表的形式展现。shell

2、准备工做

一、服务器&软件环境说明

  • 服务器

一共准备3台CentOS7 Serverapache

服务器名 IP 说明
es1 192.168.1.31 部署ElasticSearch主节点
es2 192.168.1.32 部署ElasticSearch从节点
elk 192.168.1.21 部署Logstash + Kibana + Redis

这里为了节省,只部署2台Elasticsearch,并将Logstash + Kibana + Redis部署在了一台机器上。
若是在生产环境部署,能够按照本身的需求调整。json

  • 软件环境
项 说明
Linux Server CentOS 7
Elasticsearch 7.0.1
Logstash 7.0.1
Kibana 7.0.1
Redis 4.0
JDK 1.8

二、ELK环境准备

因为Elasticsearch、Logstash、Kibana均不能以root帐号运行。
可是Linux对非root帐号可并发操做的文件、线程都有限制。
因此,部署ELK相关的机器都要调整:segmentfault

  • 修改文件限制
# 修改系统文件 vi /etc/security/limits.conf #增长的内容 * soft nofile 65536 * hard nofile 65536 * soft nproc 2048 * hard nproc 4096 
  • 调整进程数
#修改系统文件 vi /etc/security/limits.d/20-nproc.conf #调整成如下配置 * soft nproc 4096 root soft nproc unlimited 
  • 调整虚拟内存&最大并发链接
#修改系统文件 vi /etc/sysctl.conf #增长的内容 vm.max_map_count=655360 fs.file-max=655360 

以上操做重启系统后生效

reboot 
  • JDK8安装

CentO安装JDK8:https://ken.io/note/centos-java-setup

  • 建立ELK专用用户
useradd elk
su elk
  • 建立ELK相关目录并赋权
#建立ELK 数据目录 mkdir /home/elsearch/data #建立ELK 日志目录 mkdir /home/elsearch/logs #更改目录Owner chown -R elk:elk /home/elsearch/data
chown -R elk:elk /home/elsearch/logs
  • 下载ELK包并解压
    https://www.elastic.co/downloads
#打开文件夹 cd /home/download #下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1.tar.gz wget https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz wget wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.1-linux-x86_64.tar.gz #解压 tar -zvxf elasticsearch-7.0.1.tar.gz tar -zvxf logstash-7.0.1.tar.gz tar -zvxf kibana-7.0.1-linux-x86_64.tar.gz 

3、Elasticsearch 部署

本次一共要部署两个Elasticsearch节点,全部文中没有指定机器的操做都表示每一个Elasticsearch机器都要执行该操做

一、准备工做

  • 移动Elasticsearch到统一目录
#移动目录 mv /home/download/elasticsearch-7.0.1 /usr/elk #赋权 chown -R elk:elk /usr/elk/elasticsearch-7.0.1/ 
  • 开放端口
#增长端口 firewall-cmd --add-port=9200/tcp --permanent firewall-cmd --add-port=9300/tcp --permanent #从新加载防火墙规则 firewall-cmd --reload 
 
  
 

二、Elasticsearch节点配置

  • 修改配置
#打开目录 cd /usr/elk/elasticsearch-7.0.1 #修改配置 vi config/elasticsearch.yml 
  • 主节点配置(192.168.1.31)
cluster.name: es 
node.name: es1
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.1.31
http.port: 9200
transport.tcp.port: 9300
node.master: true node.data: true discovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"] discovery.zen.minimum_master_nodes: 1 
  • 从节点配置(192.168.1.32)
cluster.name: es 
node.name: es2
path.data: /elk/es/data
path.logs: /elk/es/logs
network.host: 192.168.1.32
http.port: 9200
transport.tcp.port: 9300
node.master: false node.data: true discovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"] discovery.zen.minimum_master_nodes: 1 
  • 配置项说明
项 说明
cluster.name 集群名
node.name 节点名
path.data 数据保存目录
path.logs 日志保存目录
network.host 节点host/ip
http.port HTTP访问端口
transport.tcp.port TCP传输端口
node.master 是否容许做为主节点
node.data 是否保存数据
discovery.zen.ping.unicast.hosts 集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测
discovery.zen.minimum_master_nodes 主节点个数

三、Elasticsearch启动&健康检查

  • 启动
#进入elasticsearch根目录 cd /usr/elk/elasticsearch-7.0.1 #启动 ./bin/elasticsearch 
  • 查看健康状态
curl http://192.168.1.31:9200/_cluster/health

若是返回status=green表示正常

{
  "cluster_name": "esc", "status": "green", "timed_out": false, "number_of_nodes": 2, "number_of_data_nodes": 2, "active_primary_shards": 0, "active_shards": 0, "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 } 

4、Logstash 部署

一、准备工做

  • 部署Redis

Redis4 安装与配置:https://ken.io/note/centos7-redis4-setup
因为本次核心是ELK搭建,因此ken.io偷懒,Redis没有部署集群,采用的单节点。

  • 移动Logstash到统一目录
#移动目录 mv /home/download/logstash-6.0.0 /usr/elk #赋权 chown -R elk:elk /usr/elk/logstash-6.0.0/ 
  • 切换帐号
#帐号切换到 elk su - elk 
  • 数据&日志目录
#建立Logstash主目录 mkdir /elk/logstash #建立Logstash数据目录 mkdir /elk/logstash/data #建立Logstash日志目录 mkdir /elk/logstash/logs 

二、Logstash配置

  • 配置数据&日志目录
#打开目录 cd /usr/elk/logstash-6.0.0 #修改配置 vi config/logstash.yml #增长如下内容 path.data: /elk/logstash/data path.logs: /elk/logstash/logs 
  • 配置Redis&Elasticsearch
vi config/input-output.conf

#配置内容 input { redis { data_type => "list" key => "logstash" host => "192.168.1.21" port => 6379 threads => 5 codec => "json" } } filter { } output { elasticsearch { hosts => ["192.168.1.31:9200","192.168.1.32:9200"] index => "logstash-%{type}-%{+YYYY.MM.dd}" document_type => "%{type}" } stdout { } } 

该配置就是从redis中读取数据,而后写入指定的elasticsearch

Redis核心配置项说明:

配置项 说明
data_type => “list” 数据类型为list
key => “logstash” 缓存key为:logstash
codec => “json” 数据格式为:json
  • root用户启动
#进入Logstash根目录 cd /usr/elk/logstash-6.0.0 #启动 ./bin/logstash -f config/input-output.conf 

启动成功后,在启动输出的最后一行会看到以下信息:

[INFO ][logstash.pipeline ] Pipeline started {"pipeline.id"=>"main"} [INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>["main"]} 

5、Kibana 部署

一、准备工做

  • 移动Kibana到统一目录
#移动目录 mv /home/download/kibana-6.0.0-linux-x86_64 /usr/elk/kibana-7.0.1 #赋权 chown -R elk:elk /usr/elk/kibana-7.0.1/ 
  • 开放端口
#增长端口 firewall-cmd --add-port=5601/tcp --permanent #从新加载防火墙规则 firewall-cmd --reload 
  • 切换帐号
#帐号切换到 elk su - elk 

三、Kibana配置与访问测试

  • 修改配置
#进入kibana-6.0.0根目录 cd /usr/elk/kibana-7.0.1 #修改配置 vi config/kibana.yml #增长如下内容 server.port: 5601 server.host: "192.168.1.21" elasticsearch.hosts: '["http://192.168.1.31:9200"]' 
  • 启动
#进入kibana-7.0.1根目录 cd /usr/elk/kibana-7.0.1 #启动 ./bin/kibana 
  • 访问

浏览器访问: 192.168.1.21:5601

Unable to fetch mapping. Do you have indices matching the pattern

警告提示:No default index pattern. You must select or create one to continue.
错误提示:Unable to fetch mapping. do you have indices matching the pattern?
不用担忧,这是由于尚未写入日志

6、测试

一、日志写入

日历写入的话,写入到logstash监听的redis便可。
数据类型以前在/usr/elk/logstash-7.0.1/config/input-uput.conf中有配置

  • redis命令方式
#启动redis客户端 #执行如下命令 lpush logstash '{"host":"127.0.0.1","type":"logtest","message":"hello"}' 
  • Java代码批量写入(引入Jedis)
Jedis jedis = new Jedis("192.168.1.21", 6379); for (int i = 0; i < 1000; i++) { jedis.lpush("logstash", "{\"host\":\"127.0.0.1\",\"type\":\"logtest\",\"message\":\"" + i + "\"}"); } 

二、Kibana使用

浏览器访问:192.168.1.21:5601

此时会提示: Configure an index pattern
Configure an index pattern
直接点击create便可

浏览器访问:192.168.1.21:5601/app/kibana#/discover 便可查看日志

ELK Kibana Query

大功告成!

7、备注

一、Kibana使用教程

  • http://www.javashuo.com/article/p-ogjmtkhn-cs.html

二、 ELK开机启动

ELK开机启动,须要学习下如下知识

  • nohup命令使用:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html
  • 自定义系统服务,能够参考Redis的开机启动:https://ken.io/note/centos7-redis4-setup
相关文章
  • 1. ELK日志分布式日志平台搭建
  • 2. ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平台
  • 3. Elasticsearch+Logstash+Kibana搭建分布式日志平台
  • 4. 分布式平台搭建
  • 5. 搭建 ELK 日志平台
  • 6. ELK日志平台搭建
  • 7. 搭建ELK日志分析平台
  • 8. 搭建日志分析平台(ELK)
  • 9. ELK日志分析平台的搭建
  • 10. ELK 日志分析平台搭建
  • 更多相关文章...
  • • ionic 平台 - ionic 教程
  • • Web Services 平台元素 - Web Services 教程
  • • 再有人问你分布式事务,把这篇扔给他
  • • 常用的分布式事务解决方案
相关标签/搜索
    gitlab平台的搭建 搭建 分布式 分布式锁 分布式RPC 日志 平台 建平 台式 分布 日志分析 系统架构 网站建设指南 NoSQL教程 Thymeleaf 教程 建议 设计模式 委托模式
0
分享到微博 分享到微信 分享到QQ
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
  • 1. android 以太网和wifi共存
  • 2. 没那么神秘,三分钟学会人工智能
  • 3. k8s 如何 Failover?- 每天5分钟玩转 Docker 容器技术(127)
  • 4. 安装mysql时一直卡在starting the server这一位置,解决方案
  • 5. 秋招总结指南之“性能调优”:MySQL+Tomcat+JVM,还怕面试官的轰炸?
  • 6. 布隆过滤器了解
  • 7. 深入lambda表达式,从入门到放弃
  • 8. 中间件-Nginx从入门到放弃。
  • 9. BAT必备500道面试题:设计模式+开源框架+并发编程+微服务等免费领取!
  • 10. 求职面试宝典:从面试官的角度,给你分享一些面试经验
本站公众号
   欢迎关注本站公众号,获取更多信息
相关文章
  • 1. ELK日志分布式日志平台搭建
  • 2. ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平台
  • 3. Elasticsearch+Logstash+Kibana搭建分布式日志平台
  • 4. 分布式平台搭建
  • 5. 搭建 ELK 日志平台
  • 6. ELK日志平台搭建
  • 7. 搭建ELK日志分析平台
  • 8. 搭建日志分析平台(ELK)
  • 9. ELK日志分析平台的搭建
  • 10. ELK 日志分析平台搭建
>>更多相关文章<<
联系我们 最近搜索 最新文章 沪ICP备13005482号-10 MyBatis教程 SQL 教程 MySQL教程 Java 教程 Thymeleaf 教程 Hibernate教程 Spring教程 Redis教程