网站首页 > 技术文章 正文
ELK简介
ELK是什么?
elk是三个开源软件的缩写,分别是:Elasticsearch、Logstash、Kibana 。由于Logstash 客户端太占用资源,对服务器的要求比较高,后来FileBeat出现了 ,解决了资源问题,官方也推荐这个工具。
Elasticsearch:实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能
Logstash:日志收集,分析,过滤并转化到对应的存储库
Kibana:一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据
Filebeat:监控日志文件、转发。 需要收集数据的服务器端需要安装这个
架构图
如上图你可以看出来,FileBeat 将数据 通过队列 发给 Logstash ,然后Logstash 在将数据给 Elasticsearch 存储。kibana结合nginx 提供web界面
环境准备
准备工作
设置官方源
## 下载并安装公共签名密钥rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch ## 设置repo内容vim /etc/yum.repos.d/elasticsearch.repo ## 在repo中添加如下内容[elasticsearch-6.x]name=Elasticsearch repository for 6.x packagesbaseurl=https://artifacts.elastic.co/packages/6.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
Java环境安装
elasticsearch 需要java环境支持,执行如下命令
## 安装java 环境yum install java -y## 验证是否安装好java -version
Elasticsearch 安装和配置
安装
yum -y install elasticsearch##设置为自启动systemctl enable elasticsearch
配置
配置文件路径:/etc/elasticsearch/elasticsearch.yml
核心参数
## 集群名字cluster.name: app-log## 节点名字node.name: node-1## 数据存放地址path.data: /data1/es/data## 日志文件地址(可不修改)path.logs: /var/log/elasticsearch
命令介绍
## 启动service elasticsearch {start|restart|reload} ## 停止service elasticsearch stop
验证
curl -X GET http://localhost:9200 输出结果如下{ "name" : "node-1", "cluster_name" : "app-log", "cluster_uuid" : "oVk4kUzKTCOsc2zaViOMXA", "version" : { "number" : "6.8.13", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "be13c69", "build_date" : "2020-10-16T09:09:46.555371Z", "build_snapshot" : false, "lucene_version" : "7.7.3", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search"}
Logstash 安装
安装
yum -y install logstash## 自启动systemctl enable logstash
配置放在后面讲,和FileBeat一起讲更容易理解
Kibana 安装和配置
安装
yum -y install kibana nginx## 设置自动启systemctl enable kibana
命令介绍
## 启动service kibana {start|restart|reload} ## 停止service kibana stop
nginx 配置
server { listen 80; server_name log.corp.jixuejima.cn; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}
效果图
Redis安装和配置
由于我使用的是阿里云redis服务,这个可以直接用
FileBeat 安装和配置
安装
yum -y install filebeat ## 设置自启动systemctl enable filebeat
配置
配置路径:/etc/filebeat/filebeat.yml
filebeat.inputs:- type: log enabled: true paths: - /xxxx/dispatch.log fields: log_source: jobs output.redis: hosts: ["xxxxxyyyyyzzzz.redis.rds.aliyuncs.com"] port: 6379 db: 2 timeout: 5 key: "logstash_list" processors: - add_host_metadata: ~ - add_cloud_metadata: ~
注解:FileBeat 是转发日志内容到指定的管道对象(这里使用的是阿里云的redis),其中需要注意的是 log_source 这个是我自定义的日志来源,方便后面Logstash进行日志处理。上面的配置就是讲 日志 放到 redis队列中,队列叫做:logstash_list
命令介绍
## 启动service filebeat {start|restart|reload} ## 停止service filebeat stop
Logstash 配置
配置
前面说过,关于Logstash的配置放到FileBeat安装之后,这个没有先后顺序,只是方便大家理解 才专门单独放到后面讲解。FileBeat 将 日志放到了redis中。那么Logstash就要从redis中取出数据。
配置路径:/etc/logstash/conf.d/log.conf
input { redis { data_type => "list" key => "logstash_list" host => "xxxxxyyyyyzzzz.redis.rds.aliyuncs.com" port => 6379 db => 2 }} filter { if "cleared" in [message] or "运行时间未到" in [message] or "DEBUG 运行命令" in [message] { ### 丢弃 drop{} } if "yii queue" in [message] and "start" in [message] { drop{} } if "jobs" == [fields][log_source] { grok { match =>{ "message" => "job_id:%{NUMBER:job_id}" } } } mutate { remove_field => ["@version","[beat][name]","[beat][hostname]","[beat][version]","[host][architecture]","[host][containerized]","[host][id]","[host][os][codename]","[host][os][family]","[host][os][name]","[host][os][platform]","[host][os][version]","[meta][cloud][provider]","[prospector][type]","[log][file][path]","[input][type]","[meta][cloud][region]","http_version"] } } output { if "jobs" == [fields][log_source] { elasticsearch { hosts => ["localhost:9200"] index => "jobs-%{+YYYY.MM.dd}" } }}
注解:
- 上面的input配置的和FileBeat同一个Redis配置,说明从Redis获取数据。
- filter 区域表示过滤处理,上面是根据我自己的业务进行日志丢弃(因为有些日志记录是没有意义的)。根据来源进行 数据匹配 然后单独存储更改值( 如下图,将message字段中的job_id 单独提取作为一个字段 )
- filter 中的 mutate 配置了删除一些字段,有些字段都一样,存在没意义,减少存储日志量
- output 配置中 判断来源,然后设置存储在Elasticsearch 中并且索引规则按照定义好的生成(如下图)
命令介绍
## 启动service logstash {start|restart|reload} ## 停止service logstash stop
技巧
Kibana界面设置成中文?
配置路径:/etc/kibana/kibana.yml
## 改成如下 然后重启Kibanai18n.locale: "zh-CN"
猜你喜欢
- 2024-10-18 日志分析平台——ELK安装配置 elk实时日志
- 2024-10-18 利用 ELK(Elasticsearch + Logstash + Kibana) 搭建日志分析平台
- 2024-10-18 超详细的EFK安装部署教程--filebeat日志数据采集
- 2024-10-18 ELK总结——第二篇Logstash的搭建
- 2024-10-18 亿级 ELK 日志平台构建实践 elk日志系统搭建
- 2024-10-18 ELK日志管理方案-Centos6安装Elasticsearch
- 2024-10-18 SpringBoot利用ELK实现日志收集 springboot日志收集框架
- 2024-10-18 ELK超详细配置 elk7.12
- 2024-10-18 如何用ELK搭建TB级微服务海量日志监控系统?
- 2024-10-18 logback+kafka+elk搭建日志 logback kafka appender
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)