ELK日志管理解决方案浅探(Elasticsearch、Logstash、Kibana)

ELK(Elasticsearch、Logstash、Kibana)

ElasticSearch

Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。

特点

  • 分布式的实时文件存储,每个字段都能被索引
  • 分布式的实时分析搜索引擎,不规则查询
  • 高拓展性PB级数量级,可处理结构和非结构化数据

应用场景

  • 全文检索(全字段查询)
  • 模糊查询(搜索)
  • 数据分析(提供分析语法)

es安装

  1. 首先装好java环境以及静态网络配置
  2. 下载好安装包到指定目录下,解压安装
    linux添加一个用户es
    adduser es
    passwd es
  3. 授权es用户给指定的安装目录
    chown -R es:es /usr/elastic_search/es
  4. 用es账户启动elasticSearch
    ./elasticsearch
  5. 本机检验是否启动成功
    curl 127.0.0.1:9200
  6. 其他主机校验成功
    需要修改配置文件elasticsearch.yml
    network.host参数为你的静态ip或者主机名

安装中问题解决

再次启动报错
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决
vim /etc/security/limits.conf
在end之前添加下面信息

  • hard nofile 65536
  • soft nofile 131072
  • hard nproc 4096
  • soft nproc 2048
    参数说明
    nofile 打开文件的最大数目
    nproc 进程的最大数目
    hard 当前系统生效的设置值
    soft 系统中所能设置的最大值

vim /etc/sysctl.conf
插入下面信息
vm.max_map_count=655360
fs.file-max=655360
参数说明
vm.max_map_count 单个jvm能开启的最大线程数
fs.file-max 系统所有进程一共可以打开的文件数量

让修改生效
sysctl -p

在浏览器访问http://hadoop1:9200/,看到下面消息就成功了
{
“name” : “hR4B3zp”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “b-d3OuvoRimcc951UCxdvw”,
“version” : {
“number” : “6.3.1”,
“build_flavor” : “default”,
“build_type” : “tar”,
“build_hash” : “eb782d0”,
“build_date” : “2018-06-29T21:59:26.107521Z”,
“build_snapshot” : false,
“lucene_version” : “7.3.1”,
“minimum_wire_compatibility_version” : “5.6.0”,
“minimum_index_compatibility_version” : “5.0.0”
},
“tagline” : “You Know, for Search”
}

es的集群安装

修改配置文件elasticsearch.yml
vim /elasticsearch.yml

配置参数

cluster.name: arnold-application #集群名字,可自定义

node.master: true  #设置为主节点

node.data: true   #设置为数据节点

node.name: hadoop-1  #节点名字可自定义

path.data: /usr/elk/es_data 	#es数据路径

path.logs: /usr/elk/es_logs		#es日志路径


network.host: hadoop1 	#主机名

http.port: 9200		#端口

discovery.zen.ping.unicast.hosts: ["hadoop2", "hadoop3"]  	#集群通信主机名配置

transport.tcp.port: 9300 		#集群通信端口

discovery.zen.minimum_master_nodes: 3			#集群节点最少数目,避免脑裂最好设置半数+1

安装head插件(管控es集群的插件)

  1. 安装nodejs
  2. 下载地址
    https://github.com/mobz/elasticsearch-head
  3. 配置
    https://blog.csdn.net/Mr_Mocha/article/details/89175469
  4. 配置文件添加
    elasticsearch默认不支持第三方插件,head插件在elasticsearch5+版本后被移除elasticsearch,需要配置config/elasticsearch.yml
    文件末尾插入代码:
    #allow origin
    http.cors.enabled: true
    http.cors.allow-origin: “*”

head集群中的status显示状态

green 所有主要分片和复制分片都可用
yellow 所有主要分片可用,但不是所有复制分片都可用
red 不是所有的主要分片可用

集群术语定义

索引:一个用来指向一个或多个分片(shards)的逻辑命名空间
分片(shard):一个最小级别的工作单元,只是保存索引中所有数据的一部分,是一个lucene实例,本身就是一个完成的搜索引擎,我们的文档存储在索引中,可以把分片想象成数据的容器,文档存储在分片中,然后分片分配到集群的节点上
主分片:索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据
副分片:复制分片只是主分片的一个副本,可以提供读请求
故障转移:文档索引主要被存储在主分片中,然后复制到对应的副分片上,主副节点可做到相互转换,并且放着数据挂掉之后的数据完整性问题

es存储方式

  • 面向文档
  • json

数据结构

一个索引库index下,老版本还有多个type,后期版本中就存在一个type,多个document,一个document就是一条数据,有多个field

一些常用命令(可在kibana下的Dev Tools进行相关命令操作)

创建一个文档数据

PUT {
   Index}/{
   type}/{
   id}
{
   
}
eg:POST arnold/doc/1
{
   
  "name":"arnold",
  "age":18
}
arnold可理解成一个索引数据库
doc为type类型
1 _id 主键

批量插入文档(对象之间不能有\n)

POST {
   Index}/{
   type}/_bulk
{
   
	"index":{
   
	"_id":1
	}
	{
   
		数据实体对象
	}
	"index":{
   
	"_id":2
	}
	{
   
		数据实体对象
	}
}

查询文档

GET arnold/doc/1 获取一个文档信息

检索文档的一部分


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值