环境需要

  1. Elasticsearch需要JAVA环境,至少是JDK1.8
  2. elasticsearch 不允许root用户使用,需要新增个elk用户
  3. 如果觉得官网下载太慢,可以使用这个

    https://pan.baidu.com/s/1LndFYnnZQwFx2-MlDZXdaQ

    提取码:7qnk

Elasticsearch

下载及安装

  1. 如果网络状况好,可以考虑在线安装,比较省事
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512 #校验
#校验的正常输出为 elasticsearch-{version}-linux-x86_64.tar.gz: OK
tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz
cd elasticsearch-7.6.2/
  1. 或者下载离线包,然后手动上传到服务器去解压。Elasticsearch官网下载地址

    找到 Install Elasticsearch from archive on Linux or MacOS ,点进去就自动下载了。

  2. 或者参考这篇文章的安装方式 快速搭建ELK日志分析系统

注意!我这里使用的版本是7.6.2,ELK三个软件的版本需要保持一致才可以。

配置文件

cluster.name: demo
node.name: node-1
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
cluster.initial_master_nodes: ["node-1"]

注意!配置文件中的path.logs和path.data这俩文件夹都要把权限赋给elk用户!不然运行时就会报错。

  chown -R elk.elk 文件夹路径

运行测试

在elasticsearch的根目录

