ELK扫盲以及搭建

1. ELK部署说明

1.1ELK介绍:

1.1.1 ELK是什么?

ELK是三个开源软件的缩写,分别表示:ElasticSearch , Logstash, Kibana , 它们都是开源软件,ELK指依靠这三个软件组合起来搭建的日志收集分析系统。

ElasticSearch:

开源的分布式搜索引擎,可以用来存储和搜索数据,可以看成是一个分布式数据库,蜂巢,对外提供rest风格的http接口来操作数据。

Logstash:

      日志搜集过滤工具,角色为搬运工,从A处把数据搬运到B处,自己本身不处理数据,在ELK里通常用于把数据搬运到ElasticSearch存储,就像采蜜的蜜蜂。

Kibana:

      为ElasticSearch提供可视化的搜索、分析服务,就像是ElasticSearch的管理后台,可以用界面的方式来搜索ElasticSearch的数据。

1.1.2我们用ELK解决什么问题?

互联网应用为了可用性和吞吐量等考虑,往往应用服务器不可能只有一台,通常部署多台应用服务器作为集群,靠负载均衡的方式访问,这样带来的问题就是请求和日志分散在多台机器上,需要排查问题时需要挨台挨台服务器去查看日志,两三台服务器还勉强能接受,万一有一百台服务器又该如何查呢?

如果有一种工具能帮助我们把集群的日志全搜集到一处,查询集群日志就像查询单机应用一样方便,就可以节省很多时间精力。

最基本的ELK架构:

1.jpg
2.jpg

1.2 ELK拓补图:

3.jpg

1.3 部署节点说明:

1.ElasticSearch、Kibana节点:xxxx。

2.Logstash节点:各个应用节点,每个节点部署一个logstash,采集应用日志后向ElasticSearch节点xxxxxx:9200发送,由ElasticSearch节点存储。

3.nginx代理节点:由nginx对xxxxx:5601 kibana服务进行代理,nginx代理负责校验用户名和密码,然后跳转到kibana服务。

ELK架构中最核心的部分是ElasticSearch节点,由于ElasticSearch对内存消耗很大,所以单独使用一台服务器独立部署,防止抢占应用服务器资源影响应用稳定性。

2. ELK的安装

准备工作:

  1. 服务器端创建elk安装目录,例如/usr/local/elk。

  2. 将elk安装文件目录下的elk_install.tar.gz压缩包上传到服务器/usr/local/elk目录下,执行tar –xvf elk_install.tar.gz命令解压,得到如下目录:

4.jpg

2.1安装ElasticSearch

执行cd elasticsearch-6.1.4/config命令,进入elasticsearch配置文件目录,可以看到有三个配置文件:

5.jpg

各个文件作用如下:

1.elasticsearch.yml:elasticsearch的核心配置文件,用来配置集群节点名称、内存、网络等参数。

2.jvm.options:配置elasticsearch的jvm相关参数,例如初始堆大小、最大堆大小、垃圾收集器类型、GC日志等。

3.log4j2.properties:配置日志格式。

首先配置elasticsearch.yml文件,下面是初始elasticsearch.yml文件截图:

6.jpg

首先找到如下参数,去掉前面的#注释并配置:

cluster.name: my-application #集群名称,集群唯一标示

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

network.host: 0.0.0.0 #能被哪个本机ip监听到,四个0表示所有本机ip都可以访问

http.port: 9200 #elasticsearch http方式访问端口,默认9200

文件末尾追加如下配置

http.cors.enabled: true

http.cors.allow-origin: "*"

node.master: true

node.data: true

注意:每个配置参数的”:”后面要加个空格,正例:name: value,反例:name:value。

接下来配置jvm参数,编辑jvm.options文件,官网提示除非对jvm理解十分深刻不然尽量不要动垃圾收集器相关配置,我们只配置堆大小。

-Xms2g # 初始堆大小,单位为g或者m,此处设置为和最大堆大小一样

-Xmx2g # 最大堆大小,官方文档建议设置为机器内存的一半,最大不能超过32G,否则将不能使用jvm的对象指针压缩技术,如果机器内存十分大,可以考虑虚拟化出多个32G虚拟机。此参数只能限制elasticsearch最多使用这么多堆内存,而elasticsearch内置的lucene则不受限制,根据自己的需要来吃掉剩余内存,没有可以限制最大的配置。

配置完成后,执行bin/elasticsearch命令启动elasticsearch,浏览器访问http://ip:9200如果出现elasticsearch节点信息说明完成了单机安装。

[图片上传中...(image.png-2aa3a3-1578386539197-0)]

2.2安装Logstash

进入logstash-6.1.4/config目录,创建logstash.conf文件配置logstash的日志收集策略,这个文件的配置内容用一句话描述就是日志从哪里来(input),到哪里去(output),中间有个过滤器(filter)进行格式转换和放行的操作。

8.jpg

此处直接使用配置好的config/logstash.conf模版即可,修改path参数为日志文件的绝对路径。想了解各个参数的作用,请看下面配置模版的注释:

配置logstash的堆大小,打开config/jvm.options文件,编辑如下两个参数:

-Xms500m # 单位g和m,初始堆大小

-Xmx500m # 单位g和m,最大堆大小

