ELK极简上手

news2024/11/26 0:36:36

目录

引言

首先,下载相关的包

其次,安装启动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_percent

1699100535 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 name

192.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.size

green  open   .monitoring-kibana-6-2020.04.05 dEiKRojsQv-o22ZL7POLVA   1   0      25917            0      3.2mb          3.2mb

green  open   .monitoring-es-6-2020.04.05     dosbfiHqR_uQcDNS6KTXGw   1   0      95077          200     36.2mb         36.2mb

yellow open   bank                            9X6hpCfMRgG0Hg_pldRghA   5   1       1000            0      483kb          483kb

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

green  open   .monitoring-es-6-2020.04.12     L2kP2a1sRJmYv32WJiR9ug   1   0      34872            0     14.9mb         14.9mb

green  open   .monitoring-kibana-6-2020.04.13 7JMe7HYlQaKr_SEAocLXuA   1   0         15            0     81.4kb         81.4kb

green  open   .monitoring-es-6-2020.04.06     VIwdUGpxQ_q3GUNDaiBrFQ   1   0      10283          216        5mb            5mb

green  open   .monitoring-kibana-6-2020.04.04 L3uJIJ9GQ2WxtDFUVqT0Xg   1   0      13629            0      1.9mb          1.9mb

yellow open   test                            3wkfLrXHRXS-HZsWXkDYjg   5   1          2            0     10.8kb         10.8kb

green  open   .monitoring-kibana-6-2020.04.12 7okTRX0VTrya7qCKusG6kQ   1   0       9184            0      1.1mb          1.1mb

green  open   .monitoring-kibana-6-2020.04.06 Bq9YykB7Smi3IqY7KqSUew   1   0       2361            0      326kb          326kb

green  open   .monitoring-es-6-2020.04.04     X05uCpFqTtupA5x9OKFCvA   1   0      45040           46     16.7mb         16.7mb

green  open   .monitoring-kibana-6-2020.04.08 bpTl2-TdSn6hRKFG2WdPlQ   1   0          8            0     48.3kb         48.3kb

green  open   .monitoring-es-6-2020.04.13     ku_cSQXDRIG88gKRmZy3cw   1   0        147           44    234.6kb        234.6kb

green  open   .monitoring-es-6-2020.04.07     _GTr8c30Q1iam0Jq49MacQ   1   0      27084          203     11.2mb         11.2mb

green  open   .monitoring-kibana-6-2020.04.07 or0a2MePRuiQ815Q7SQKlw   1   0       7180            0   1000.2kb       1000.2kb

green  open   .monitoring-es-6-2023.11.04     UDOLcrBPSRGo0w_5XGuxuQ   1   0       3674          135      2.1mb          2.1mb

green  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的数据结构,这样在后续使用中才可以做到从心所欲。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从源码角度解读BetterScroll中maxScrollY的含义

最近在看一个Vue3 Typescript项目,里面有段BetterScroll代码。 if (scroll.value && scroll.value.maxScrollY > -1) { state.manualLoading true await searchMore() state.manualLoading false } 对这个maxScrollY的含义不太明白,官网的解…

【存档】vscode配置latex环境

原来在另一台电脑上找了个教程配了一遍,这次重新配的时候,那个教程作者更新过后,改成只有linux的脚本了,所以存档一下。真香警告, 2023年初的vscodelatex写作 - 知乎 (zhihu.com) 环境: win10/win11vscodelatex work…

Flink源码解析八之任务调度和负载均衡

源码概览 jobmanager scheduler:这部分与 Flink 的任务调度有关。 CoLocationConstraint:这是一个约束类,用于确保某些算子的不同子任务在同一个 TaskManager 上运行。这通常用于状态共享或算子链的情况。CoLocationGroup & CoLocationGroupImpl:这些与 CoLocationCon…

【漏洞复现】typecho_v1.0-14.10.10_unserialize

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 漏洞利用GetShell 下载链接:https://pan.baidu.com/s/1z0w7ret-uXHMuOZpGYDVlw 提取码:lt7a 首页 漏洞点:/install.php?finish 漏洞利用 …

京东云主机租用优惠价格表和轻量云主机

京东云主机租用优惠价格表轻量云主机2C2G3M配置66元一年、2C2G4M带宽99元1年,3年326元;云主机2核4G5M带宽598元一年,买三年1499元;轻量云主机低至5.5元一个月,阿腾云atengyun.com分享领取13180元京东云服务器专用优惠代…

从公共业务提取来看架构演进——功能设置篇

1.引言 上一篇文章我们以帐号权限的提取为例,介绍了当架构跟不上业务发展时及时调整架构的一种思路。这篇文章我们以功能设置为例,进一步讨论公共业务提取这个话题。 功能设置在本文中是指产品开放给企业和用户的一些功能设置项,以视频会议…

学习视频剪辑:批量添加srt字幕,让视频更生动

