当前位置: 首页 > news >正文

ELK 企业级日志分析系统(完整版)

1、ELK 概述

ELK 平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kibana 三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。

ELK 是 Elasticsearch、Logstash、Kibana 的缩写,三者协同实现 “数据收集→处理→存储→可视化” 全链路,角色分工明确:

  • Elasticsearch:核心搜索和分析引擎,负责存储数据并提供快速的全文搜索、聚合分析功能。
  • Logstash:数据收集和处理管道,从多源采集数据(日志、数据库等),经过滤转换后发送到目标存储(如 Elasticsearch)。
  • Kibana:数据可视化工具,提供 Web 界面展示 Elasticsearch 中的数据,支持图表、仪表盘、日志检索等功能。

简单理解

ELK Stack 是 “一体化数据工具包”,解决 “分布式环境下日志分散、查询低效” 的痛点,适用于日志分析、系统监控、业务数据可视化等场景,帮助运维 / 开发人员快速定位问题、挖掘数据价值。

2、Elasticsearch 介绍

Elasticsearch(简称 ES)是基于 Lucene(全文检索引擎架构)开发的分布式存储检索引擎,主打 “实时、可扩展、高可用”,专门用于存储和分析大容量日志 / 结构化数据。

ES 采用 Java 开发,支持通过 RESTful Web 接口 通信(可直接用浏览器、curl 命令调用),无需复杂的客户端适配。

2.1 核心功能

  • 全文搜索:基于 Lucene 的倒排索引技术,支持模糊查询、关键词高亮、短语匹配,能快速检索海量文本数据(如日志中的错误关键词)。
  • 实时数据分析:数据写入后秒级可查,支持聚合运算(如 “统计 1 小时内各服务器的错误日志数量”),适合实时监控场景。
  • 分布式架构:自动分片(Shard)和副本(Replica)机制,数据分散存储在多节点,兼顾扩展性和容错性。
  • RESTful API:通过 HTTP 请求即可完成 “创建索引、写入数据、查询分析” 等操作,支持多语言集成(Python、Java 等)。
  • 多数据类型支持:除文本外,还支持数值、日期、地理坐标等类型,可存储结构化(如 JSON)、半结构化数据。

2.2 架构与组件

组件定义与作用
集群(Cluster)由 1 个或多个 ES 节点组成的集合,集群名唯一(如my-elk-cluster),节点间协同工作、共享数据。
节点(Node)单个 ES 实例,可配置不同角色:- 主节点(Master):管理集群元数据(如索引结构),不存储业务数据;- 数据节点(Data):存储数据分片,处理查询和写入请求;- 协调节点(Coordinating):转发请求,汇总查询结果(默认所有节点都是协调节点)。
索引(Index)类似传统数据库的 “表”,是一组结构相似的文档集合(如 “system-2024.09.24” 表示 9 月 24 日的系统日志索引)。
文档(Document)ES 的最小数据单元,以 JSON 格式存储(如一条日志就是一个文档),每个文档有唯一 ID。
分片(Shard)索引的 “分块”,每个索引默认分为 5 个主分片(Primary Shard),主分片不可修改;分片可分布在不同节点,实现并行处理。
副本(Replica)主分片的 “备份”,默认 1 个副本,副本可提升查询性能和数据安全性(主分片故障时,副本自动切换为主分片)。

2.3 使用场景

  • 日志 / 事件分析:集中存储分布式系统的日志(如 ES、Nginx、应用日志),支持按时间、关键词、服务器 IP 快速检索。
  • 全文搜索应用:电商产品搜索(按名称、描述匹配)、企业文档检索(如内部知识库)。
  • 实时监控:结合 Kibana 展示系统 CPU、内存使用率,或业务指标(如接口调用量、错误率),设置阈值报警。
  • 商业智能(BI):分析用户行为数据(如访问路径、购买偏好),生成可视化报表辅助决策。

2.4 Elasticsearch 特点与缺点

