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

ELK极简上手

目录

引言

首先,下载相关的包

其次,安装启动elasticsearch

下一步,安装并启动logstash

最后,安装并启动kibana

进一步的,测试数据的流动


引言

最近整理电脑发现之前的一篇ELK极简入门笔记,现整理发出来,希望对感兴趣的小伙伴有帮助。

要说ELK是什么,我们先给一个引子。早期,计算机方面比较实用的技术是体系结构相关的内容。那时候,各个大学的计算机系主任大部分是体系结构方面的专家;后来,算法逐渐占据上风,开始流行起来,当年微软将谷歌作为最大的竞争对手,不无道理;再后来,人工智能开始如滔天大浪席卷了几乎所有高科技公司和高校,现在再去看各个高校的计算机系主任,不沾点人工智能的边都不好意思把简历放出来。在这个历史过程中,搜索算法一度被认为是算法皇冠上的明珠,尤其是在互联网大潮来临后,数据生产呈现爆炸式增长,如何快速准确的检索需要的数据,成为了算法工程师的终极梦想。这方面的技术仍然在不断的进化演进,ELK就是在大数据领域的一个搜索引擎成果包。简而言之,ELK由三个子包构成,E代表elasticsearch,可升缩的查找引擎;L代表logstash,这里我们比较通用的将其理解为数据解析转换器,而非日志;K代表kibana,可视化的一套组件。放在一起就是,logstash将生产的数据,按照规则,解析过滤转换为结构化的数据,提交给elasticsearch,kibana提供简洁丰富的可视化界面,方便用户查找elasticsearch中的数据。

下面看看如何搭建最基本的ELK环境。

首先,下载相关的包

官网国内下载地址过慢,可以找国内镜像下载

https://elasticsearch.thans.cn/downloads/logstash/logstash-6.4.3.tar.gz

https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.tar.gz

其次,安装启动elasticsearch

elastic 高版本出现一些错误打印,不再研究,考虑下载低版本

下载6.4版本,启动,提示killed

修改config目录下的jvm options配置文件,将虚拟机内存要求降低,从1G到512M

再次运行,提示错误can not run elasticsearch as root

因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户,用非root用户启动,提示

Exception in thread "main" java.nio.file.AccessDeniedException: /home/work/ELK/elasticsearch-6.4.3/config/jvm.options

是因为目录没有非root用户的执行权限,用root用户chmod -R 777 安装目录

然后再次启动elasticsearch,成功

在机器内部执行curl -get http://127.0.0.1:9200可以访问,说明elasticsearch启动成功

curl -get http://127.0.0.1:9200{"name" : "DxD9f_v","cluster_name" : "elasticsearch","cluster_uuid" : "7z49ZWMyQR2QYdCfghiVkg","version" : {"number" : "6.4.3","build_flavor" : "default","build_type" : "tar","build_hash" : "fe40335","build_date" : "2018-10-30T23:17:19.084789Z","build_snapshot" : false,"lucene_version" : "7.4.0","minimum_wire_compatibility_version" : "5.6.0","minimum_index_compatibility_version" : "5.0.0"},"tagline" : "You Know, for Search"}

但是外部网络访问不了,打开config下的yml配置文件,将里面的net host项打开,并指定外部访问的IP地址 0.0.0.0

重启服务,提示max fs过小,vm max mem过小

对max fs过小,按照网上的,修改/etc/security/limits配置文件,将65535改成65536

对于vm max mem过小,按照网上修改,将/etc/sysctl.conf配置文件,增加一行vm配置,按照elasticsearch启动时提示的错误信息,补充需要的大小,21xxx44

执行sysctl -p 使配置生效

对于第一个修改的生效,需要重新登录

之后,再次启动elasticsearch成功,在浏览器中访问192.168.0.108:9200 成功

向elasticsearch插入数据,需要指定头部

curl -XPUT 'http://localhost:9200/twitter/_doc/1?pretty' -H 'Content-Type: application/json' -d '{"user": "kimchy","post_date": "2009-11-15T13:12:00","message": "Trying out Elasticsearch, so far so good?"}'

