分布式ELK-ElasticSearch

ELK:适用于处理海量日志的一套工具,主要包括ElasticSearch、Logstash、Kibana。

ElasticSearch:负责存储和检索日志
Logstash:负责对日志数据的分析和处理
Kibana:日志数据的可视化

一、ElasticSearch的相关概念

ElasticSearch是一款面向文档的数据库。类似于nosql,通过http请求进行操作。

相关概念:
	node:安装了ElasticSearch数据库的主机
	cluster:集群
	document:可以被搜索、查找的基本单元。相当于sql中的行
	index:拥有相似特征的文档集合。相当于sql中的database
	type:类型。相当于sql中的表
	filed:相当于sql中的列
	shards:(index)的分片
	replicas:(index)的拷贝

二、安装

以一台主机为例:192.168.1.51(已经配置好对应的yum,关闭防火墙和selinux)

修改/etc/hosts保证主机名可以ping通

yum -y install java-1.8.0-openjdk
yum -y install elasticsearch

vim /etc/elasticsearch/elasticsearch.yml	# 配置文件
network.host: 0.0.0.0	# 54行	

systemctl start elasticsearch	# 启动服务,9200和9300端口被监听

访问http://192.168.1.51:9200

三、ELK集群

准备主机:192.168.51~55

修改/etc/hosts将所有主机都加入,保证可以ping通

安装过程和单台主机完全一样,仅需要对配置文件进行修改
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: ELKDB		# 集群的名称,同一个集群名称要相同,17行
node.name: es1			# 本机的主机名,23行
network.host: 0.0.0.0	# 54行
discovery.zen.ping.unicast.hosts: ["es1", "es2", "es3"]	# 声明集群主机代表(并非所有主机),68行
# 如果重启集群需要首先启动声明的集群代表主机
# 这些主机是集群的“代表”,集群中的主机重启后需要到这里来“报到”然后才可以加入集群
# 验证:关闭集群所有主机es1~es5、从es5开始依次启动,每启动一台就查看依次集群状态

systemctl restart elasticsearch

访问:firefox http://192.168.1.51:9200/_cluster/health?pretty	# 查看集群状态

四、ES插件

插件只需要安装在集群中的一台主机上,就可以管理集群中的所有主机(安装在1.51上)

head插件:展现拓扑结构,可以进行index和node级别的操作,提供查询api、
将结果以json和表格的形式返回,提供一些快捷菜单,用来展现集群的各种状态

kopf插件:是es集群的管理工具,提供了对es集群操作的api

bigdesk:是es集群的一个集群监控工具,可以查看集群的各种状态,cpu、内存使用情况,
可以查看index数据,搜索情况,http连接数等信息。


安装插件:
cd /usr/share/elasticsearch/bin/
./plugin install ftp://192.168.1.254/elk/elasticsearch-head-master.zip		# 软件包必须要以url的形式,
./plugin install file:///elk/elasticsearch-kopf-master.zip	# 本地url
./plugin install ftp://192.168.1.254/elk/bigdesk-master.zip
# 安装软件包一定给出定软件包的url地址

./plugin list	# 查看安装的插件(install、remove、list)

访问http://192.168.1.55:9200/_plugin/head

四、ES操作

使用curl工具:
	-X 指定method方式
	-A 指定user-agent
	-i 显示返回数据的头部信息,一般用于探测服务器
	
	http://192.168.1.51:9200/_cat/health?v		# 显示参数信息
	http://192.168.1.51:9200/_cat/health?help	# 查看帮助
	
1、创建index:
	curl -X PUT "http://192.168.1.51:9200/index名" -d
	‘{
	    "settings":{
	    "index":{
	    "number_of_shards":5,        //分片数
	    "number_of_replicas":1        //副本数
	   }
	  }
	}’	# json字符串

2、向index中插入数据:
	curl -X PUT "http://192.168.1.51:9200/index名/type名/key" -d 
	'{
		"name":"jason",
		"age":"18",
	}'	# es类似于nosql,是key-value形式存储数据的

3、修改数据:(使用_update关键字)
	curl -X PUT "http://192.168.1.51:9200/index名/type名/key/_update" -d 
	'{
		 "doc":{	# doc是关键字
		 "age": "30"
	 	}
	 }'	# 修改key对应的数据

4、查询:
	curl -X GET "http://192.168.1.51:9200/index名/type名/key"

5、删除:(可以删除index,不能删除type)
	curl -X DELETE "http://192.168.1.51:9200/index名/type名/key"		# 删除对应的数据
	curl -X DELETE "http://192.168.1.51:9200/index名/" 				# 删除对应的index
	curl -X DELETE "http://192.168.1.51:9200/*"						# 删除所有index

6、导入数据:(使用_bulk关键字)
	①:导入index(相当于导入整个数据库)
	curl -X POST "http://192.168.1.51:9200/_bulk" --data-binary @logs.json
	# logs.json这个文件的奇数行是index,type和key
	# 奇数行:{"index": {"_index": "index名称", "_type": "type名称", "_id": "key"}}
	# 偶数行是json格式的数据,作为key对应的value
	# 例如:
	{"index":{"_index":"shakespeare","_type":"act","_id":0}}	# 第一行
	{"line_id":1,"play_name":"Henry IV","speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"}	# 第二行


	②:向指定的type中导入数据(相当于向某个表中导入数据)
	curl -X POST "http://192.168.1.51:9200/index名称/type名称/_bulk" --data-binary @xx.json
	# xx.json这个文件的奇数行只有key
	# 奇数行:{"index":{"_id":"key"}}
	# 偶数行是json格式的数据,作为key对应的value
	# 例如:
	{"index":{"_id":"1"}}	# 第一行
	{"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke"} # 第二行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值