优点:
  • 高性能:倒排索引 + 内存缓存,千万级数据查询响应时间可控制在毫秒级。
  • 易扩展:新增节点即可扩展集群容量,无需停机,支持横向扩容至数百节点。
  • 灵活性强:无需预先定义表结构(动态映射),可根据文档内容自动识别字段类型。
  • 开源免费:Apache 协议,社区活跃,文档丰富,支持多种插件(如 Elasticsearch-head、IK 分词器)。
缺点:
  • 资源消耗高:内存密集型应用,建议数据节点内存≥4G(JVM 堆内存默认占物理内存的 50%,最大不超过 32G)。
  • 学习曲线陡:查询依赖 DSL(领域特定语言),复杂聚合(如嵌套聚合)需理解语法规则;集群调优(如分片分配、熔断机制)需专业知识。
  • 数据一致性弱:默认采用 “最终一致性”,写入数据后副本同步有延迟(毫秒级),不适合强事务场景(如金融交易记录)。

2.5 依赖环境说明

ES 基于 Java 运行,需提前安装 JDK(推荐 1.8 版本,对应 ES 6.x;ES 7.x + 支持 JDK 11):

  • 检查 Java 环境:java -version,若未安装,执行yum -y install java-1.8.0-openjdk
  • 官方 JDK 下载:https://www.oracle.com/java/technologies/downloads/ (需注册 Oracle 账号)。

3、Logstash 介绍

Logstash 是 ELK 中的 “数据处理中枢”,由 Ruby 语言编写(运行在 JVM 上),核心能力是 “从多源采集数据→过滤转换→输出到目标”,支持丰富的插件扩展,是日志集中处理的关键组件。

3.1 核心架构:三阶段流程

Logstash 的工作流程分为 Input(输入)→ Filter(过滤)→ Output(输出),每个阶段通过插件实现灵活扩展:

  1. Input(数据采集):从数据源获取数据,常用插件包括:

    • file:读取本地日志文件(如/var/log/messages);
    • beats:接收 Filebeat 发送的日志(默认端口 5044);
    • jdbc:从 MySQL、PostgreSQL 等数据库读取数据;
    • kafka:从 Kafka 消息队列消费数据(高并发场景常用)。
  2. Filter(数据处理):对采集的原始数据进行清洗、转换,常用插件包括:

    • grok:用正则表达式解析非结构化日志(如将 Nginx 访问日志拆分为 “IP、时间、请求方法” 等字段);
    • mutate:修改字段(如重命名、删除、类型转换,如将 “status” 字段从字符串转为数值);
    • date:解析日志中的时间字段,统一格式为 ES 的@timestamp(便于按时间筛选);
    • drop:丢弃无用日志(如过滤掉 DEBUG 级别的冗余日志)。
  3. Output(数据输出):将处理后的数据发送到目标存储,常用插件包括:

    • elasticsearch:输出到 ES 集群(最常用场景);
    • stdout:输出到控制台(调试用,如codec=>rubydebug显示详细格式);
    • file:输出到本地文件;
    • kafka:发送到 Kafka(用于后续其他系统消费)。

3.2 主要特点

  • 多源采集:支持日志文件、数据库、消息队列等数十种数据源,无需开发自定义采集脚本。
  • 灵活处理:通过 Filter 插件组合,可实现 “解析→清洗→ enrichment(字段补充)” 全流程,满足复杂业务需求(如给日志添加 “服务器 IP”“业务线” 标签)。
  • 可扩展性:官方提供数百种插件,也可自定义插件(基于 Ruby 开发),适配特殊场景(如解析自定义格式的应用日志)。
  • 实时性:采用流处理模式,数据采集后立即处理并输出,延迟可控制在秒级(适合实时监控)。

3.3 使用场景

  • 日志集中处理:采集多台服务器的系统日志、应用日志,统一解析格式后存入 ES(如监控分布式应用的错误日志)。
  • 数据格式标准化:将不同来源的日志(如 Nginx、Tomcat、MySQL)转换为统一结构(如 JSON),便于后续分析。
  • 数据流中转:作为 “中间件” 连接数据源和存储,如从 Kafka 采集数据,处理后转发到 ES 和 HDFS(同时满足实时分析和离线存储需求)。