获取内容

curl -XGET 'http://localhost:9200/twitter/_doc/1?pretty=true'{"_index" : "twitter","_type" : "_doc","_id" : "1","_version" : 1,"found" : true,"_source" : {"user" : "kimchy","post_date" : "2009-11-15T13:12:00","message" : "Trying out Elasticsearch, so far so good?"}}

查看elasticsearch的状态

curl -X GET "localhost:9200/_cat"

可以查看到支持命令列表

 =^.^=/_cat/allocation/_cat/shards/_cat/shards/{index}/_cat/master/_cat/nodes/_cat/tasks/_cat/indices/_cat/indices/{index}/_cat/segments/_cat/segments/{index}/_cat/count/_cat/count/{index}/_cat/recovery/_cat/recovery/{index}/_cat/health/_cat/pending_tasks/_cat/aliases/_cat/aliases/{alias}/_cat/thread_pool/_cat/thread_pool/{thread_pools}/_cat/plugins/_cat/fielddata/_cat/fielddata/{fields}/_cat/nodeattrs/_cat/repositories/_cat/snapshots/{repository}/_cat/templates

查看节点健康状态

curl -X GET "localhost:9200/_cat/health?v"epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1699100535 20:22:15  elasticsearch yellow          1         1     30  30    0    0       15             0                  -                 66.7%

查看节点的状态

curl -X GET "localhost:9200/_cat/nodes?v"ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name192.168.0.99           60          96   2    0.00    0.00     0.00 mdi       *      DxD9f_v

查看索引

curl -X GET "localhost:9200/_cat/indices?v"health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.sizegreen  open   .monitoring-kibana-6-2020.04.05 dEiKRojsQv-o22ZL7POLVA   1   0      25917            0      3.2mb          3.2mbgreen  open   .monitoring-es-6-2020.04.05     dosbfiHqR_uQcDNS6KTXGw   1   0      95077          200     36.2mb         36.2mbyellow open   bank                            9X6hpCfMRgG0Hg_pldRghA   5   1       1000            0      483kb          483kbyellow open   blog                            TWYzd5SgRsCR5VEu1szVSg   5   1       1110            0    329.1kb        329.1kbgreen  open   .monitoring-es-6-2020.04.12     L2kP2a1sRJmYv32WJiR9ug   1   0      34872            0     14.9mb         14.9mbgreen  open   .monitoring-kibana-6-2020.04.13 7JMe7HYlQaKr_SEAocLXuA   1   0         15            0     81.4kb         81.4kbgreen  open   .monitoring-es-6-2020.04.06     VIwdUGpxQ_q3GUNDaiBrFQ   1   0      10283          216        5mb            5mbgreen  open   .monitoring-kibana-6-2020.04.04 L3uJIJ9GQ2WxtDFUVqT0Xg   1   0      13629            0      1.9mb          1.9mbyellow open   test                            3wkfLrXHRXS-HZsWXkDYjg   5   1          2            0     10.8kb         10.8kbgreen  open   .monitoring-kibana-6-2020.04.12 7okTRX0VTrya7qCKusG6kQ   1   0       9184            0      1.1mb          1.1mbgreen  open   .monitoring-kibana-6-2020.04.06 Bq9YykB7Smi3IqY7KqSUew   1   0       2361            0      326kb          326kbgreen  open   .monitoring-es-6-2020.04.04     X05uCpFqTtupA5x9OKFCvA   1   0      45040           46     16.7mb         16.7mbgreen  open   .monitoring-kibana-6-2020.04.08 bpTl2-TdSn6hRKFG2WdPlQ   1   0          8            0     48.3kb         48.3kbgreen  open   .monitoring-es-6-2020.04.13     ku_cSQXDRIG88gKRmZy3cw   1   0        147           44    234.6kb        234.6kbgreen  open   .monitoring-es-6-2020.04.07     _GTr8c30Q1iam0Jq49MacQ   1   0      27084          203     11.2mb         11.2mbgreen  open   .monitoring-kibana-6-2020.04.07 or0a2MePRuiQ815Q7SQKlw   1   0       7180            0   1000.2kb       1000.2kbgreen  open   .monitoring-es-6-2023.11.04     UDOLcrBPSRGo0w_5XGuxuQ   1   0       3674          135      2.1mb          2.1mbgreen  open   .kibana                         32YGBWOgSTK5cxPAyz1ZUA   1   0          5            0     27.5kb         27.5kb

