ELK---日志收集系统

这篇具有很好参考价值的文章主要介绍了ELK---日志收集系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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.增大吞吐量,搜索可以并行在所有副本上执行

ELK---日志收集系统

默认情况下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 systemd
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
 sudo 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、查看节点信息

ELK---日志收集系统

查看集群状态

[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文章来源地址https://www.toymoban.com/news/detail-400001.html

[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 expression

up 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---日志收集系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ELK 日志系统收集K8s中日志

    • K8s弹性伸缩性:导致不能预先确定采集的目标 • 容器隔离性:容器的文件系统与宿主机是隔离,导致日志采集器读取日志文件受阻。 应用程序日志记录体现方式分为两类: • 标准输出:输出到控制台,使用kubectl logs可以看到。 例如 nginx日志是将访问日志输出到标准输出

    2024年02月09日
    浏览(34)
  • ELK+Kafka+Zookeeper日志收集系统

    节点IP 节点规划 主机名 192.168.112.3 Elasticsearch + Kibana + Logstash + Zookeeper + Kafka + Nginx elk-node1 192.168.112.3 Elasticsearch + Logstash + Zookeeper + Kafka elk-node2 192.168.112.3 Elasticsearch + Logstash + Zookeeper + Kafka + Nginx elk-node3 修改主机名 配置映射 安装Elasticserach 三台主机都需安装java及elasticserach 启动

    2024年04月18日
    浏览(67)
  • 系统学习Linux-ELK日志收集系统

    ELK日志收集系统集群实验 实验环境 角色 主机名 IP 接口 httpd 192.168.31.50 ens33 node1 192.168.31.51 ens33 noed2 192.168.31.53 ens33 环境配置 设置各个主机的ip地址为拓扑中的静态ip,并修改主机名 安装elasticsearch node1 vim /etc/elasticsearch/elasticsearch.yml  node2 移动到elk文件夹 修改elasticsearch配置文

    2024年02月10日
    浏览(49)
  • 【分布式技术】ELK大型日志收集分析系统

    目录 步骤一:完成JAVA环境部署 步骤二:部署ES节点(三台主机) 步骤三:内核参数修改 步骤四:web端查看验证 步骤五:yum安装nginx  步骤六:完成logstash部署 步骤七:部署kibana  步骤八:测试ELK

    2024年01月20日
    浏览(46)
  • 部署ELK+Kafka+Filebeat日志收集分析系统

    ELK是三个软件的统称,即Elasticsearch、Logstash和Kibana三个开源软件的缩写。这三款软件都是开源软件,通常配合使用,并且都先后归于Elastic.co企业名下,故被简称为ELK协议栈。ELK主要用于部署在企业架构中,收集多台设备上多个服务的日志信息,并将其统一整合后提供给用户。

    2024年02月16日
    浏览(41)
  • ELK日志收集系统集群实验(5.5.0版)

    目录 前言 一、概述 二、组件介绍 1、elasticsearch 2、logstash 3、kibana 三、架构类型 四、ELK日志收集集群实验 1、实验拓扑 2、在node1和node2节点安装elasticsearch 3、启动elasticsearch服务 4、在node1安装elasticsearch-head插件 5、测试输入 6、node1服务器安装logstash 7、logstash日志收集文件格式

    2024年02月10日
    浏览(39)
  • 分布式技术--------------ELK大规模日志实时收集分析系统

    目录 一、ELK日志分析系统 1.1ELK介绍 1.2ELK各组件介绍 1.2.1ElasticSearch 1.2.2Kiabana 1.2.3Logstash 1.2.4可以添加的其它组件 1.2.4.1Filebeat filebeat 结合logstash 带来好处 1.2.4.2缓存/消息队列(redis、kafka、RabbitMQ等) 1.2.4.3Fluentd 二、为什么要使用 ELK 三、完整日志系统基本特征 四、ELK 的工作

    2024年04月17日
    浏览(49)
  • docker搭建Elk+Kafka+Filebeat分布式日志收集系统

    目录 一、介绍 二、集群环境 三、ES集群 四、Kibana  五、Logstash 六、Zookeeper 七、Kafka 八、Filebeat 八、Nginx (一)架构图  (二)组件介绍 1.Elasticsearch 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于

    2024年02月04日
    浏览(52)
  • Linux搭建ELK日志收集系统构建:Filebeat+Redis+Logstash+Elasticse

    一、ELK概述: ELK是一组开源软件的简称,其包括Elasticsearch、Logstash 和 Kibana。ELK最近几年发展迅速,已经成为目前最流行的集中式日志解决方案。 Elasticsearch: 能对大容量的数据进行接近实时的存储,搜索和分析操作。 本项目中主要通过Elasticsearch存储所有获取的日志。 Logst

    2024年02月12日
    浏览(56)
  • ELK日志收集记录

    logstash在需要收集日志的服务器里运行,将日志数据发送给es 在kibana页面查看es的数据 es和kibana安装: Install Elasticsearch with RPM | Elasticsearch Guide [8.8] | Elastic Configuring Elasticsearch | Elasticsearch Guide [8.8] | Elastic Install Kibana with RPM | Kibana Guide [8.8] | Elastic 需要收集日志的服务器里安装

    2024年02月09日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包