前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ELKStack日志平台——Elasticsearch 6 安装与配置教程

ELKStack日志平台——Elasticsearch 6 安装与配置教程

作者头像
菲宇
发布2019-06-13 10:47:18
5120
发布2019-06-13 10:47:18
举报
文章被收录于专栏:菲宇菲宇

什么是ELK STACK: ELK Stack是Elasticserach、Logstash、Kibana三种工具组合而成的一个栈。ELK可以将我们的系统日志、访问日志、运行日志、错误日志等进行统一收集、存储分析和搜索以及图形展现。相比传统的CTRL+F或者数据库语句来进行数据查询,ELK支持分布式搜搜,数据量可达PB级别,检索速度更快速,接近实时处理,并且更智能,可以去掉一些没有特殊含义的词汇,比如“这,的,是”,还可以进行搜索补全与搜索纠错(想想在百度搜索的情景) LogStash: 负责日志的收集,并且可以输出到指定位置,如Redis、kafka、以及最主要的ElasticSearch中,通常会在所有需要收集日志的服务器上安装Logstash,然后由Logstash agent端发送到Logstash的Server端 ElasticSearch: 使用JAVA开发、基于Lucene搜索引擎库的全文搜索工具,通过RESTful API(一种接口设计规范,让接口更易懂)隐藏了Lucene原本的复杂性。实现了日志数据的分布式、实时分析,并且可以进行搜索补全与纠错等功能,是ELK最核心的组件。相比MySQL库和表的概念,在ES中把库叫做索引。 Kibana: 负责数据的展示与统计,是一个图形化的管理系统 ElasticSearch概念与工作流程介: 索引(index):文档的容器,是属性类似的文档集合,类似MySQL中的库或者表的概念,强烈建议同一类的数据放一个索引里 分片(shared):Elasticsearch默认将创建的索引分为5个shard(也可以自定义),每一个shard都是一个独立完整的索引,然后分布在不同的节点上 节点:站在用户角度来看并没有主节点概念,每个节点对用户来说都是一样的,都会响应请求,但是对于集群来说,会有一个主节点用于管理节点状态以及决定shard分布方式,还会周期性检查其他节点是否可用并进行修复。各节点是通过集群名称来判断是否属于同一节点。 在Elasticsearch中将文档归属于一种类型type,而这些类型存在于索引index中。用MySQL来举例看看他们的对应关系: Database->Table->Row->Column Indice->Type->Document->Field 安装Elasticsearch: 1、ElasticSearch默认工作在集群模式下,扩展性很强,并且支持自动发现。所以在实验环境中需要至少2台服务器来搭建,但是为了防止脑裂,建立使用基数台服务器。在部署ElasticSearch前需要先部署JAVA环境,所以第一步是安装JDK,这里偷懒使用yum安装了openjdk,生产环境还是建议用JDK的源码包(暂时不支持JDK 9)。 yum install java-1.8.0-openjdk.x86_64 2、下载ElasticSearch,官网地址是www.elastic.co(不是com),其每个Products下都有专门的文档用于参考。 下载tar包解压,然后进入config目录,该目录下除了有一个主配置文件elasticsearch.yml需要配置外,还有一个jvm.options文件用于JVM的调优 tar zxf elasticsearch-6.3.tar.gz cd elasticsearch-6.3/config jvm.options文件主要是JVM优化相关,关于垃圾回收这块使用默认配置就可以了,我们要调整的就是最大内存和最小内存的设置。通常设置为一样大小,具体的值可以设置为系统最大内存的一半或三分之二 -Xms1g #程序启动时占用内存的大小 -Xmx1g #程序启动后最大可占用内存的大小 3、修改ElasticSearch的配置,编辑elasticsearch.yml cluster.name: my-application #集群名称,相同集群名称的节点会自动加入到该集群 node.name: r1 #节点名称,两个节点不能重复 path.data: /path/to/data #指定数据存储目录 path.logs: /path/to/logs #指定日志存储目录

