ELK—日志收集系统

1.要收集哪些日志?

①系统日志–为监控做准备

②服务日志–数据库–MySQL–慢查询日志、错误日志、普通日志

③业务日志–log4j(必须要收集的是业务日志

注:log4j—Java类的数据业务日志

(1)要有针对性的去收集

(2)调整日志级别

2.日志收集后,如何展示?(可视化)

①kibana

②grafana

3.日志收集展示出来后,怎么使用?

①用于给大数据进行分析,作为立体化展示的数据源

②给研发使用(排障、解决bug等等)

③统计数据流量、作为分析报告的数据源

ELK工作原理

【APPServer集群】–》【logstash Agent 采集器】–》【ElasticEsarch Cluster】–》【Kibana Server]–》【Browser】

Logstash收集AppServer产生的log,并存放到ElasticSearh集群中,而Kibana则从ES集群中查询数据生产图表,再返回给Browser。简单来说,进行日志处理分析,一般需要经过一下几个步骤

①将日志进行集中化管理(beats)

filebeat

topbeat

②将日志格式化(logstash)

③对格式化后的数据进行索引和存储(elasticsearch)

④前端数据的展示(kibana)

elasticsearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

elasticsearch的基础核心概念

1、接近实时(NRT)

是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)

2、集群(cluster)

一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。

一个集群可以只有一个节点。强烈建议在配置elasticsearch时,配置成集群模式。

3、节点(node)

节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能.像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名.当然,你可以自己定义.该名字也很重要,在集群中用于识别服务器对应的节点.

节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为elasticsearch的集群。

4、索引(index)

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识〈必须全部是小写字母的〉,并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,如果你想,可以定义任意多的索引。

索引相对于关系型数据库的库。

5、类型(type)

在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。

类型相对于关系型数据库的表

6、文档(document)

一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示,而uSON是一个到处存在的互联网数据交互格式。

在一个index/type里面,只要你想,你可以存储任意多的文档。注意,虽然一个文档在物理上位于一个索引中,实际上一个文档必须在一个索引内被索引和分配一个类型。

文档相对于关系型数据库的列。

7、分片和副片(shards & replicas)

在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上.或者从单个节点搜索请求太慢下飞为了解决这个问题,elasticsearchn提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。

**注:**分片的作用:

1.水平分割扩展,增大存储量

2.分布式并行跨分片操作,提高性能和吞吐量

副本的作用:

1.高可用性,以应对分片或者节点故障。出于这个原因,分片和副本要在不同的节点上

2.增大吞吐量,搜索可以并行在所有副本上执行

默认情况下ES是5个分片和一个副本

logstash

Logstash由JRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JWM)上。不同于分离的代理端(agent)或主机端(server),LogStash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能.

Logstash的理念很简单,它只做3件事情:

①Collect:数据输入

②Enrich:数据加工,如过滤,改写等

③Transport:数据输出

logstash主要组件

1.Shipper: 日志收集者

负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent〉只需要运行这个组件即可;

2.Indexer:日志存储者

负责接收日志并写入到本地文件。

3.Broker:日志Hub

负责连接多个shipper和多个Indexer

4.Search and Storage:允许对事件进行搜索和存储;

5.web Interface:基于web的展示界面

kibana

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用米搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编写代码,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。

主要功能

1、Elasticsearch无缝之集成。Kibana架构为Elasticsearch定制,可以将任何结构化和非结构化数据加入Elasticsearch索引。Kibana还充分利用了Elasticsearch强大的搜索和分析功能。

2、整合你的数据。Kibana能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、直方图、饼图和地图。

3、复杂数据分析。Kibana提升了Elasticsearch分析能力,能够更加智能地分析数据,执行数学转换并且根据要求对数据切割分块。

4、让更多团队成员受益。强大的数据库可视化接口让各业务岗位都能够从数据集合受益。

5、接口灵活,分享更容易。使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。

6、配置简单。Kibana的配置和启用非常简单,用户体验非常友好。Kibana自带web服务器,可以快速启动运行。

