ELK日志分析平台环境部署 (yum安装)
前言:通常体质被分散存储在不同的设备上面,在庞大的服务器集群中,我们需要集中化的管理,日志的统计和检索,一般我们使用grep和awk,wc等linux命令虽然能够实现检索和统计,但是呢,对于要求更高的查询,排序等环境会有很大的压力和瓶颈;于是我们需要对于日志进行集中化的管理,将所有机器上面的日志信息进行收集,汇总到一起,完整的日志数据具有非常重要的作用;
1)信息查找 ,通过检索日志信息,定位相应的bug,及时找出解决方案
2)服务诊断(信息判断),通过检索日志信息,进行统计和分析,从而了解服务器的负载情况和运行状态,判断问题的所在点
3)数据分析,如果是格式化的log日志,可以做进一步的数据分析,统计和检索,汇总出最具价值的信息;

【ELK组成结构】
1)Elasticsearch:基于lucnne(卢斯)的开源分布式搜索引擎,同时是基于java开发的,其主要特点:分布式,零配置,自动发现 ,索引分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等
Ps:关键词详解:
Lucene:是一款高性能,可扩展的信息检索工具库,信息检索是指文档搜索,文档内信息搜索或者文档相关的元数据搜索等操作
Restful:对于rest理解就是web服务的一种架构风格,面向资源的资源的架构,使用不同的协议实现轻量级,跨品台,跨语言的架构设计;同时是一种思想设计;
索引分片::在elasticsearch中索引是一个保存相关数据的地方,索引实际上是指向一个或多个物理分片的逻辑命名空间;在这里,需要知道,一个分片就是一个lucene实例,本身就是一个完整的搜索引擎,·我们的数据都存储和索引到分片内;ES就是利用分片将数据分发到集群各处,可以理解为分片是数据的容器,分片又被分配到集群各个节点,使得数据得以均衡;
2)Logstash:是一个完全开源的工具 ,可以对日志进行收集 ,过滤,并将其存储供以后使用(也就是搜索。工作 模式是C/S架构,Clinet端安装在需要收集日志的机器上,server负责将收集到的日志信息数据进行过滤,一并发给elasticsearch)
3)Kibana可以理解为基于浏览器页面的elasticsearch前端展示工具,也是开源免费的工具,为logstash和elasticsearch提供日志分析友好的web界面,可以实现汇总,分析和搜索重要的数据日志;
Ps:logstash和elasticsearch是用java语言编写的,而kibana是使用node.js框架,所以说在配置ELK环境要保证JDK开发库;
【ELK原理剖析】

如上所示:LEK原理也就是工作流程,通过Logstash手机客户端app的日志信息数据,将所有的日志过滤出来,并存到Elasticsearch搜索引擎里,然后通过Kibana GUI在web前端展示给用户,用户需要可以进行查看指定的日志内容信息;
加入Redis之后的ELK的工作流程:
Logstash包含了indexer和Agent(shipper),Agent负责客户端监控和过滤日志,而index负责日志并将日志信息交给elasticsearch,随后 elasticsearch将日志存储到本地,并建立索引,提供搜索,Kibana可以从Elasticsearch中获取想要的日志信息,最后再展示给用户 ;

【集中式日志系统特点汇总】
1)收集:能够收集到各种来源的日志信息
2)传输;能够稳定且实时有效的将数据传输到中央系统
3)存储:如何有效的将日志 进行索引分片处理
4)分析:通过 Kibana CUI进行展示分析
5)告警:能够抓住关键性信息数据,进行告警处理
【ELK部署方案详解】
Logstash是一个ETL工具,负责从每个台机器上采集日志数据,对数据进行有效过滤和处理,传输到Elasticsearch中存储,Elasticsearch是一个分布式搜索分析引擎 ,主要用于存储数据 同时提供实时的数据查询,Kibana是一个数据可视化的web服务展示平台,根据用户选择性的要求从Elasticsearch中查询数据,形成相应的分析结果,以图形化的形式展示给用户
思路:
1)在每台需要收集日志的机器上面部署Logstach,作为Shipper的角色,监控抓取和过滤日志信息,并将其传输到Redis消息列队中,另一个角色Index,负责从Redis中获取数据。对数据进行格式化和相关操作后,输出到Elasticsearch中存储
2)部署Elasticsearch,取决于日志信息量了,如果 数据量大,则需要做集群,集群最好三个节点以上,同时还需要部署相关的监控软件
那么问题来了?为什么不在每台机器上面部署 Logstach直接获取数据,处理并存入Elasticsearch呢?
首先有三个优势:
第一:减轻日志所在机器的负载压力,本身每台机器上面都存在着应用服务所带来的压力,如果继续在这台机器上去搞事情,岂不是崩溃了?
第二:既然收集日志信息,那么收集对象数据量相当庞大,如果 所有机器持续向Elasticsearch中持续写入数据,必然造成Elasticsearch压力过大,导致Elasticsearch“撑死”,所以需要给Elasticsearch有个缓冲的机会,同样日志信息量不丢失;
第三:将日志信息格式化处理和传输的工作交给indexer去做,这样可以在修改同时,避免复杂度,Indexer 作为索引管理工具,提供了批量索引导入、清空索引、刷新索引队列、日志等各项功能
【拓展】
我们需要做的是将数据放入一个消息列队中进行缓冲,redis只是其中的一个选择,还有另外RabbitMQ和Kafka两种方式,其实在生产环境中,用的比较多 的是redis和kafka,但是由于Redis集群一般都是通过key来做分片,无法对list类型做集群,在数据量比较庞大的时候,就不合适了,而kafka天生就是分布式消息 队列系统
【Elasticsearch】
[root@elasticsearch ~]# yum install -y java