network.host: 0.0.0.0 #本机地址或者4个0 http.port: 9200 #指定端口 discovery.zen.ping.unicast.hosts: ["192.168.44.130"] #集群中master节点初始化列表,通过列表中的机器来自动发现其他节点 3、运行bin/elasticsearch 启动服务(加-d是在后台运行)。启动后服务会监听在9200端口,还有个9300端口用于集群间通信。如果配置文件中监听的端口是外网地址,在运行Elasticsearch时会遇到一些内核报错,具体报错和解决方法如下(做好配置后,需要注销用户重新登录才会生效): (1)don't run elasticsearch as root: 解决办法:Elasticsearch是不允许使用root用户来运行的,所以需要把ElasticSearch目录所有者修改为其他用户,并切换到该用户去执行。用浏览器打开能看到如下信息代表安装成功: elk2.png (2)Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12): 解决办法:内存不足,升级内存 (3)Exception in thread "main" java.nio.file.AccessDeniedException 解决办法:运行Elasticsearch程序的用户权限不够,把Elasticsearch目录权限修改下即可 (4)max virtual memory areas vm.max_map_count [65530] is too low 解决办法:修改/etc/sysctl.conf,增加一行vm.max_map_count= 262144。然后执行sysctl -p使其生效 (5)max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536] 解决办法:修改/etc/security/limits.conf,做以下配置 * soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536 (6)max number of threads [3812] for user [elkuser] is too low, increase to at least [4096] 解决办法:修改/etc/security/limits.d/20-nproc.conf,做以下配置 * soft nproc 4096 * hard nproc 4096 Elasticsearch接口说明: ES启动后如何验证节点是否在集群中呢?ES是使用RESTful形式的接口对外提供访问,所以我们要访问ES接口的话可以使用curl命令。ES有四类API,作用大概如下: 1、用来检查集群节点、索引当前状态 2、管理集群节点、索引及元数据 3、执行增删改查操作 4、执行高级操作,例如paging,filtering Elasticsearch 常用API有cat、cluster等,下面是一些简单介绍: 通过curl可以看到cat这个API下有很多子功能 catapi1.png 1、Elasticsearch集群健康检查: 通过cat、cluster两个API都可以进行集群健康检查,green代表集群完全正常;yellow代表集群正常,部分副本分片不正常;red代表集群故障,数据可能会丢失 http://localhost:9200/_cat/health http://localhost:9200/_cat/health?v #显示信息更详尽 http://localhost:9200/_cluster/health http://localhost:9200/_cluster/health?pretty(加上pretty会将内容格式化再输出,更美观) 2、查询所有节点列表 http://localhost:9200/_cat/nodes?v 3、查询所有索引 <strong>http://localhost:9200/_cat/indices?v</strong> curl命令在Elasticsearch中的使用 使用curl可以通过模拟http请求的方式去创建和管理索引,常用选项如下: -X:指定http的请求方法,如HEAD,POST,PUT,DELETE -d:指定要传输的数据 -H:指定http请求头信息 1、使用curl新增索引 curl -XPUT "localhost:9200/blog_test?pretty" #新增一个blog_test索引 2、删除索引 curl -X DELETE "localhost:9200/bolg_test?pretty" 3、查询创建的索引 http://localhost:9200/_cat/indices?v 下面是更贴近实际操作的curl命令,插入了两条数据 #为blog索引新增两条记录,指定type为article,ID为2和3 curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/2?pretty' -d ' { "title": "test", "content":"testsfsdfdsfdsf", "PV":10 }' curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/3?pretty' -d ' { "title": "test", "content":"testsfsdfdsfdsf", "PV":23 }'

查询索引和数据搜索

#通过ID来查询 curl -XGET 'localhost:9200/blog/article/2?pretty' #指定具体的索引和type进行搜索 4 curl -XGET 'http://localhost:9200/blog/article/_search?q=title:test'

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档