3.4 轻量级替代方案:Beats 系列

Logstash 虽功能强大,但存在 “资源占用高(JVM 进程内存常达数百 MB)、不适合边缘节点部署” 的问题,因此 Elastic 推出了 Beats 系列 轻量级采集工具(基于 Go 语言,资源占用 < 100MB),常用工具包括:

① Filebeat(最常用)
  • 定位:轻量级日志文件采集器,专门替代 Logstash 的file输入插件,部署在需要采集日志的 “边缘节点”(如应用服务器、数据库服务器)。
  • 核心优势:
    1. 低资源消耗:内存占用通常 < 50MB,CPU 使用率 < 5%,适合部署在资源紧张的边缘节点。
    2. 断点续传:记录日志读取位置(存储在sincedb文件),即使重启或断网,恢复后也不会重复采集或丢失日志。
    3. 内置模块:支持 Nginx、Apache、MySQL 等常见服务的日志解析模板,无需手动写 grok 规则(如filebeat modules enable nginx快速开启 Nginx 日志采集)。
  • 与 Logstash 配合:Filebeat 负责 “采集 + 初步过滤”(如按日志级别过滤),Logstash 负责 “复杂处理”(如 grok 解析、字段补充),两者结合兼顾 “轻量采集” 和 “灵活处理”。
② 其他 Beats 工具
  • Metricbeat:采集系统 / 应用指标(如 CPU、内存、接口调用量),替代 Logstash 的metric输入插件。
  • Packetbeat:采集网络流量数据(如 TCP/UDP 包),用于网络监控(如分析接口响应时间、排查网络丢包)。
  • Winlogbeat:专门采集 Windows 系统日志(如事件查看器中的日志),适配 Windows 服务器场景。

3.5 高并发场景优化:引入消息队列

当采集节点数量多(如数百台服务器)、日志量巨大(如每秒数万条)时,直接用 Filebeat 连接 Logstash 可能导致 Logstash 过载,此时需引入 Kafka/RabbitMQ 消息队列,架构如下:Filebeat(多节点)→ Kafka → Logstash → Elasticsearch

  • 作用:
    1. 削峰填谷:日志峰值时,Kafka 暂存数据,避免 Logstash 被 “压垮”;
    2. 解耦:Filebeat 和 Logstash 独立部署,Logstash 重启或扩容时,Filebeat 无需修改配置;
    3. 提高可用性:Kafka 集群可避免单点故障,确保日志不丢失。

4、Kibana 介绍

Kibana 是 ELK 中的 “可视化门面”,与 ES 深度集成,提供 Web 界面实现 “日志检索、数据可视化、仪表盘监控、报警配置” 等功能,让非技术人员也能通过图形化操作分析 ES 中的数据。

4.1 核心功能模块

1. 发现(Discover):日志检索与浏览
  • 核心能力:按时间范围、关键词、字段筛选 ES 中的日志,支持 “全文搜索”“精确匹配”“范围查询”(如查询 “status:500” 的错误日志,或 “response_time>1000ms” 的慢请求日志)。
  • 实用功能:
    • 字段筛选:可隐藏无用字段,只显示 “IP、时间、请求路径、错误信息” 等关键信息;
    • 日志导出:将筛选后的日志导出为 CSV 格式(用于离线分析或报表);
    • 保存查询:将常用查询条件(如 “近 1 小时的 5xx 错误日志”)保存为 “查询模板”,下次直接调用。
2. 可视化(Visualize):自定义图表
  • 支持多种图表类型,满足不同分析需求:
    • 基础图表:柱状图(统计各服务器的错误日志数量)、折线图(展示 1 小时内接口调用量趋势)、饼图(占比分析,如不同错误类型的占比);
    • 聚合图表:数据表格(展示 “IP、请求次数、平均响应时间” 聚合结果)、热力图(按时间和服务器 IP 展示日志密度)、目标线图表(对比实际值与目标值,如 “接口错误率是否超过 1% 阈值”);
    • 地理图表:结合 GeoIP 数据,在地图上展示访问来源分布(如分析网站的地域访问量)。
  • 操作逻辑:基于 ES 的 “聚合查询(Aggregation)”,无需手动写 DSL,通过界面配置 “聚合字段、统计方式(如 count、avg、sum)” 即可生成图表。
