目录
(1)修改 filebeat 文件,将 filebeat 输出的日志输入到远程的 logstash
4.修改 logstash的配置文件,使日志输出到elasticsearch
一:ELK平台介绍
1.ELK概述
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep、awk 和 wc 等Linux 命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
组件名称 | 类型 | 主要功能 | 特点 |
---|---|---|---|
ELK平台 | 开源日志分析系统 | 集中化管理、分析和可视化日志数据 | 实时处理、分布式架构、支持大规模日志分析 |
Elasticsearch | 分布式搜索引擎 | 存储、搜索和分析日志数据 | 分布式、零配置、自动发现、索引自动分片、RESTful接口、高可用 |
Logstash | 日志收集处理工具 | 收集、过滤和转发日志数据 | 开源、支持多种输入输出源、强大的数据过滤和转换能力 |
Kibana | 数据可视化工具 | 提供Web界面,用于日志数据的汇总、分析和搜索 | 开源免费、用户友好、支持图表和仪表盘定制、与Elasticsearch深度集成 |
进行日志处理分析,一般需要经过一下几步:
(1)将日志进行集中化管理
(2)将日志格式化(Logstash)并输出到Elasticsearch
(3)对格式化后的数据进行索引和存储(Elasticsearch)
(4)前端数据的展示(Kibana)
2.Elasticsearch
(1) ElasticSearch 概述
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引警,基于RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
(2) Elasticsearch核心概念
核心概念 | 说明 | 特点/作用 | 默认设置/示例 |
---|---|---|---|
接近实时(NRT) | 文档从索引到可搜索之间存在轻微延迟(约1秒) | 提供近乎实时的搜索体验 | 延迟时间:约1秒 |
集群(cluster) | 由一个或多个节点组成的集合,共同存储数据并提供索引和搜索功能 | 高可用性、分布式存储 | 默认名称:elasticsearch |
节点(node) | 集群中的单个服务器,存储数据并参与索引和搜索 | 节点通过集群名称加入集群,自动发现其他节点 | 节点名称:随机漫威角色名(如Thor 、Hulk ) |
索引(index) | 存储具有相似特征文档的集合(如客户数据、产品目录) | 支持大规模数据存储和高效检索 | 命名要求:全小写字母(如customer_data ) |
类型(type) | 索引的逻辑分类(Elasticsearch 7.x后已废弃) | 早期版本用于区分同一索引中的不同数据结构 | 示例:users 、blogs (仅适用于6.x及以下版本) |
文档(document) | 索引中的基本信息单元,以JSON格式存储 | 可被索引、搜索和更新 | 格式示例:{"name":"John", "age":30} |
分片(shards) | 将索引划分为多个部分,分散存储在不同节点上 | 1. 突破单节点存储限制 2. 支持并行操作提升性能 |
默认主分片数:7.x前为5,7.x后为1 |
副本(replicas) | 分片的拷贝,提供故障转移和搜索负载均衡 | 1. 高可用性 2. 提升搜索吞吐量 |
默认副本数:1(7.x后) 副本与主分片不在同一节点 |
3.Logstash
3.1 Logstash 介绍
Logstash 有 JRuby 语言编写,运行在 Java虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Ligstash 具有强大的插件功能,常用于日志处理。
Logstash 的设计理念:Logstash 只做三件事,数据输入、数据加工、数据输出
3.2Logstash 工作的三个阶段
组件 | 分类 | 功能说明 | 常用插件/示例 |
---|---|---|---|
Input | 数据输入端 | 接收来自不同数据源的日志或事件数据 | - file :读取文件- syslog :监听514端口(RFC3164格式)- redis :从Redis队列获取- beat :接收Filebeat事件 |
Filter | 数据中转处理层 | 对数据进行格式化、转换、过滤和增强 | - grok :正则解析文本- mutate :字段重命名/修改- drop :丢弃事件- geoip :添加IP地理位置信息 |
Output | 数据输出端 | 将处理后的数据发送到指定存储或分析系统 | - elasticsearch :存储至ES- file :写入磁盘- mongodb :存入MongoDB- redis :缓存到Redis |
4. Kibana
4.1 Kibana 介绍
Kibana 是一个设计使用和 Elasticsearch 配置工作的开源分析和可视化平台。可以用它进行搜索、查看、集成 Elasticsearch 中的数据索引。可以利用各种图表、报表、地图组件轻松的对数据仅进行可视化分析
4.2Kibana 主要功能
Elasticsearch无缝集成
整合数据
复杂数据分析
让更多的团队成员收益
接口灵活
配置简单
可视化多数据源
简单数据导出
二:环境设置
1:实验拓扑图
三:部署 ES 群集
设置2台ES主机的系统环境(以elk1为例.另外一台操作类似)
1.基本配置
1.1 设置主机名
按照主机清单为每一台主机设置主机名(elk1、e1k2)
1.2在两台ES主机上设置 hosts 文件
1.3关闭所有节点的防火墙
1.4 创建es 运行用户
1.5安装 java 环境
1.6为用户设置资源访问限制
备注:
es soft nofile 65535:一个进程最多能打开的的文件数
es hard nofile 65535
es soft nproc 65535:一个用户最多能创建的进程数
es hard nproc 65535
es soft memlock unlimited:最大锁定内存地址空间(unlimited 不限制)
es hard memlock unlimited
备注:
它的默认值是 65536
限制一个进程可以拥有的 VMA(虚拟内存区域)的数量虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。
这个参数会影响中间件可以开启的线程数量,如果值过小,有时可能会导致有些中间件无法开启足够的线程,进而报错。
2.安装Elasticsearch
备注:
JVM(java 虚拟机)提供了大量的参数配置,可以通过配置这些参数对 JVM 进行
调优。
Xms
英文解释:Initial heap size(in bytes)
中文释义:堆区初始值使用方法:-Xms2g或-XX:InitialHeapSize=2048m
Xmx
英文解释:Maximum heap size(in bytes)
中文释义:堆区最大值
使用方法:-Xmx2g或-XX:MaxHeapSize=2048m
2.1更改 Elasticsearch 主配置文件
2.2 创建数据存放路径并授权
2.3启动es
2.4查看节点信息
四:安装 logstash
1.在logstash服务器上安装 logstash
2.测试安装结果
(1)直接将消息输出到屏幕
注意:执行该命令后稍微等一下,会出现一个消息格式,可以输入一些字符串,作为该消息的内容退出按 Ctrl+C,如果命令失败,删除 logstash 目录的的 data 子目录例如下列显示:
使用以下方法查看 es 中索引信息
查看索引列表:
curl -XGET "http://localhost:9200/ cat/indices?v"
索引分片信息:
curl -XGET "http://localhost:9200/_cat/shards?v"
查询索引前 10 条数据:
curl -XGET "http://localhost:9200/索引名/search?pretty" -H’Content-Type: application/json’-d’{"query":{ "match all":{} },"size”: 10}’
3.Logstash 配置文件
Logstash 配置文件基本由三部分组成:input、output 以及 filter(根据需要)。因此标准的配置文件格式如下所示。
input {.....}
filter {......}
output {...}
在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下所示。
Input {
file { path =>"/var/log/messages" type =>"syslog"}
file { path =>"/var/log/apache/access.log" type =>"apache"}
下面通过修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。
运行logstash
五:Filebeat
1.在产生日志的客户端服务器上安装filebeat
2.安装filebeat
3.配置 web01服务器 filebeat 的输出
(1)修改 filebeat 文件,将 filebeat 输出的日志输入到远程的 logstash
(2)启动 filebeat 服务
4.修改 logstash的配置文件,使日志输出到elasticsearch
如果发现 logstash 属于开启状态,就先关闭掉可以先査一下 logstash 的进程,netstat-anptgrep 5044,再杀死这个进程
如果要把日志提交给ES,可以使用如下内容
备注:
Codec 是 logstash 从 1.3.0 版开始新引入的概念(Codec 来自 Coder(编码)/decoder(解码)两个单词的首字母缩写)。在此之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,这全是因为有了 codec 设置。所以,Logstash不只是一个inputfilteroutput 的数据流,而是一个inputdecodefilterencodeoutput 的数据流!codec 就是用
来 decode、encode 事件的。codec 的引入,使得 logstash 可以更好更方便的与其他有自定义数据格式的运维产品共存,比如 graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用数据格式的其他产品等。
5.运行 logstash 并验证
[root@elk1 ~]#/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/beats.conf --path. data=/usr/local/logstash/config. d/web0l &
备注:
如果需要同时运行多个1ogstash,需要使用不同的路径保存不同的日志数据--path.data用来指定数据文件路径
六:安装Kibana
1.在elk1上安装Kibana
2.修改 Kibana 主配置文件
3.启动 Kibana 服务
4.验证 Kibana
浏览器访问
http://192.168.10.101:5601