查看索引的文档,如果不存在,会提示错误

curl -X GET "localhost:9200/_cat/indices/blog"

yellow open blog TWYzd5SgRsCR5VEu1szVSg 5 1 1110 0 329.1kb 329.1kb

查询索引中的数据,pretty会让数据美化输出,主要是按照层次结构输出,下面命令中,search应该是内置命令字

curl -X GET "localhost:9200/blog/_search?pretty"

执行accounts数据示例,注意, 会提示bulk命令需要一个回车换行,其实是在accounts文件尾部增加一个回车换行

curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"

现在就向elasticsearch中增加了bank这个索引,并有1000个文档数据

curl "localhost:9200/_cat/indices?v"

查询所有索引,可以看到有bank索引

检索特定索引,这里是刚创建的bank索引

curl -X GET "localhost:9200/bank/_search?q=*&sort=account_number:asc&pretty"

?后面是参数列表,以&分割。q表示匹配所有参数,sort表示按照accountsnumber升序排列,pretty表示美化输出

以上可以在安装包的Readme中查找到使用例子

===========================================================

下一步,安装并启动logstash

logstash-6.4.3/bin/logstash --help

Unrecognized VM option 'UseParNewGC'

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

注释掉config/jvm.options文件中的 -XX:+UseParNewGC 行即可

运行出现exit,查看输出日志,是因为更新了JDK到11所致,这个版本的JDK需要降低,使用jdk1.8.0,Logstash启动成功。

===========================================================

最后,安装并启动kibana

发现启动kibana后,elasticsearch就会出现killed

进一步分析发现,kibana在启动过程中会连接elasticsearch

对于killed现象初步分析可能是jvm 内存出错导致,很可能是内存不够

之前的Hadoop相关java进程都是以1g内存参数启动jvm的,在elasticsearch中将其修改为512了,这一点上两块使用java前后有所不同步

其次,是否是因为这些java进程的存在,消耗了大量jvm内存,导致后面再开新的java进程会崩溃,由于内存不够

关闭Hadoop相关进程,使用jps,重新运行elasticsearch和kibana,成功,可以通过web看到kibana的页面

jps只有elasticsearch一个进程,kibana难道不是java进程启动????

原来因为kibana是使用node.js写的,所以进程在node中。但是查找到的node进程不一定就是kibana的,

所以还需要根据端口进一步确认,直接查看5601端口的占用情况,确定下进程ID,然后在查看下node进程的ID,

如果一致,就可以确定该node进程就是kibana的进程了。

这是很关键的一点。之前出现过关闭elasticsearch后,再次启动elasticsearch后,出现kibana启动后卡住,CPU占比接近100%的情况

无意中发现此时kibana的web端仍然是可用工作的,才想起来它可能在后台工作,并没有退出。

此时,可通过netstat 查看5601端口是否仍然在工作

 netstat -anlp | grep 5601

(Not all processes could be identified, non-owned process info

 will not be shown, you would have to be root to see it all.)

tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      78985/bin/../node/b

进一步的找到进程78985

ps aux | grep 78985

ywg       78985  1.2  8.3 1439760 184632 ?      Sl   06:59   2:37 bin/../node/bin/node --no-warnings bin/../src/cli

此即为kibana关联的node进程

===========================================================

进一步的,测试数据的流动

Logstash 的配置文件中使用了网络的例子,

input {file {path => "/var/log/bootstrap.log"         start_position => "beginning"type => "test"}}

输入使用了上述日志文件,并以beginning为开始标记

使用echo命令向上述日志文件中增加内容,可以在Logstash的日志中看到新内容解析

{"message" => "Mytest ELK","@timestamp" => 2023-11-04T14:20:08.571Z,"path" => "/var/log/bootstrap.log","type" => "test","tags" => [[0] "_grokparsefailure"],"host" => "ubuntu","@version" => "1"}