3. 仪表盘(Dashboard):多图表组合监控
  • 将多个 Visualize 图表组合成 “仪表盘”,集中展示核心指标(如 “系统监控仪表盘” 包含 “CPU 使用率、内存使用率、错误日志数量、接口调用量” 等图表)。
  • 实用功能:
    • 时间联动:所有图表共享一个时间范围(如切换 “近 10 分钟”,所有图表同步更新数据);
    • 筛选联动:通过仪表盘顶部的 “筛选器”(如选择 “服务器 IP=192.168.10.15”),所有图表只显示该条件下的数据;
    • 自动刷新:设置刷新频率(如 5 秒 / 次),实现实时监控(适合运维监控场景)。
4. 管理(Management):系统配置
  • 索引模式(Index Patterns):Kibana 通过 “索引模式” 关联 ES 中的索引(如system-*匹配所有以system-开头的索引),是后续查询、可视化的基础。
  • 用户权限:通过 “角色(Role)” 控制用户权限(如给开发人员 “只读权限”,只能查看日志;给管理员 “全权限”,可配置仪表盘、报警)。
  • 插件管理:安装扩展插件(如kibana-plugin install x-pack,提供报警、监控、安全等增强功能)。
  • 高级设置:配置 Kibana 的外观(如语言、主题)、ES 连接参数(如超时时间)。
5. 报警与监控(Alerts & Monitoring)
  • 报警(Alerts):基于 ES 的数据设置阈值报警(如 “错误日志数量 5 分钟内超过 10 条”“CPU 使用率超过 90%”),支持邮件、Slack、Webhook 等通知方式。
  • 监控(Monitoring):内置 “Elastic Stack 监控” 功能,展示 ES 集群、Logstash、Kibana 的运行状态(如 ES 节点的 CPU、内存使用率,Logstash 的管道处理速率),便于排查组件故障。
6. 其他功能
  • Canvas:创建自定义报告(如业务周报、运维月报),支持拖拽式布局,可插入图表、文本、图片,生成可视化文档。
  • 机器学习(Machine Learning):通过无监督学习算法自动检测数据异常(如 “接口响应时间突然增长 10 倍”“某 IP 的访问量异常升高”),适合复杂场景的异常监控。
  • 日志分析(Logs):专门的日志浏览界面,支持 “按字段筛选”“日志上下文查看”(如点击一条错误日志,查看前后 10 条相关日志,快速定位问题)。

4.2 使用场景

  • 运维监控:搭建 “系统监控仪表盘”,实时查看多台服务器的 CPU、内存、磁盘使用率,以及错误日志数量,快速发现硬件或服务故障。
  • 应用排障:通过 “Discover” 检索特定关键词的日志(如 “NullPointerException”),按时间排序查看错误上下文,定位代码 bug。
  • 业务分析:分析用户行为数据(如 “近 7 天各页面的访问量”“不同地区的注册用户数”),生成业务报表辅助决策(如优化高访问量页面的性能)。
  • 安全审计:采集防火墙、登录日志,通过 “可视化” 展示异常登录 IP 的分布,或按时间统计登录失败次数,排查暴力破解风险。

5、ELK 的工作原理

(1)在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。 (2)Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。 (3)Elasticsearch 对格式化后的数据进行索引和存储。 (4)Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

6、部署环境ELK

配置与名称IP服务
Node1节点(2C/4G)node1/192.168.10.13Elasticsearch(集群) Kibana
Node2节点(2C/4G)node2/192.168.10.14Elasticsearch(集群)
Apache节点apache/192.168.10.15Logstash Apache