这两个参数官方文档没有推荐的配置,根据自己的日志量和机器配置调整即可。

配置完成后,运行bin/logstash –f config/logstash.conf命令即可启动logstash

2.3安装Kibana

进入kibana-6.1.4-linux-x86_64\config目录,将kibana.yml文件的server.host参数注释去掉,按如下配置:

server.host: "0.0.0.0" # kibana可以绑定在本机哪个ip上,四个0表示所有ip都能访问kibana

返回上级目录,运行bin/kibana命令即可启动kibana,浏览器访问http://ip:5601看到kibana首页说明安装成功。

image.png

2.3设置nginx代理

由于kibana自身不具备登录功能,想使用登录功能需要使用xpack付费插件实现。而直接把kibana的日志查看页面暴露给外网无异于裸奔,所以需要使用nginx对kibana的访问地址做一层代理,禁用掉kibana端口5601,外网访问nginx的地址,录入用户名和密码通过nginx的鉴权后由nginx转发到kibana。

参考博客:

https://blog.csdn.net/dwyane__wade/article/details/80190771

3. ELK的启动关闭

ELK启动顺序:首先启动ElasticSearch,然后启动Kibana或者Logstash。

ELK关闭顺序:Logstash->Kibana->ElasticSearch。

3.1启动ElasticSearch

1.进入到ElasticSearch安装目录:

cd /usr/local/elk/elasticsearch-6.1.4

  1. ElasticSearch不能使用root账户启动,需要切换到elk_user用户:

su elk_user

  1. 启动ElasticSearch:

bin/elasticsearch &

  1. 访问http:// ip地址:9200,看到如下返回信息则为启动成功
image.png

3.2关闭ElasticSearch

  1. 查看ElasticSearch是否正在运行:

ps -aux|grep elasticsearch| grep -v grep

11.jpg
  1. 如果正在运行,查看进程id:

ps -aux|grep elasticsearch| grep -v grep | awk '{print $2}'

12.jpg
  1. 执行kill命令,停止进程:
    

kill -9进程id

3.3启动Kibana

  1. 进入kibana安装目录:

cd /usr/local/elk/kibana-6.1.4-linux-x86_64

  1. 启动kibana:

bin/kibana

3.4 关闭Kibana

  1. 查看Kibana是否正在运行:

ps -aux|grep kibana| grep -v grep

13.jpg
  1. 如果正在运行,查看进程id:

ps -aux|grep kibana| grep -v grep | awk '{print $2}'

14.jpg
  1. 执行kill命令,停止进程:

kill -9进程id

3.5启动Logstash

  1. 进入Logstash安装目录:

cd /usr/local/elk/logstash-6.1.4

2.启动Logstash:

      bin/logstash -f config/logstash.conf &

3.看到如下启动日志说明启动成功:

15.jpg

3.6关闭Logstash

  1. 查看logstash是否正在运行:

ps -aux|grep logstash | grep -v grep

16.jpg
  1. 如果正在运行,查看进程id:

ps -aux|grep logstash | grep -v grep | awk '{print $2}'

17.jpg
  1. 执行kill命令,停止进程:

kill -9 进程id

3. ELK性能参数配置

常用参数都已经在/usr/local/elk/elasticsearch-6.1.4/elasticsearch.yml和/usr/local/elk/logstash-6.1.4/config/logstash.yml文件里配置完成并且标上注释,下面主要说明影响ELK稳定性、日志采集实时性、吞吐量的参数。

3.1ElasticSearch主要性能参数

3.1.1 jvm参数文件/usr/local/elk/elasticsearch-6.1.4/config/jvm.options

初始堆内存大小,单位g、m,最大不超过服务器可用内存一半,不超过32G

-Xms2g

最大堆内存大小,单位g、m,最大不超过服务器可用内存一半,不超过32G

-Xmx2g

3.2 Logstash主要性能参数

3.2.1 jvm参数文件:/usr/local/elk/logstash-6.1.4/config/jvm.options

初始堆内存大小,单位g、m,最大不超过服务器可用内存一半,不超过32G

-Xms2g

最大堆内存大小,单位g、m,最大不超过服务器可用内存一半,不超过32G

-Xmx2g

3.2.2 logstash核心配置文件:/usr/local/elk/logstash-6.1.4/config/logstash.yml

pipeline线程数,官方建议是等于CPU内核数,实际上不配置的话默认=核数。当采用应用服务器端用filebeat采集日志发往logstash独立服务器,由logstash来往es做索引时,这样没问题。甚至filter处理逻辑较多时,可以稍大于cpu核数,因为cpu密集和存在io等待。

由于我们把logstash和应用部署在一起,不建议>=内核数,会和应用的线程抢占cpu,暂时设为2。

pipeline.workers: 2

实际output时的线程数,目前为默认1

pipeline.output.workers: 1

每次发送的事件数,目前不做配置,默认。当日志量特别大时,可以考虑调大事件数(pipeline.batch.size)和延时(pipeline.batch.delay),提高logstash每次发送的日志量,减少发送频率

pipeline.batch.size: 125

发送延时 ,目前不做配置,默认5s

pipeline.batch.delay: 5

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

推荐阅读更多精彩内容