从kibana中可以看到日志信息及统计信息变化

如果要添加索引项目,可以在manager中添加索引匹配模式

下一步就是熟悉elasticsearch的数据结构,这样在后续使用中才可以做到从心所欲。

相关文章:

ELK极简上手

目录 引言 首先,下载相关的包 其次,安装启动elasticsearch 下一步,安装并启动logstash 最后,安装并启动kibana 进一步的,测试数据的流动 引言 最近整理电脑发现之前的一篇ELK极简入门笔记,现整理发出…...

在 JavaScript 中,变量的作用域是如何确定的?

在 JavaScript 中,变量的作用域是由作用域链(Scope Chain)来确定的。作用域链是指变量在执行期间访问的作用域的链式结构。 JavaScript 中的作用域分为全局作用域和局部作用域(函数作用域和块级作用域)。 全局作用域…...

常见面试题-TCP三次握手四次挥手

TCP 三次握手/四次挥手 参数用途SYN用于启动和建立连接时,同步设备之间的序列号。0到2^32 - 1的随机数。ACK向另一端确认已经收到 SYN,数值为收到 SYN 增一。SYN-ACK确认之前收到了 SYN,数值为自定义值。FIN终止连接。RST重置连接。 三次握…...

前端框架Vue学习 ——(六)Vue组件库Element

文章目录 Element 介绍快速入门常见组件表格分页Dialog 对话框组件表单 Container 布局容器 Element 介绍 Element:是饿了么团队研发的,一套为开发者、 设计师和产品经理准备的基于Vue 2.0的桌面端组件库。 组件:组成网页的部件,…...

第六章:Property-based Testing and Test Oracles

文章目录 Test OraclesActive and Passive Test OraclesTypes of Test OraclesFormal, executable specificationsSolved examplesMetamorphic oraclesAlternative implementations (备用实现)Heuristic oracles (启发式)The Golden Program!Oracle Deviation (Oracle偏差)T…...

react生命周期函数

React 组件的生命周期可分为三大阶段:挂载阶段(Mounting)、更新阶段(Updating)和卸载阶段(Unmounting)。 1.挂载阶段(Mounting) 在组件被插入到 DOM 中后,会…...

QSqlDatabase使用Sqlite

QSqlDatabase使用Sqlite Sqlite本身就可以被内嵌在程序中,QSqlDatabase也自带Sqlite驱动,无需任何第三方依赖,可以直接使用 QSqlDatabase _db QSqlDatabase::addDatabase("QSQLITE"); QString dbPath "/path/to/xxx.db&qu…...

宝马——使用人工智能制造和驾驶汽车

德国汽车制造商宝马(BMW)每年在全球制造和销售250万台汽车,其品牌包括宝马、MINI和劳斯莱斯。 宝马汽车以其卓越的性能和对新技术的应用而著名,它是道路上最精致的汽车之一,并且和其竞争对手戴姆勒(Daimler)一样,在将自动驾驶汽车…...

java入门,Map<? extends String, ?>

一、前言 是不是平时写业务代码的时候很少用到这个写法&#xff1a;Map<? extends String, ?>&#xff0c;这是Map类型&#xff0c;Map的键是? extends String 类型&#xff0c;值是?。为什么不是我们平时写的Map< String, Object>&#xff0c;这种写法有什么好…...

Spring Boot 统一处理功能

目录 1.用户登陆权限验证 1.1 每个方法验证 1.2 Spring AOP 用户统一登陆验证 1.3 拦截器 1.3.1 自定义拦截器 1.3.2 将自定义拦截器配置到系统设置中&#xff0c;并且设置拦截规则 1.3.3 排除所有的静态资源 1.4 登录拦截器&#xff08;练习&#xff09; 1.5 拦截器原…...

香港金融科技周VERTU CSO Sophie谈Web3.0的下一个风口 手机虚拟货币移动支付

