ELK入门及搭建使用

ELK入门及搭建使用

一、ELK是什么?

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana

1、Elasticsearch

这是一个基于Lucene的分布式全文搜索框架,可以对logs进行分布式存储。此为ELK的核心组件,日志的处理以及存储全部由Elasticsearch 完成。

2、Logstash

主要是用来日志的搜集、分析、过滤日志的工具,用来部署到各自的服务器上收集Log日志,通过内置的ElasticSearch插件解析后输出日志到ElasticSearch中。

3、kibana

可以多维度的展示Elasticsearch 中的数据。提供了丰富的UI组件,简化了使用难度。

二、ELK为什么用以及解决什么问题?

项目初期的时候,服务器数量较少,一般来说对日志没有过多的考虑,随着应用的越来越多,日志散落在各个服务器的logs文件夹下,想要查找日志需要在众多服务器上去逐一查找,效率非常低而且确实有很大的不方便。

当线上出现问题我们需要日志分析的时候大概会这么做:直接在日志文件中 grep ‘xx’ order.log就可以获得自己想要的信息。

那你们想过这种方式的问题吗?

1.日志量太大文本搜索太慢怎么办、如何多维度查询

2.应用太多,面临数十上百台应用时你该怎么办(难道只能一台一台的去服务器上找?)

3.随意登录服务器查询log对系统的稳定性及安全性肯定有影响

4.如果开发人员对Linux不太熟练,会造一定的困扰

ELK因此就应运而生,那么为什么要用ELK呢?ELK又能给我们解决哪些问题呢?

1.日志统一收集,管理,访问。查找问题方便安全

2.使用简单,可以大大提高定位问题的效率

3.可以对收集起来的log进行分析(建立日志可视化界面,使得日志分析更加便捷)

4.能够提供错误报告,监控机制(当异常触发时能够及时通过短信、邮件等方式通知相关负责人员)

三、ELK架构

3.1 Logstash作为日志收集器

这种架构是比较原始的部署架构,在各应用服务器端分别部署一个Logstash组件,作为日志收集器,然后将Logstash收集到的数据过滤、分析、格式化处理后发送至Elasticsearch存储,最后使用Kibana进行可视化展示,这种架构不足的是:

Logstash比较耗服务器资源,所以会增加应用服务器端的负载压力。

图片4.png

3****.2 Filebeat作为日志收集器****(****目前使用最多的是****这****种部署架构****,如果不需要logstash做过滤和监控告警等特殊处理,可以直接弃用logstash****)

该架构与第一种架构唯一不同的是:应用端日志收集器换成了Filebeat,Filebeat轻量,占用服务器资源少,将日志数据发送到Logstash或者Elasticsearch时,Filebeat 使用背压敏感协议,以应对更多的数据量。如果 Logstash 或者Elasticsearch正在忙于处理数据,则会告诉 Filebeat 减慢读取速度。一旦拥堵得到解决,Filebeat 就会恢复到原来的步伐并继续传输数据,所以使用Filebeat作为应用服务器端的日志收集器,一般Filebeat会配合Logstash一起使用(logstash主要是对日志消息进行过滤和传输及监控告警),这种部署方式也是目前最常用的架构。

图片3.png

3****.3 引入缓存队列的部署架构

该架构在第二种架构的基础上引入了Redis缓存队列(还可以是其他消息队列例如Kafka),将Filebeat收集到的数据发送至Redis,然后在通过Logstasth读取Redis中的数据,这种架构主要是解决大数据量下的日志收集方案,使用缓存队列主要是解决数据安全与均衡Logstash与Elasticsearch负载压力。

图片2.png

3****.4 以上三种架构的总结

第一种部署架构由于资源占用问题,现已很少使用,目前使用最多的是第二种部署架构,至于第三种部署架构除非是第二种架构不能满足性能要求或者有其他需求,因为在数据量较大的情况下,Filebeat 使用压力敏感协议向 Logstash 或 Elasticsearch 发送数据。如果 Logstash 正在繁忙地处理数据,它会告知 Filebeat 减慢读取速度。拥塞解决后,Filebeat 将恢复初始速度并继续发送数据。

四、搭建ELK

  1. 官方下载 :<u>https://www.elastic.co/cn/products</u>

版本:elasticsearch 5.6.12,logstash5.6.9,kibana5.3.0,filebeat5.6.3 四个版本(JDK需要1.8)

2、安装filebeat

(1)解压filebeat:tar zxvf filebeat-5.6.3-linux-x86_64

(2)filebeat-5.6.3-linux-x86_64目录下编辑filebeat.yml文件