7、可视化多数据源。Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到slasticsearch,支持的第三方技术包括Apache Flume、Fluentd等。

8、简单数据导出。Kibana可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,发现新结果。

注:ES生产环境用的版本是7.10与7.20:,这两个版本启动必须是非root用户

实际操作

1、创建集群

1、配置基础环境

#关闭防火墙
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#hostnamectl set-hostname node1
[root@localhost ~]#su
[root@node1 ~]#vim /etc/hosts
192.168.223.101 node1
192.168.223.102 node2
192.168.223.103 httpd
#查看java环境
[root@node1 ~]#java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

2、部署elasticserch环境

#1.安装elasticserch-rpm包
[root@node1 ~]#cd /opt/
[root@node1 opt]#ls
rh
[root@node1 opt]#rz -E
rz waiting to receive.
[root@node1 opt]#rpm -ivh elasticsearch-5.5.0.rpm
警告:elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                          ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...1:elasticsearch-0:5.5.0-1          ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemdsudo systemctl daemon-reloadsudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executingsudo systemctl start elasticsearch.service
#加载系统服务
[root@node1 opt]#systemctl daemon-reload
[root@node1 opt]#systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.

3、更改配置文件

[root@node1 opt]#cd /etc/elasticsearch/
[root@node1 elasticsearch]#ls
elasticsearch.yml  jvm.options  log4j2.properties  scripts
[root@node1 elasticsearch]#vim elasticsearch.yml   ##生产环境建议备份一份17 cluster.name: my-cluster
#修改集群名字
23 node.name: node1
#开启即可
33 path.data: /data/elk_data
#数据目录
37 path.logs: /var/log/elasticsearch/
#日志文件路径
43 bootstrap.memory_lock: false
#内存锁取消
55 network.host: 0.0.0.0
#监听地址
59 http.port: 9200
#端口
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
#自动集群发现,加入主机名
[root@node1 elasticsearch]#grep -v "^#" elasticsearch.yml
cluster.name: my-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "nide2"]#创建数据存放路径并授权
[root@node1 elasticsearch]#mkdir -p /data/elk_data
[root@node1 elasticsearch]#chown elasticsearch.elasticsearch /data/elk_data/#启动
[root@node1 elasticsearch]#systemctl start elasticsearch.service
[root@node1 elasticsearch]#netstat -ntap|grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      42939/java

4、查看节点信息

查看集群状态

[root@node1 elasticsearch]#curl http://192.168.223.101:9200/_cluster/health?pretty
{"cluster_name" : "my-cluster","status" : "green","timed_out" : false,"number_of_nodes" : 2,"number_of_data_nodes" : 2,"active_primary_shards" : 0,"active_shards" : 0,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}
[root@node1 elasticsearch]#curl http://192.168.223.101:9200/_cluster/stats?pretty
{"_nodes" : {"total" : 2,"successful" : 2,"failed" : 0},"cluster_name" : "my-cluster","timestamp" : 1641217410030,"status" : "green","indices" : {"count" : 0,"shards" : { },"docs" : {"count" : 0,"deleted" : 0},"store" : {"size_in_bytes" : 0,"throttle_time_in_millis" : 0},"fielddata" : {"memory_size_in_bytes" : 0,"evictions" : 0},"query_cache" : {"memory_size_in_bytes" : 0,"total_count" : 0,"hit_count" : 0,"miss_count" : 0,"cache_size" : 0,"cache_count" : 0,"evictions" : 0},"completion" : {"size_in_bytes" : 0},"segments" : {"count" : 0,"memory_in_bytes" : 0,"terms_memory_in_bytes" : 0,"stored_fields_memory_in_bytes" : 0,"term_vectors_memory_in_bytes" : 0,"norms_memory_in_bytes" : 0,"points_memory_in_bytes" : 0,"doc_values_memory_in_bytes" : 0,"index_writer_memory_in_bytes" : 0,"version_map_memory_in_bytes" : 0,"fixed_bit_set_memory_in_bytes" : 0,"max_unsafe_auto_id_timestamp" : -9223372036854775808,"file_sizes" : { }}},"nodes" : {"count" : {"total" : 2,"data" : 2,"coordinating_only" : 0,"master" : 2,"ingest" : 2},"versions" : ["5.5.0"],"os" : {"available_processors" : 4,"allocated_processors" : 4,"names" : [{"name" : "Linux","count" : 2}],"mem" : {"total_in_bytes" : 7635124224,"free_in_bytes" : 713814016,"used_in_bytes" : 6921310208,"free_percent" : 9,"used_percent" : 91}},"process" : {"cpu" : {"percent" : 0},"open_file_descriptors" : {"min" : 163,"max" : 163,"avg" : 163}},"jvm" : {"max_uptime_in_millis" : 540964,"versions" : [{"version" : "1.8.0_131","vm_name" : "OpenJDK 64-Bit Server VM","vm_version" : "25.131-b12","vm_vendor" : "Oracle Corporation","count" : 2}],"mem" : {"heap_used_in_bytes" : 263309320,"heap_max_in_bytes" : 4260102144},"threads" : 54},"fs" : {"total_in_bytes" : 75645067264,"free_in_bytes" : 67942158336,"available_in_bytes" : 67942158336},"plugins" : [ ],"network_types" : {"transport_types" : {"netty4" : 2},"http_types" : {"netty4" : 2}}}
}

