您当前的位置:首页 > 电脑百科 > 数据库 > 百科

基于ELK一次集群实战

时间:2021-04-30 14:13:31  来源:今日头条  作者:小杨互联网
开始之前先了解一下什么是ELK
ELK:大型分布式日志分析系统ELK elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据)

Elasticsearch:

Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在储、搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。
横向可扩展性:只需要增加台服务器,做一点儿配置,启动一下Elasticsearch就可以并入集群。
分片机制提供更好的分布性:同一个索引分成多个分片(sharding), 这点类似于HDFS的块机制;分而治之的方式可提升处理效率。

高可用:提供复制( replica) 机制,一个分片可以设置多个复制,使得某台服务器在宕机的情况下,集群仍旧可以照常运行,并会把服务器宕机丢失的数据信息复制恢复到其他可用节点上。
口使用简单:只需一条命令就可以下载文件,然后很快就能搭建一个站内搜索引擎。

 

Elasticsearch应用场景

大型电商商品搜索系统、网盘搜索引擎等。

logstash

官网:
https://www.elastic.co/guide/en/logstash/current/index.html
logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
  Logstash常用于日志关系系统中做日志采集设备;

 
基于ELK一次集群实战


系统结构
  Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:
inpust:必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
outpus:必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd
  其中inputs和outputs支持codecs(coder&decoder)在1.3.0 版之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,所以完整的数据流程应该是:input | decode | filter | encode | output;codec 的引入,使得 logstash 可以更好更方便地与其他有自定义数据格式的运维产品共存,比如:graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用数据格式的其他产品等.  

Kibana介绍

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观地展示数据,从而达到高级的数据分析与可视化的目的。
实现Es集群+日志收集原理:
基于ELK一次集群实战
我们这边三台本地虚拟机服务器:
192.168.85.187
192.168.85.188
192.168.85.180
安装一台其他克隆就可搞定:

Elasticsearch linux 安装

1、 安装JDK环境变量

 
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
2、 下载elasticsearch安装包
下载elasticsearch安装包
官方文档
https://www.elastic.co/downloads/elasticsearch
注意:linux安装内存建议1g内存以上
3、 上传elasticsearch安装包

 
基于ELK一次集群实战


4、 解压elasticsearch
tar -zxvf elasticsearch-6.4.3.tar.gz
5、 修改elasticsearch.yml
network.host: 192.168.85.180
http.port: 9200

 
基于ELK一次集群实战
6、 启动elasticsearch报错
cd /opt/elasticsearch-6.4.3/bin
./elasticsearch
can not run elasticsearch as root
解决方案:
因为安全问题elasticsearch
 
 不让用root用户直接运行,所以要创建新用户
第一步:liunx创建新用户  adduser XXX    然后给创建的用户加密码 passwd XXX    输入两次密码。
第二步:切换刚才创建的用户 su XXX  然后执行elasticsearch  会显示Permission denied 权限不足。
第三步:给新建的XXX赋权限,chmod 777 *  这个不行,因为这个用户本身就没有权限,肯定自己不能给自己付权限。所以要用root用户登录付权限。
第四步:root给XXX赋权限,chown -R XXX /你的elasticsearch安装目录。
然后执行成功。
 
创建一个分组
 groupadd esyang
useradd esyang -g esyang -p 123456
chown -R esyang:esyang  elasticsearch-6.4.3
su esyang 切换用户
 
