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.2 ELK拓补图:
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命令解压,得到如下目录:
2.1安装ElasticSearch
执行cd elasticsearch-6.1.4/config命令,进入elasticsearch配置文件目录,可以看到有三个配置文件:
各个文件作用如下:
1.elasticsearch.yml:elasticsearch的核心配置文件,用来配置集群节点名称、内存、网络等参数。
2.jvm.options:配置elasticsearch的jvm相关参数,例如初始堆大小、最大堆大小、垃圾收集器类型、GC日志等。
3.log4j2.properties:配置日志格式。
首先配置elasticsearch.yml文件,下面是初始elasticsearch.yml文件截图:
首先找到如下参数,去掉前面的#注释并配置:
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)进行格式转换和放行的操作。
此处直接使用配置好的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首页说明安装成功。
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
2. ElasticSearch不能使用root账户启动,需要切换到elk_user用户:
su elk_user
3. 启动ElasticSearch:
bin/elasticsearch &
4. 访问http:// ip地址:9200,看到如下返回信息则为启动成功
3.2关闭ElasticSearch
1. 查看ElasticSearch是否正在运行:
ps -aux|grep elasticsearch| grep -v grep
2. 如果正在运行,查看进程id:
ps -aux|grep elasticsearch| grep -v grep | awk '{print $2}'
4. 执行kill命令,停止进程:
kill -9进程id
3.3启动Kibana
1. 进入kibana安装目录:
cd /usr/local/elk/kibana-6.1.4-linux-x86_64
2. 启动kibana:
bin/kibana
3.4 关闭Kibana
1. 查看Kibana是否正在运行:
ps -aux|grep kibana| grep -v grep
2. 如果正在运行,查看进程id:
ps -aux|grep kibana| grep -v grep | awk '{print $2}'
3. 执行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.看到如下启动日志说明启动成功:
3.6关闭Logstash
1. 查看logstash是否正在运行:
ps -aux|grep logstash | grep -v grep
4. 如果正在运行,查看进程id:
ps -aux|grep logstash | grep -v grep | awk '{print $2}'
5. 执行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
ELK扫盲及搭建的更多相关文章
- ELK+FileBeat+Log4Net搭建日志系统
ELK+FileBeat+Log4Net搭建日志系统 来源:https://www.zybuluo.com/muyanfeixiang/note/608470 标签(空格分隔): ELK Log4Ne ...
- ELK平台的搭建
ELK是指Elasticsearch + Logstash + Kibaba三个组件的组合.本文讲解一个基于日志文件的ELK平台的搭建过程,有关ELK的原理以及更多其他信息,会在接下来的文章中继续研究 ...
- ELK - MAC环境搭建
ELK - MAC环境搭建 本文旨在记录elasticsearch.logstash.kibana在mac下的安装与启动. 写在前面 ELK的官方文档对与它们的使用方法已经讲的非常清楚了,这里只对相关 ...
- [elk]停电日志离线恢复故障处理-elk环境极速搭建
es数据手动导入 周末停电了两天,发现两天的日志没导入: 原因: 1. elk开启没设启动 2.日志入库时间是当前时间,不是日志本身的time字段 - 导入步骤 1. 先把日志拖下来 2. 事先需要干 ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...
- spring mvc+ELK从头开始搭建日志平台
最近由于之前协助前公司做了点力所能及的事情,居然收到了一份贵重的端午礼物,是给我女儿的一个乐高积木,整个有7大包物件,我花了接近一天的时间一砖一瓦的组织起来,虽然很辛苦但是能够从过程中体验到乐趣.这次 ...
- 基于Docker的ELK日志平台搭建
1.安装Docker Docker可简单理解为一个轻量级的虚拟机.Docker对进程进行封装隔离,隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器.Docker和传统虚拟化方式的不同.传统虚拟 ...
- Windows环境下ELK平台的搭建
.背景 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采 ...
- elk日志平台搭建小记
最近抽出点时间,搭建了新版本的elk日志平台 elastaicsearch 和logstash,kibana和filebeat都是5.6版本的 中间使用redis做缓存,版本为3.2 使用的系统为ce ...
随机推荐
- scrapy请求发送详解
scrapy自动发送请求 对start_urls列表中存储的起始url进行过请求的发送并没有通过手动实现,但是在parse函数中还是获取到了响应数据,这是因为爬虫文件中的爬虫类继承到了Spider父类 ...
- Hexo进阶设置
部署平台选型 前言 GitHub和Gitee(码云)是国内外比较流行的代码托管平台,现都推出GitHub/Gitee Pages可以存放静态网页代码,因此可以用来搭建自己的博客. 优缺点 平台 优点 ...
- strut2登陆注册验证码
1. 生成图片和验证码 package com.jmu.code; import java.awt.Color; import java.awt.Font; import java.awt.Graph ...
- 【linux】linux下java环境安装
1:下载jdk的包,通过ftp传到服务器 2:解压 tar zxvf jdk-8u181-linux-x64.tar.gz 3:环境配置 编辑配置文件: vim /etc/profile 在文件下插入 ...
- 【谎言大揭秘】Modin真的比pandas运行更快吗?
最近看了某公众号文章,推荐了所谓的神器,据说读取速度吊打pandas,可谓牛逼,事实真是这样吗? 来一起揭秘真相. 首先安装包. # pip install ray # pip install das ...
- SpringMVC笔记总结
文章所有代码见:gitee 1.回顾MVC 1.1.什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离 ...
- Kivy中ActionBar控件的使用
这个控件可以作为导航栏来使用,效果非常好. 1. ActionBar包含的组件 ActionBar中需要一个ActionView作为容器来存放其他控件,比如:ActionPrevious.Action ...
- 应用4:利用Filter限制用户浏览权限
1. 使用 Filter 完成一个简单的权限模型: 1). 需求: ①. 管理权限 > 查看某人的权限 > 修改某人的权限 ②. 对访问进行权限控制: 有权限则可以访问, 否则提示: 没有 ...
- Java实现 LeetCode 347 前 K 个高频元素
347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输 ...
- Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
算法提高 特殊的质数肋骨 时间限制:1.0s 内存限制:256.0MB 问题描述 农民约翰母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是 ...