2、主机安装elasticsearch插件

1.安装node

[root@httpd ~]#yum install gcc gcc-c++ make -y
[root@httpd ~]#cd /opt/
[root@httpd opt]#ls
gfsrepo  gfsrepo.tar.gz  rh
[root@httpd opt]#rz -E
rz waiting to receive.
[root@httpd opt]#ls
gfsrepo  gfsrepo.tar.gz  node-v8.2.1.tar.gz  rh
[root@httpd opt]#tar xzf node-v8.2.1.tar.gz
[root@httpd opt]#ls
gfsrepo  gfsrepo.tar.gz  node-v8.2.1  node-v8.2.1.tar.gz  rh
[root@httpd opt]#cd node-v8.2.1/
[root@httpd node-v8.2.1]#./configure
[root@httpd node-v8.2.1]#make -j2 && make install

2.安装phantomjs

[root@httpd opt]#cd /usr/local/src/
[root@httpd src]#rz -E
rz waiting to receive.
[root@httpd src]#ls
phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@httpd src]#tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@httpd src]#cd phantomjs-2.1.1-linux-x86_64/
[root@httpd phantomjs-2.1.1-linux-x86_64]#cd /bin/
[root@httpd bin]#ln -s /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/* /usr/local/bin/

3.安装elasticsearch-head

[root@httpd opt]#cd /usr/local/src/
[root@httpd src]#rz -E
[root@httpd src]#tar zxvf elasticsearch-head.tar.gz
[root@httpd src]#cd elasticsearch-head/
[root@httpd elasticsearch-head]#npm install
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/karma/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expressionup to date in 3.968s#修改配置文件
[root@httpd opt]#vim /etc/elasticsearch/elasticsearch.yml
#面配置文件,插末尾
http.cors.enabled: true
#开启跨域访问支持,默认是false
http.cors.allow-origin: "*"
#指定跨域访问允许的域名地址为所有
http.cors.enabled: true
http.cors.allow-origin: "*"[root@httpd opt]#systemctl restart elasticsearch.service
[root@httpd opt]#netstat -natp | grep 9200
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      49063/java
tcp6       0      0 ::1:9200                :::*                    LISTEN      49063/java
[root@node1 elasticsearch-head]#npm run start &