继续报错
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] is
 
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl p
 
 
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
 
 
重启服务器即可
 
 
 
 
基于ELK一次集群实战
下面是各种问题的汇总,我们要做凌驾于bug之上的人:
报错了不要慌分析日志:

 
基于ELK一次集群实战
我们看看很明显没有给权限给yang这个用户启动日志不能写的操作就报错:

 
基于ELK一次集群实战
chown -R yang:yang  /opt/elasticsearch/logs/*
 
基于ELK一次集群实战
搞定在启动

 
基于ELK一次集群实战
你以为你启动成功了不,由于你做了集群配置,所以你的单台是启动成功了但是还有两台没有启动起来,有时候会报节点没有集群。
来访问:访问不了。这个问题怎么解决很简单,出现访问不了只有三种情况:
1,端口不通
2,防火墙没有关闭
3,安全组策略(这种一般忽略掉)
 
基于ELK一次集群实战
解决方案:
1,看看ip (一般linux能连ip是没有问题的)

 
基于ELK一次集群实战
2,看看端口是否开放:
telnet> telnet 192.168.85.180 9200
基于ELK一次集群实战
2,curl 192.168.85.180:9200
 
基于ELK一次集群实战
3,wget 192.168.85.180:9200
 
基于ELK一次集群实战
这里2和3的方式都可以分析出原因了,什么原因?防火墙没有关闭,所以这个问题,记得一定要关闭。
systemctl stop firewalld.service
关闭在启动:

 
基于ELK一次集群实战
还是报错这是什么问题?很明显我们的es做了集群如果断开网络连接,nodes会有缓存,那么切换root用户直接清除。

 
基于ELK一次集群实战
在启动端口占用:

 
基于ELK一次集群实战
查找进程直接杀掉:
netstat -tunlp | grep 9200
基于ELK一次集群实战
继续启动:

 
基于ELK一次集群实战
 
基于ELK一次集群实战
访问:

 
基于ELK一次集群实战
启动另外2台es,这边克隆过来修改集群配置即可:
##ip一定要保持一致
discovery.zen.ping.unicast.hosts: ["192.168.85.187", "192.168.85.188","192.168.85.180"]
discovery.zen.minimum_master_nodes: 1
node.name: node-clster02 ##可以不一样
cluster.name: my-yang  ##三台必须一样
http.port: 9200


启动成功另外两台:

 
基于ELK一次集群实战
 
基于ELK一次集群实战


我们访问节点信息
http://192.168.85.180:9200/_cat/nodes?pretty
基于ELK一次集群实战
如果节点信息不同步请删除 data目录的nodes节点就可以啦。

 

Kibana环境安装

tar -zxvf kibana-6.4.3-linux-x86_64.tar.gz
vim config/kibana.yml
# 将默认配置改成如下:
server.port: 5601
server.host: "192.168.85.180"
elasticsearch.url: "http:// 192.168.85.180:9200
 
基于ELK一次集群实战
卑微的感到电脑卡得不行了好启动
./bin/kibana
基于ELK一次集群实战
基于ELK一次集群实战
访问:

 
基于ELK一次集群实战
索引的操作我就不细说了,很简单。
基于ELK一次集群实战
我们把配置复制到Logstash
基于ELK一次集群实战
input {
    # 从文件读取日志信息 输送到控制台
    file {
        path => "/opt/elasticsearch/logs/my-yang.log"
        codec => "json" ## 以JSON格式读取日志
        type => "elasticsearch"
        start_position => "beginning"
    }
}
 #可以多个input output
# filter {
#
# }
 
output {
    # 标准输出
    # stdout {}
    # 输出进行格式化,采用Ruby库来解析日志  
     stdout { codec => rubydebug }
         elasticsearch {
        hosts => ["192.168.85.185:9200"]
        index => "es-%{+YYYY.MM.dd}"
    }      
}
  


启动
基于ELK一次集群实战
启动成功后就是这样。我的电脑卡分屏啦,es还是很吃电脑内存的。
基于ELK一次集群实战


这边的es停掉过后Kiabana 这边会报错,意思先启动es在启动Kiabana
基于ELK一次集群实战
启动成功后自动同步es日志。到这一步基本上就成功了。logstash通过把日志转换成json的方式输出到es索引里面,索引不会丢失做了集群,这样就可以做日志收集啦,是不是很nice
基于ELK一次集群实战
我们通过Kiabana查询索引这个就是我们日志自动生成的索引,已经可以搜索日志了大功告成!!

 
基于ELK一次集群实战
下面给大家演示一个es高可用
我停掉一个es,然后剩下2台
192.168.85.188为主180为从
基于ELK一次集群实战
我们可以看到es走的取模算法的方式把不通的索引文档放在不通的集群节点的机器里面,保证了高可用。
基于ELK一次集群实战
直到最后一台es:
基于ELK一次集群实战
我们可以还是查询到数据
基于ELK一次集群实战
es高可用原理:

 
基于ELK一次集群实战

总结:

1,es集群会出现的问题,节点数据不同步。
删除data/nodes节点信息
2,Logstash日志收集可能出现不同步问题。
日志目录不对,权限没有指定到用户组用户信息。
3,其他问题
创作不易感谢大家支持,侵权必究。欢迎指正讨论,你的支持是我的动力。
 


Tags:ELK   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14  Tags: ELK  点击:(97)  评论:(0)  加入收藏
在我们的服务器上通常会生成各种日志文件,比如系统日志、 应用日志、安全日志。当系统发生故障时,工程师需要登录到服务器上,在日志里查找故障原因。如果定位到处理请求的服务...【详细内容】
2021-06-01  Tags: ELK  点击:(159)  评论:(0)  加入收藏
开始之前先了解一下什么是ELK ELK:大型分布式日志分析系统ELK elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据)Elasticsearch:Elasticsearch (ES)是一个基于Luce...【详细内容】
2021-04-30  Tags: ELK  点击:(186)  评论:(0)  加入收藏
本文介绍使用docker安装部署Filebeat与Elasticsearch、Logstash、Kibana(简称ELK)全家桶7.5.1。如果熟悉框架的话,直接copy配置文件与docker命令,简单删减和修改路径,即可快速启...【详细内容】
2021-03-22  Tags: ELK  点击:(428)  评论:(0)  加入收藏
Loki 作为一个新兴的日志解决方案,现在越来越受到关注。经过调研比较,我们正在将日志服务底层逐步从 ES 替换为 Loki 。图片来自 Pexels本文基于我们对 Loki 的使用和理解,从它...【详细内容】
2020-12-23  Tags: ELK  点击:(143)  评论:(0)  加入收藏
一般提到监控,很多人就会想到监控服务器运行状态,网络运行状态。其实由于业务需要,服务器和网络设备每时每刻产生的海量日志也同样的重要。 为什么选用ELK? 首先我们来了解一下E...【详细内容】
2020-11-18  Tags: ELK  点击:(134)  评论:(0)  加入收藏
本篇主要讲工作中的真实经历,我们怎么打造亿级日志平台,同时手把手教大家建立起这样一套亿级 ELK 系统。日志平台具体发展历程可以参考上篇 「从 ELK 到 EFK 演进」废话不多...【详细内容】
2020-07-27  Tags: ELK  点击:(55)  评论:(0)  加入收藏
最近,在对公司容器云的日志方案进行设计的时候,发现主流的ELK或者EFK比较重,再加上现阶段对于ES复杂的搜索功能很多都用不上最终选择了Grafana开源的Loki日志系统,下面介绍下Lok...【详细内容】
2020-06-15  Tags: ELK  点击:(88)  评论:(0)  加入收藏
前言起源许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,...【详细内容】
2020-06-13  Tags: ELK  点击:(43)  评论:(0)  加入收藏
本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意义),生产环境请根据具体需...【详细内容】
2020-06-12  Tags: ELK  点击:(57)  评论:(0)  加入收藏
▌简易百科推荐
1增1.1【插入单行】insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values (&#39;开心朋朋&#39;,&#39;男&#39;,&#39;1980/6/15&#3...【详细内容】
2021-12-27  快乐火车9d3    Tags:SQL   点击:(1)  评论:(0)  加入收藏
最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫, 不知道各种写法孰优孰劣,该选用哪种写法,以及各种写法的优缺点,本文以一个简单的查询...【详细内容】
2021-12-23  linux上的码农    Tags:sql   点击:(9)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的HasorDB 是一个全功能数据库访问工具,提供对象映射、丰...【详细内容】
2021-12-22  GitHub精选    Tags:HasorDB   点击:(5)  评论:(0)  加入收藏
作者丨Rafal Grzegorczyk译者丨陈骏策划丨孙淑娟【51CTO.com原创稿件】您是否还在手动对数据库执行各种脚本?您是否还在浪费时间去验证数据库脚本的正确性?您是否还需要将...【详细内容】
2021-12-22    51CTO  Tags:Liquibase   点击:(3)  评论:(0)  加入收藏
场景描述:由于生产环境的表比较复杂,字段很多。这里我们做下简化,只为说明今天要聊的问题。有两张表 tab1,tab2: tab1 数据如下: tab2 数据如下: 然后给你看下,我用来统计 name=&#3...【详细内容】
2021-12-20  Bald    Tags:SQL   点击:(5)  评论:(0)  加入收藏
前言知识无底,学海无涯,知识点虽然简单,但是比较多,所以将MySQL的基础写出来,方便自己以后查找,还有就是分享给大家。一、SQL简述1.SQL的概述Structure Query Language(结构化查...【详细内容】
2021-12-16  谣言止于独立思考    Tags:SQL基础   点击:(13)  评论:(0)  加入收藏
前言作为一名测试工程师,工作中在对测试结果进行数据比对的时候,或多或少要和数据库打交道的,要和数据库打交道,那么一些常用的 SQL 查询语法必须要掌握。最近有部分做测试小伙...【详细内容】
2021-12-14  柠檬班软件测试    Tags:SQL   点击:(15)  评论:(0)  加入收藏
话说C是面向内存的编程语言。数据要能存得进去,取得出来,且要考虑效率。不管是顺序存储还是链式存储,其寻址方式总是很重要。顺序存储是连续存储。同质结构的数组通过其索引表...【详细内容】
2021-12-08  小智雅汇    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
概述DBConvert Studio 是一款强大的跨数据库迁移和同步软件,可在不同数据库格式之间转换数据库结构和数据。它将成熟、稳定、久经考验的 DBConvert 和 DBSync 核心与改进的现...【详细内容】
2021-11-17  雪竹聊运维    Tags:数据库   点击:(26)  评论:(0)  加入收藏
一、前言 大家好,我是小诚,《从0到1-全面深刻理解MySQL系列》已经来到第四章,这一章节的主要从一条SQL执行的开始,由浅入深的解析SQL语句由客户端到服务器的完整执行流程,最...【详细内容】
2021-11-09  woaker    Tags:SQL   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条