10月31日&#xff0c;香港金融科技周正式拉开帷幕。这项香港金融科技界地年度盛事今年已经踏入了第八届&#xff0c;本届活动吸引超过数百位金融科技专业人士、创业者和行业领袖现场参与&#xff0c;线上参与观众超过10万人次。 在金融科技周的圆桌会议上&#xff0c;VERTU首席…...

分布式单元化

一 分布式单元化 1.1 两地三中心 顾名思义&#xff0c;两地指的是两个城市&#xff1a;同城&#xff0c;异地。三中心指的是三个数据中心&#xff1a;生产中心、同城容灾中心、异地容灾中心。 在同一个城市或者临近的城市建设两个相同的系统&#xff0c;双中心具备相当的业…...

wvp-gb28181-pro接入海康摄像头

网络-高级配置-平台接入 sip服务器信息默认参数如下&#xff0c;一键安装wvp完成之后默认就是这样的参数 设置项 设置值 平台接入方式 28181 本地sip端口 5060 传输协议 tcp、udp&#xff08;外网的话我建议还是用tcp&#xff09; 启用 勾选 协议版本 GB/T28181-201…...

近视眼选择什么台灯好?专家推荐的防近视台灯

年轻的时候不懂&#xff0c;以为自己的眼睛不好&#xff0c;近视度数高&#xff0c;是因为长时间看书造成的&#xff0c;其实我们都忽视了一个最为重要的影响因素&#xff0c;那就是灯光。如今的孩子面临着比我们以前更要繁重的学习压力&#xff0c;因此更需要注意用眼健康了&a…...

数据标注工具【LabelImg】安装使用 用VOC制作自己的数据集

labelImg的安装 ⭐️LabelImg简介⭐️LabelImg的安装⭐️labelImg标注数据集⭐️利用VOC制作自己的数据集 ⭐️LabelImg简介 Labelimg是一款开源的数据标注工具&#xff0c;标签可用于分类和目标检测&#xff0c;它是用python写的&#xff0c;并使用Qt作为其图形界面&#xf…...

Zeus IoT : 基于 SpringBoot 的分布式开源物联网大数据平台

Zeus IoT 是一个集设备数据采集、存储、分析、观测为一体的开源物联网平台&#xff0c;全球首创基于 Zabbix 的物联网分布式数据采集架构&#xff0c;具备超百万级物联网设备的并发监控能力&#xff0c;真正具备工业级性能与稳定性的开源物联网大数据中台。 Zeus IoT 致力于让设…...

面试—如何介绍项目中的多级缓存?

项目中使用的多级缓存也就是 分布式缓存 Redis 本地缓存 Caffeine&#xff0c;那么令 Caffeine 作为一级缓存&#xff0c;Redis 作为二级缓存&#xff0c;在项目中通过记录数据的访问次数&#xff0c;将热点数据放在 本地缓存&#xff0c;将非热点数据放在 Redis缓存 中&#…...

PyTorch入门学习(十七):完整的模型训练套路

目录 一、构建神经网络 二、数据准备 三、损失函数和优化器 四、训练模型 五、保存模型 一、构建神经网络 首先&#xff0c;需要构建一个神经网络模型。在示例代码中&#xff0c;构建了一个名为Tudui的卷积神经网络&#xff08;CNN&#xff09;模型。这个模型包括卷积层、…...

《 Hello 算法 》 - 免费开源的数据结构与算法入门教程电子书,包含大量动画、图解,通俗易懂

这本学习算法的电子书应该是我看过这方面最好的书了&#xff0c;代码例子有多种编程语言&#xff0c;JavaScript 也支持。 《 Hello 算法 》&#xff0c;英文名称是 Hello algo&#xff0c;是一本关于编程中数据解构和算法入门的电子书&#xff0c;作者是毕业于上海交通大学的…...

数据库之事务

数据库之事务 事务的特点&#xff1a; ACID 原子性 一致性&#xff1a;数据库的完整性约束&#xff0c;不能被破坏 隔离性 持久性&#xff1a;数据一旦提交&#xff0c;事务的效果将会被永久的保留在数据库中。而且不会被回滚 主从复制 高可用 备份 权限控制 脏读&am…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...