[root@elasticsearch ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@elasticsearch ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=http://packages.elastic.co/elasticsearch/5.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
1)配置
[root@elasticsearch ~]# mkdir /data/elasticsearch-data -p
[root@elasticsearch ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml #修改elasticsearch配置文件
cluster.name: bixiaoyu #组名(集群相同组必须要一致)
node.name: elasticsearch #节点名称,建议与主机名一致
path.data: /data/elasticsearch-data/ #数据存放位置(ps:数据存放位置是我们刚刚创建的目录路径)
path.logs: /var/log/elasticsearch/elasticsearch.log #日志存放位置
bootstrap.memory_lock: true 锁住内存,不被使用到交换分区中
network.host: 0.0.0.0 #网络设置
http.port: 9200 #elasticsearch默认端口
[root@elasticsearch ~]# chown -R elasticsearch:elasticsearch /data/
[root@elasticsearch ~]# systemctl start elasticsearch
[root@elasticsearch ~]# chkconfig elasticsearch on
注意:正在将请求转发到“systemctl enable elasticsearch.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@elasticsearch ~]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
Active: active (running) since 三 -- :: CST; 13min ago
Docs: http://www.elastic.co
Main PID: (java)
CGroup: /system.slice/elasticsearch.service
└─2425 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction= -XX:+... 5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][env ] [Tessa] using [] data paths, mou...[rootfs]
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][env ] [Tessa] heap size [.6mb], com...s [true]
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][node ] [Tessa] initialized
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][node ] [Tessa] starting ...
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][transport ] [Tessa] publish_address {127.0......:}
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][discovery ] [Tessa] elasticsearch/4zbxGI80SvOJLFh7Y2slxg
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][cluster.service ] [Tessa] new_master {Tessa}{4zbxGI...eceived)
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][http ] [Tessa] publish_address {127.0......:}
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][node ] [Tessa] started
5月 :: elasticsearch elasticsearch[]: [-- ::,][INFO ][gateway ] [Tessa] recovered [] indices int...er_state
Hint: Some lines were ellipsized, use -l to show in full.
PS:通过状态可以看出elasticsearch设置的内存最小为256m,最大1G
[root@elasticsearch ~]# netstat -antlp | grep -E "9200|9300"

ELK日志分析平台环境部署 (yum安装)的更多相关文章
- ELK实时日志分析平台环境部署--完整记录
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- ELK实时日志分析平台环境部署--完整记录(转)
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- ELK实时日志分析平台环境部署,以及可视化展示
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent) ...
- ELK实时日志分析平台环境部署
为什么要用到ELK一般我们需要进行日志分析场景是:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办 ...
- ELK实时日志分析平台环境部署--完整记录(ElasticSearch+Logstash+Kibana )
https://blog.csdn.net/oLevin/article/details/81020794
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...
- ELK 日志分析系统概述及部署
ELK 日志分析系统概述及部署 1.ELK概述: ELK简介 : ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch.Logstash 和 Kiabana 三个开源工具配合使用 ...
- ELK日志分析平台.1-搭建
ELK日志分析平台.1-搭建 2017-12-28 | admin 一.简介1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elastic ...
- ELK日志分析平台
ELK日志分析平台 ELK(1): ELK-简介 ELK(2): ELK-安装环境和安装包 ELK(3): ELK-安装elasticsearch ELK(4): ELK-安装logstash ...
随机推荐
- ubuntu14.04上源码安装openssl1.0.2k
卸载自带openssl sudo apt-get remove openssl 解压文件tar -xzf openssl-1.0.2k.tar.gz 配置 sudo ./config shared - ...
- python获取esxi的磁盘使用率信息
#!/usr/bin/python3 #coding:utf-8 #Author: ziming """ 只用于模拟开发功能测试 """ f ...
- elasticsearch自动按天创建索引脚本
elasticsearch保存在一个索引中数据量太大无法查询,现在需要将索引按照天来建,查询的时候关联查询即可 有时候es集群创建了很多索引,删不掉,如果是测试环境或者初始化es集群(清空所有数据), ...
- 移动端触屏滑动touches使用
代码 var start = { x: 0, y: 0 } var end = { x: 0, y: 0 } document.addEventListener('touchstart', funct ...
- DataGridView中进行增删改查
首先我们需要知道是在哪个数据库中的哪个表进行增删改查: 这就需要我们: 建立给连接服务器的类:(可以在方法类中建立) 建立一个对列名进行封装的类:方便数据之间的传接:(学到Linq-sql时这些就简便 ...
- iOS -- Effective Objective-C 阅读笔记 (3)
1: 理解 属性 的概念 属性会自动生成存取方法, 可以利用点语法调用, 若不想编译器自动合成存取方法, 可以自己实现, 还有另外一种方法, 就是使用 @dynamic 关键字, 它会告诉编译器, ...
- 在Amazon FreeRTOS V10中使用运行时统计信息
在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文,一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章,本人觉得很有启发,特将其翻译过来以备参考 ...
- Confluence 6 编辑一个站点装饰文件
希望编辑一个站点的 decorator 文件: 进入 > 基本配置(General Configuration) > 布局(Layouts )(在Look and Feel 菜单下面) ...
- Confluence 6 你模板中可用的对象
包含宏正文和参数,下面的 Confluence 对象在宏中可用: $body 宏的正文(如果宏有正文的话) String $paramfoo, $parambar, ...$param<name ...
- 新版Go2Shell 安装详解
Go2Shell 下载地址 https://zipzapmac.com/Go2Shell 安装说明 1,首先下载好程序,然后运行到下面界面 2 然后将程序拖到下面位置 3,然后执行install Go ...