ELK---日志收集系统相关推荐

  1. ELK日志收集系统(一)

    ELK日志收集系统(一) 一:软件包下载地址 二:环境准备 三:kibana安装与配置 四:安装nginx 五:filebeat安装配置 5.1 配置filebeat收集nginx日志 5.2 kib ...

  2. 深入浅出ELK日志收集系统搭建

    先看一下目录图 背景 试想这么一种场景:Nginx负载了2个Tomcat,那么日志查看就很麻烦了,每次查看日志都要登录2台服务器,挨个搜索,2台还好,如果5台呢?10台呢?那查看日志就可费劲了,所以需 ...

  3. ELK 日志收集系统方案

    文章目录 背景 ELK使用组件简介 方案1 ELK 方案二 EFK 方案三: FELK 方案四:个性化框架 总结: 日志展示及查询 环境 背景 在项目初期的时候,大家都是赶着上线,一般来说对日志没有过 ...

  4. 你居然还去服务器上捞日志,搭个日志收集系统难道不香么!

    摘要 ELK日志收集系统进阶使用,本文主要讲解如何打造一个线上环境真实可用的日志收集系统.有了它,你就可以和去服务器上捞日志说再见了! ELK环境安装 ELK是指Elasticsearch.Kiban ...

  5. java 如何去掉http debug日志_你居然还去服务器上捞日志,搭个日志收集系统难道不香吗?...

    作者:MacroZheng 链接:https://juejin.im/post/5eef217d51882565d74fb4eb 来源:掘金 SpringBoot实战电商项目mall(35k+star ...

  6. java 如何去掉http debug日志_你居然还去服务器上捞日志,搭个日志收集系统难道不香么!...

    作者:MacroZheng 链接:https://juejin.im/post/5eef217d51882565d74fb4eb 摘要 ELK日志收集系统进阶使用,本文主要讲解如何打造一个线上环境真实 ...

  7. Go语言学习之11 日志收集系统kafka库实战

    本节主要内容: 1. 日志收集系统设计 2. 日志客户端开发 1. 项目背景     a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题     b. 当系统机器比较少时,登陆到服务器上查 ...

  8. python分布式日志收集系统_Go实现海量日志收集系统(一)

    项目背景 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现实 当然即使是机器规模不大,一个系统通常 ...

  9. 十分钟搭建和使用ELK日志分析系统

    十分钟搭建和使用ELK日志分析系统 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为" ...

  10. printf 重新实现put_Go 实现海量日志收集系统(四)

    2020.1.16 51Reboot 将在 2020.1.16日(今天) 21:00 为您带来分享主题<大佬教你如何从 ES 初学者到 ES专家> 直播链接(提前报名):https://k ...

最新文章

  1. VUE还没生效,页面闪屏的问题解决办法 v-cloak
  2. 清华校友打造Python调试神器
  3. 本科生如何自学机器学习?
  4. JSP 开发环境搭建概述
  5. 在阿里云服务器(ECS)上从零开始搭建nginx服务器
  6. 我的世界基岩版json_我的世界基岩版合集
  7. Linux shell接收用户的输入
  8. 小议Oracle外键约束修改行为
  9. vim 编辑器的快捷键
  10. C和C++编程中static关键字的含义-修饰函数和变量
  11. xshell 6 连接debian系统拒绝了密码_原来连接Linux,还有这个方法
  12. C# 构造函数base()实例演示
  13. python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
  14. 同步、异步、阻塞与非阻塞给你说得明明白白
  15. 给pdf加水印的方法
  16. 关于高校通过ipv6免收费上网
  17. 最值得看的电影,一生必看的50部电影,您看过几部影
  18. jmeter监控服务器插件jp@gc - PerfMon Metrics Collector报错 Operation timed out
  19. Tableau 空难统计分析(十)人类历史上的事故数和死亡人数
  20. 今日头条启动很快,你觉得可能是做了哪些优化?

热门文章

  1. Python实现词云图的3种方式(词频,一段文本,自定义样式)
  2. 最近整理电脑硬盘,分享几个小巧实用的软件下载,持续更新
  3. linux卸载keepalived,ubuntu安装keepalived
  4. 曲线运动与万有引力公式_高一物理曲线运动万有引力试题
  5. MFC项目使用Win7自带语音库(包含COM函数返回 “没有注册类”解决方式)
  6. 对称密钥加密、非对称密钥加密、混合加密机制
  7. 微信小程序:计算器(附源码)
  8. IIS配置启动.net项目时报错:“/”应用程序中的服务器错误。
  9. Directx9下载安装
  10. 风尚云网笔记-vue中echarts引入