官方网站(中文) :https://www.elastic.co/cn/downloads/

6.1 环境准备

1、关闭防火墙与增强功能
systectl stop firewalld   #关闭防火墙
setenforce 0    #关闭增强功能
​
2、更改主机名、配置域名解析、查看Java环境
Node1节点:hostnamectl set-hostname node1
Node2节点:hostnamectl set-hostname node2
​
3、主机名与IP解析
vim /etc/hosts
192.168.10.13 node1 
192.168.10.14 node2   
​
4、java安装
注:版本问题
java -version                                       #如果没有安装,yum -y install java
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)
​
也可使用 jdk

6.2 Elasticsearch 集群部署

(在Node1、Node2节点上操作)1、部署 Elasticsearch 软件
(1)安装elasticsearch—rpm包
#上传elasticsearch-6.6.1.rpm到/opt目录下 
cd /opt
rpm -ivh elasticsearch-6.6.1.rpm 
​
(2)加载系统服务
systemctl daemon-reload    
systemctl enable elasticsearch.service
​
(3)修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
​
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
​
​
​
​
​
(4)创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
​
(5)启动elasticsearch是否成功开启
systemctl start elasticsearch.service
netstat -antp | grep 9200
​
(6)查看节点信息
浏览器访问  http://192.168.10.13:9200  、 http://192.168.10.14:9200 查看节点 Node1、Node2 的信息。
​
浏览器访问 http://192.168.10.13:9200/_cluster/health?pretty  、 http://192.168.10.14:9200/_cluster/health?pretty查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。
​
​
绿色:健康  数据和副本 全都没有问题
红色:数据都不完整
黄色:数据完整,但副本有问题
​
浏览器访问 http://192.168.10.13:9200/_cluster/state?pretty  检查群集状态信息。
​
#使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集。
​
​
2.安装 Elasticsearch-head 插件
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
​
​
java -jar weifuwu.jar/war  
​
​
(1)编译安装 node
#上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y
​
cd /opt
tar zxvf node-v8.2.1.tar.gz
​
cd node-v8.2.1/
./configure
make && make install
​
(2)安装 phantomjs(前端的框架)
#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
​
(3)安装 Elasticsearch-head 数据可视化工具
#上传软件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install
​
(4)修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
......
--末尾添加以下内容--
http.cors.enabled: true             #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"         #指定跨域访问允许的域名地址为所有
​
systemctl restart elasticsearch
​
(5)启动 elasticsearch-head 服务
#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /usr/local/src/elasticsearch-head/
npm run start &
​
> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
> grunt server
​
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
​
#elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100
​
(6)通过 Elasticsearch-head 查看 Elasticsearch 信息
通过浏览器访问 http://192.168.10.13:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。
​
(7)插入索引
#通过命令插入一个测试索引,索引为 index-demo,类型为 test。
​
//输出结果如下:curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
​
​
{
"_index" : "index-demo",
"_type" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
​
浏览器访问 http://192.168.10.13:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

6.3 Logstash 部署

(在 Apache 节点上操作)Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。
​
1.更改主机名
hostnamectl set-hostname apache
​
2.安装Apahce服务(httpd)
yum -y install httpd
systemctl start httpd
​
3.安装Java环境
yum -y install java
java -version
​
4.安装logstash
#上传软件包 logstash-6.6.1.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-6.6.1.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service
​
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
​
5.测试 Logstash
Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。
​
定义输入和输出流:
#输入采用标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'
......
www.baidu.com                                       #键入内容(标准输入)
2020-12-22T03:58:47.799Z node1 www.baidu.com        #输出结果(标准输出)
www.sina.com.cn                                     #键入内容(标准输入)
2017-12-22T03:59:02.908Z node1 www.sina.com.cn      #输出结果(标准输出)
​
//执行 ctrl+c 退出
​
#使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
......
www.baidu.com                                       #键入内容(标准输入)
{"@timestamp" => 2020-12-22T02:15:39.136Z,       #输出结果(处理后的结果)"@version" => "1","host" => "apache","message" => "www.baidu.com"
}
​
#使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.10.13:9200"] } }'输入             输出          对接
......
www.baidu.com                                       #键入内容(标准输入)
www.sina.com.cn                                     #键入内容(标准输入)
www.google.com                                      #键入内容(标准输入)
​
//结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.10.13:9100/ 查看索引信息和数据浏览。
​
6.定义 logstash配置文件
Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。
input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。
​
#格式如下:
input {...}
filter {...}
output {...}
​
#在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:
input {file { path =>"/var/log/messages" type =>"syslog"}file { path =>"/var/log/httpd/access.log" type =>"apache"}
}
​
#修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。
chmod +r /var/log/messages                  #让 Logstash 可以读取日志
​
vim /etc/logstash/conf.d/system.conf
input {file{path =>"/var/log/messages"                      #指定要收集的日志的位置type =>"system"                                 #自定义日志类型标识start_position =>"beginning"                    #表示从开始处收集}
}
output {elasticsearch {                                     #输出到 elasticsearchhosts => ["192.168.10.13:9200"]                 #指定 elasticsearch 服务器的地址和端口index =>"system-%{+YYYY.MM.dd}"                 #指定输出到 elasticsearch 的索引格式}
}
​
systemctl restart logstash 
​
浏览器访问 http://192.168.10.13:9100/ 查看索引信息

6.4 Kiabana 部署

在 Node1 节点上操作)​
官方网站 :https://www.elastic.co/cn/downloads/kibana/
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.1-linux-x86_64.tar.gz
1.安装 Kiabana
#上传软件包 kibana-6.6.1-x86_64.rpm 到/opt目录
cd /opt
rpm -ivh kibana-6.6.1-x86_64.rpm
​
2.设置 Kibana 的主配置文件
vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--28--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.hosts: ["http://192.168.10.13:9200"] 
--37--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"
​
3.启动 Kibana 服务
systemctl start kibana.service
systemctl enable kibana.service
​
netstat -natp | grep 5601
​
4.验证 Kibana
浏览器访问 http://192.168.10.13:5601
第一次登录需要添加一个 Elasticsearch 索引:
Index Patterns---》create index Patterns
//输入:system-*           #在索引名中输入之前配置的 Output 前缀“system”
​
然后--》Next step(下一步)--》Time Filter field name--》@timestarmp
​
单击 “create index Patterns” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果
​
​
​
后面再次创建的步骤---》Management--》index Patterns--》单击 “create index Patterns” 按钮创建
5.将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
vim /etc/logstash/conf.d/apache_log.conf
input {file{path => "/etc/httpd/logs/access_log"type => "access"start_position => "beginning"}file{path => "/etc/httpd/logs/error_log"type => "error"start_position => "beginning"}
}
output {if [type] == "access" {elasticsearch {hosts => ["192.168.10.13:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["192.168.10.13:9200"]index => "apache_error-%{+YYYY.MM.dd}"}}
}
​
cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf
​
浏览器访问 http://192.168.10.13:9100 查看索引是否创建

​ 浏览器访问 http://192.168.10.13:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引, 在索引名中输入之前配置的 Output 前缀 apache_access-*,并单击“Create”按钮。在用相同的方法添加 apache_error-*索引。 选择“Discover”选项卡,在中间下拉列表中选择刚添加的 apache_access-* 、apache_error-* 索引, 可以查看相应的图表及日志信息。

7、Filebeat+ELK 部署

配置与名称IP服务
Node1节点(2C/4G)node1/192.168.10.13Elasticsearch(集群) Kibana
Node2节点(2C/4G)node2/192.168.10.14Elasticsearch(集群)
Apache节点apache/192.168.10.15Logstash Apache
Filebeat节点filebeat/192.168.10.16Filebeat

官方网站(中文下载):https://www.elastic.co/cn/downloads/beats/filebeat

####在 Filebeat节点 节点上操作
https://www.elastic.co/cn/downloads/beats/filebeat
1.安装 Filebeat 两种
① 二进制解包即可
#上传软件包 filebeat-6.6.1-linux-x86_64.tar.gz 到/opt目录
tar zxvf filebeat-6.6.1-linux-x86_64.tar.gz
mv filebeat-6.2.4-linux-x86_64/ /usr/local/filebeat
​
② 使用rpm包安装 上传包
[root@kgc16 opt]# rpm -ivh filebeat-6.6.1-x86_64.rpm 
​
​
2.设置 filebeat 的主配置文件
① 如果使用第一种方式按照如下配置
cd /usr/local/filebeat
​
vim filebeat.yml
filebeat.prospectors:
- type: log         #指定 log 类型,从日志文件中读取消息enabled: truepaths:- /var/log/messages       #指定监控的日志文件- /var/log/*.logfields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中service_name: filebeatlog_type: logservice_id: 192.168.10.16
​
--------------Elasticsearch output-------------------
(全部注释掉)
​
----------------Logstash output---------------------
output.logstash:hosts: ["192.168.10.15:5044"]      #指定 logstash 的 IP 和端口
​
#启动 filebeat
./filebeat -e -c filebeat.yml
​
​
② rpm包方式安装    配置都一样
vim /etc/filebeat/filebeat.yml
​
​
3.在 Logstash 组件所在节点上新建一个 Logstash 配置文件
cd /etc/logstash/conf.d
​
vim logstash.conf
input {beats {port => "5044"}
}
output {elasticsearch {hosts => ["192.168.10.13:9200"]index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
}
​
#启动 logstash
logstash -f logstash.conf
​
​
4.浏览器访问 http://192.168.10.13:5601 登录 Kibana,
​
先点击Management--》“Index Pattern”--》“Create Index Pattern”按钮创建--》选择输入“Index Pattern”--》然后Next step(下一步)--》Time Filter field name--》@timestarmp
​
单击 “Discover” 按钮可查看图表信息及日志信息。  按钮添加索引“filebeat-*”

http://www.dtcms.com/a/397913.html

相关文章:

  • WaveTerminal+cpolar:提升远程协作效率的开发利器
  • 【记录】Ubuntu系统实现从远程服务器上传下载文件
  • 通过串口控制RDA5807收音模块(stm32+c#上位机)
  • hive表元数据修复脚本
  • React中的Hook
  • React简单例子
  • Playwright MCP 服务器对比高层级的 MCP 服务器解决方案
  • app下载网站模板wordpress将公网ip改为域名
  • 个人做网站如何推广安全优化大师
  • jupyter notebook用简易python代码跑本地模型
  • Android 安卓RIL介绍
  • 开源 java android app 开发(十五)绘图定义控件--仪表盘
  • Android如何自动弹出软键盘?
  • Linux Shell 脚本:从零到进阶的实战笔记
  • MR 一体机市场报告:2031全球规模突破 1.98亿美元,中国 40.8% 市占率成核心增长极
  • 网站管理员权限权重高的网站有哪些
  • 【Spark+Hive+hadoop】基于spark+hadoop基于大数据的全球用水量数据可视化分析系统大数据毕设
  • 07.【Linux系统编程】进程控制(进程创建fork、进程终止exit等、进程等待waitwaitpid、进程替换execl等)
  • 百度Qianfan-VL系列上线:推出3B/8B/70B三款视觉理解模型,覆盖不同算力需求
  • 基于 Python Keras 实现 猫狗图像的精准分类
  • 点云-标注-分类-航线规划软件 (一)点云自动分类
  • 挑战用R语言硬干一百万单细胞数据分析
  • 如何自己弄个免费网站wordpress前端登陆
  • npm install 时包库找不到报错解决
  • 【开题答辩实录分享】以《城市网约车服务预约与管理小程序的设计与实现》为例进行答辩实录分享
  • 网站建设软件哪个最好wordpress转发插件
  • C#异步协同常用例子
  • Flutter 中使用 Color 的最优方案
  • 一半都有哪些做影视外包的网站怎么做网站的签约编辑
  • Qt QEventLoop的使用的一个问题讨论