#运行elasticsearch:
bin/elasticsearch & #检查端口
netstat -antp |grep 9200 #测试接口访问
curl http://127.0.0.1:9200/
#返回结果如下则表示运行成功:
{
"name" : "node-1",
"cluster_name" : "demo",
"cluster_uuid" : "PLIR2GguShK5RtDlE7xFeQ",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

ElasticsearchAPI

Elasticsearch提供了API来方便用户使用,具体可以参考这篇 Elasticsearch 快速开始

下面是两个常用的API,用来查看logstash是否成功将消息传入了Elasticsearch

1. 查看全部索引
curl -X GET "localhost:9200/_cat/indices?v" 2. 查看某个索引中的所有文档
curl -X GET "http://localhost:9200/索引名称/_search?q=*&pretty"

插件(可选项)

安装elasticsearch-head插件

  1. 使用docker安装,省时省力
    docker run -p 9100:9100 mobz/elasticsearch-head:5
  1. 或使用git安装
    yum install -y npm
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
  1. 测试访问
  netstat -antp |grep 9100 #查看端口运行情况

在浏览器上访问 http://IP:9100/ 查看是否成功启动

Logstash

下载

官方网站中提供了tar.gz安装包和在线下载,自行选择。 官方下载地址

往下翻还有安装配置指引,讲真还是蛮细心的。

测试

  bin/logstash -e 'input { stdin { } } output { stdout {} }'

成功运行的话,应当是你输入什么,他就给你返回什么,而且是带有time和host的格式化输出

配置

新建个配置文件,比如elk.conf,如下输入并保存

  input { stdin { } }
output {
elasticsearch { hosts => ["elasticsearch服务的IP:9200"] }
stdout { codec => rubydebug }
}

运行

通过刚才新建的配置文件来启动logstash

  logstash -f ./elk.conf

这时,你输入进去的信息,就会被发往两个地方,一个是发给elasticsearch,另一个是由标准输出显示出去。

最好也是用elk这个用户来运行,报错的话注意看是否是没有写权限。我用elk用户运行Elasticsearch之后,再用root用户运行Logstash时,发现无法查询到输入的信息。

Kibana

下载

官方下载地址

配置

解压之后,开始配置Logstash

编辑kibana的配置文件
vim kibana/config/kibana.yml 修改配置文件如下,开启以下的配置
server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://192.168.1.202:9200" kibana.index: ".kibana"
#设置为中文
i18n.locale: "zh-CN"

运行

#这里仍是使用elk用户运行
bin/kibana

运行成功后,kibana会自动去按照配置中的路径去连接Elasticsearch,如果没连接上,他会有提示并且一直重复尝试连接。

测试与使用

在浏览器中输入地址:http://IP:5601就可以啦!不过第一次进入可能会很慢。

然后就是去连接Elasticsearch中的Logstash索引。



下面会列出来Elasticsearch 中可用的索引,选择logstash,下一步,配置时间索引,点击完成就OK啦。

然后左侧菜单栏的第二个按钮,进入Discover页面,选择logstash索引,此时可能会发现,哎?怎么没数据,那就请注意你的右上角时间筛选是否默认为最近十五分钟了,更改时间筛选条件后再次查询,就可以顺利查到你刚才在logstash里面传进去的消息啦!

至此,基础的搭建工作告一段落。当我看到我在logstash命令行中传入的那些数据真的可以在Kibana的页面中显示出来的时候,真的是满满的成就感,就像搭积木一样的把这三个工具拼接到了一起,很开心。

但是之后才是真正学习的开始,下一步是让logstash从日志文件中实时读取信息传入Elasticsearch 中,还要去学习如何更好的使用这三个软件,任重道远。

报错解决

max virtual memory areas vm.max_map_count is too low

参考此处 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

elasticsearch进程莫名其妙关闭了?

内存占用过大,系统会oom kill掉占用最大内存的进程(没办法,测试用的云服务器是最低的配置)。

关掉oom kill(不推荐在生产环境使用):

 vm.panic_on_oom = 1 //1表示关闭,默认为0表示开启OOM
sysctl -p

最后

参考文章:

附 有钱人的做法

腾讯云 自助搭建 ELK 日志服务

【笔记】草履虫也能看懂的ELK搭建流程的更多相关文章

  1. PHP笔记——java程序员看懂PHP程序

    PHP笔记——java程序员看懂PHP程序   php是一种服务器端脚本语言,类型松散的语言. <?php   ?>       xml风格 <script language=”ph ...

  2. 一张图看懂ANSYS17.0 流体 新功能与改进

    一张图看懂ANSYS17.0 流体 新功能与改进   提交 我的留言 加载中 已留言   一张图看懂ANSYS17.0 流体 新功能与改进 原创2016-02-03ANSYS模拟在线模拟在线 模拟在线 ...

  3. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  4. 【 全干货 】5 分钟带你看懂 Docker !

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者丨唐文广:腾讯工程师,负责无线研发部地图测试. 导语:Docker,近两年才流行起来的超轻量级虚拟机,它可以让你轻松完成持续集成.自动交付 ...

  5. 小学生都能看懂的FFT!!!

    小学生都能看懂的FFT!!! 前言 在创新实践重心偷偷看了一天FFT资料后,我终于看懂了一点.为了给大家提供一份简单易懂的学习资料,同时也方便自己以后复习,我决定动手写这份学习笔记. 食用指南: 本篇 ...

  6. 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

    首发于公众号:计算机视觉life 旗下知识星球「从零开始学习SLAM」 这可能是最清晰讲解g2o代码框架的文章 理解图优化,一步步带你看懂g2o框架 小白:师兄师兄,最近我在看SLAM的优化算法,有种 ...

  7. 闯缸鱼:看懂python如何实现整数加和,再决定是否自学编程

    玩鱼缸的新手都知道有一种鱼叫"闯缸鱼",皮实好养,帮助新手判断鱼缸环境是否准备好.这篇笔记,最初用来解答一个编程新手的疑问,后来我发现,整理一下也可当做有兴趣自学python 编程 ...

  8. Oracle调优之看懂Oracle执行计划

    @ 目录 1.文章写作前言简介 2.什么是执行计划? 3.怎么查看执行计划? 4.查看真实执行计划 5.看懂Oracle执行计划 5.1 查看explain 5.2 explain执行顺序 5.3 访 ...

  9. [转]看懂UML类图

    这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图所表达的含义和最终的代码 ...

随机推荐

  1. silky微服务模块

    目录 模块的定义和类型 在模块中注册服务 通过ServiceCollection实现服务注册 通过ContainerBuilder实现服务注册 使用模块初始化任务 使用模块释放资源 模块的依赖关系 构 ...

  2. Django笔记&教程 2-3 视图(view)函数介绍

    Django 自学笔记兼学习教程第2章第3节--视图(view)函数介绍 点击查看教程总目录 参考文献:https://docs.djangoproject.com/en/2.2/topics/htt ...

  3. ajax的get方法获取豆瓣电影前10页的数据

    # _*_ coding : utf-8 _*_ # @Time : 2021/11/2 11:45 # @Author : 秋泊酱 # 1页数据 电影条数20 # https://movie.dou ...

  4. Spring Boot 2.6.0正式发布:默认禁止循环依赖、增强Docker镜像构建...

    昨天,Spring官方正式发布了Spring Boot今年最后一个特性版本:2.6.0 同时,也宣布了2.4.x版本的终结. 那么这个新版本又带来了哪些新特性呢?下面就一起跟着DD来看看吧! 重要特性 ...

  5. [atAGC045C]Range Set

    首先我们可以把所有位置都变为1,因此不妨假设$a\le b$ 一个字符串$s$合法当且仅当:将其中每一段长度不小于$a$的0变成1后,存在一段1的长度都不小于$b$ 证明:我们称$S_{a,b}$为通 ...

  6. [JS高程] 特殊的原始值类型

    目录 原始值包装类型 (特殊引用类型) 原始值包装类型和应用类型的区别 原始值包装类型 (特殊引用类型) 在ES6 时,ECMAScript 数据类型是这样去分类的: 原始值(基本数据类型) Numb ...

  7. 2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

    审计代码 传入参数a,进入parserIfLabel函数 发现参数a的模板,a的格式要匹配pattern,如{if:payload}{end if} 可知ifstr是a中匹配的第一组的值,即paylo ...

  8. 详解如何用 CSS3 完成 3D transform变换

    Tips:阅读提示!!! 首先,本文针对的是3D transform变换的学习,所以你需要对 2D transform变换 有一定的了解 其次,需要说明的是,代码是一种需要自己不断实践的学科,建议各位 ...

  9. 贪心/构造/DP 杂题选做Ⅲ

    颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...

  10. [USACO17FEB]Why Did the Cow Cross the Road III P

    [USACO17FEB]Why Did the Cow Cross the Road III P 考虑我们对每种颜色记录这样一个信息 \((x,y,z)\),即左边出现的位置,右边出现的位置,该颜色. ...