随着社交媒体的普及,视频制作变得越来越重要。无论是记录生活,还是分享知识,视频都是一个非常有力的工具。但是,如何让您的视频更生动、更吸引人呢?通过学习视频剪辑,您可以使您的视频更具有吸引力。而在这…

自定义element-ui plus 函数式调用,在API,js中直接使用全局组件

npm方式: npm install -D unplugin-vue-components unplugin-auto-import yarn 方式 : yarn add unplugin-vue-components; yarn add unplugin-auto-import; 使用官方的这个: vite.config.js中配置 plugins: [vue(),AutoImport({resolvers: [ElementPlusResolve…

Educational Codeforces Round 2 D 计算几何

题目链接:Educational Codeforces Round 2 D 题目 给你两个圆。求它们相交处的面积。 输入 第一行包含三个整数 x1, y1, r1 (  - 109 ≤ x1, y1 ≤ 109, 1 ≤ r1 ≤ 109 ) - 第一个圆的圆心位置和半径。 第二行包含三个整数 x2, y2, r2 (  …

电脑如何设置不同网段的IP地址,实现访问不同IP的PLC或HMI设备?

电脑如何设置不同网段的IP地址,实现访问不同IP的PLC或HMI设备? 电脑如何设置不同网段的IP地址,实现访问不同IP的PLC或HMI设备? 这里以win10系统为例进行说明: 如下图所示,打开右下角的“网络和Internet设置”, 如下图所示,点击进入“更改适配器选项”, 如下图所示…

qt6:无法使用setFontColor

问题描述 跟着C开发指南视频学习,但是发现无论是直接使用ui设计,还是纯代码都无法实现变更字体颜色的功能。图中显示,点击颜色控件后,文本框的文字加粗、下划线、斜体等才能设置,但是无法变更颜色。 此文提醒qt sty…

【echarts基础】在柱形图上设置文本

一、需求描述 在柱状图上设置文本标签,按需修改它的颜色、大小、边框、阴影等,如下。 二、代码展示 series:[{name:"螺蛳粉",type:"bar",data:data.data.chartData.chartData.num.螺蛳粉,label:{//图形上显示文本标签formatter:&q…

数学概念 | 旋转矩阵、欧拉角、四元数

目录 一,旋转矩阵 二维旋转矩阵 三维旋转矩阵 二,欧拉角 三,四元数 四,矩阵、欧拉角、四元数相互转换 四元数转矩阵 矩阵转四元数 欧拉角转矩阵 矩阵转欧拉角 欧拉角转四元数 四元数转欧拉角 一,旋转矩阵 …

「Verilog学习笔记」移位运算与乘法

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 1、在硬件中进行乘除法运算是比较消耗资源的一种方法,想要在不影响延迟并尽量减少资源消耗,必须从硬件的特点上进行设计。根据寄存器的原理&a…

【Head First 设计模式】--策略模式

一、背景 Head First 设计模式第一章设计模式入门–策略模式 二、工具箱的工具(本章) 1、OO基础 封装 继承 多态 抽象 2、OO原则 封装变化 面向接口编程,而非面向实现编程 组合优于继承 3、OO模式 策略模式,所谓策略模式就是定义…

UE4 Niagara Module Script 初次使用笔记

这里可以创建一个Niagara模块脚本 创建出来长这样 点击号,输出staticmesh,点击它 这样就可以拿到对应的一些模型信息 这里的RandomnTriCoord是模型的坐标信息 根据坐标信息拿到位置信息 最后的Position也是通过Map Set的号,选择Particles的P…

2023年【安全员-A证】新版试题及安全员-A证模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 安全员-A证新版试题考前必练!安全生产模拟考试一点通每个月更新安全员-A证模拟考试题库题目及答案!多做几遍,其实通过安全员-A证理论考试很简单。 1、【多选题】《中华人民共和国工…

Win11新电脑启动无无线网络连接解决办法

Win11新电脑启动无无线网络连接解决办法 前言一、解决方法 前言 今天笔者在使用学校实验室分配的新电脑时候,发现在新激活的时候需要让我连接到无线网络,但不管鼠标怎么点都操作不了,于是在卡在这里了,唯一的办法就是跳过此页面&…

vCenter挂载iSCSI共享存储

1.添加磁盘,创建新的物理卷 Volumes -> (Volumes section)Manage Volumes ->create new physical volumes -> (Block Device Management) 2.点击新磁盘 3.新建物理卷 Volumes -> (Volumes section)Block Devices -> (Block Device Management)/de…

CSAPP BOMB LAB part3

CSAPP BOMB LAB part3 phase_4 bomb.s phase_4的代码: 格式: 40102e行,比较0x8rsp的值和0xe, 需要让0x8rsp小于0xe, 然后跳转到40103a, func函数根据bomb.s 转化为c代码: 这个直接参考了知乎网友的翻译, func4的返回值等于0, 跳转到40…