filebeat.prospectors:

  • type: log

    enabled: true

    Paths that should be crawled and fetched. Glob based paths.

    paths:

    • /var/log/*.log

----------------------------- Logstash output --------------------------------

output.logstash:

The Logstash hosts

hosts: ["192.168.97.3:5044"] #logstash服务iP和端口,如果有多个logstash,可以写多个。

bin目录下启动filebeat,启动命令:./filebeat -e -c filebeat.yml

3.安装logstash

(1)解压logstash:tar zxvf logstash-5.6.9.tar.gz

(2)在config目录创建配置文件:logstash.conf

(3)logstash.conf 做好input ,filter,output三大块, 其中input是吸取logs文件下的所有log后缀的日志文件,filter是一个过滤函数,这里不用配置,output配置了导入到

hosts为192.168.97.3:9200的elasticsearch中,每天建一个索引。

input {

 #file {

 #   type => "log"

 #   path => "/logs/*.log"

 #   start_position => "beginning"

 #}

 beats {

    port => 5044

 }

}

output {

stdout {

codec => rubydebug { }

}

elasticsearch {

hosts => "192.168.97.3:9200"

index => "log-%{+YYYY.MM.dd}"

}

}

(4)bin目录下启动logstash,启动命令:./logstash -f ../config/logstash.conf,如果想要后台运行启动:./logstash -f ../config/logstash.conf &

4、安装elasticSearch

elasticSearch启动的时候需要注意,elasticSearch不能以root账号启动,所以还需要添加一个新账户。

4.1 解压:tar zxvf elasticsearch-5.6.4.tar.gz

4.2 添加新账户:useradd es,

对新账户授权:chown -R es:es /usr/local/soft/elasticsearch-5.6.4

4.3安装过程中可能会遇到如下几个问题:

(1)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决方法:vi /etc/security/limits.conf

user hard nofile 65536

user soft nofile 65536

(2)max number of threads [1024] for user [apps] is too low, increase to at least [2048]

解决办法:vi /etc/security/limits.d/90-nproc.conf

修改如下内容:

  • soft nproc 1024

修改为

  • soft nproc 2048

(3)max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解决办法:vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=655360

并执行命令:

sysctl -p

4.4 切换用户角色:su es ,在bin 目录下启动elasticSearch,启动命令:./elasticsearch ,如果需要后台启动:./elasticsearch -d

以上elasticsearch只是单机安装,集群安装如下:

4.5 同一台机器安装三台elasticsearch集群:cp -r elasticsearch-5.6.12 elasticsearch-n1、cp -r elasticsearch-5.6.12 elasticsearch-n2、cp -r elasticsearch-5.6.12 elasticsearch-n3。

elasticsearch-n1 目录的config目录下elasticsearch.yml文件编辑

cluster.name: my-es #集群名称

node.name: node-01 # 节点名称

node.master: true #主节点(候选)

node.data: true #存储数据

network.host: 192.168.97.3

http.port: 9200 #es对外提供访问的端口

transport.tcp.port: 9300 #es集群之间通信的端口

单播(unicast)协议,指定要发现的节点信息了,可以不指定端口[默认9300]

discovery.zen.ping.unicast.hosts: ["192.168.97.3","192.168.97.3:8300","192.168.97.3:7300"]

默认是1看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方的推荐值是(N/2)+1,如果只有2个节点设为1

discovery.zen.minimum_master_nodes: 2

====================================================================

elasticsearch-n2 目录的config目录下elasticsearch.yml文件编辑

cluster.name: my-es

node.name: node-02

node.master: false

node.data: true

network.host: 192.168.97.3

http.port: 8200

transport.tcp.port: 8300

discovery.zen.ping.unicast.hosts: ["192.168.97.3","192.168.97.3:8300","192.168.97.3:7300"]

discovery.zen.minimum_master_nodes: 2

======================================================================

elasticsearch-n3 目录的config目录下elasticsearch.yml文件编辑

cluster.name: my-es

node.name: node-03

node.master: true

node.data: true

network.host: 192.168.97.3

http.port: 7200

transport.tcp.port: 7300

discovery.zen.ping.unicast.hosts: ["192.168.97.3","192.168.97.3:8300","192.168.97.3:7300"]

discovery.zen.minimum_master_nodes: 2

5.安装kibana

(1)解压:tar zxvf kibana-5.3.0-linux-x86_64.tar.gz

(2)在config目录下的kibana.yml文件中指定一下你需要读取的elasticSearch地址和可供外网访问的bind地址就可以了

elasticsearch.url: "http://192.168.97.3:9200"

server.host: 0.0.0.0

(3)bin目录下启动kibana,启动命令:./kibana ,如果想要后台启动 :./kibana &

注意:

在es和logstash都安装成功后,一定要先往logstash里面写入日志,直到es的索引创建成功再来启动kibana。访问:<u>http://localhost:5601</u> 此时会进入配置界面,如下所示:其中红框的内容是es的索引名字正则表达式,和logstash里面(index => "log-%{+YYYY.MM.dd}")的一致。这里用log-*就可以匹配

图片1.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容