ELK 之一:ElasticSearch 基础和集群搭建
一:需求及基础:
场景:
1、开发人员不能登录线上服务器查看详细日志
2、各个系统都有日志,日志数据分散难以查找
3、日志数据量大,查询速度慢,或者数据不够实时
4、一个调用会涉及到多个系统,难以在这些协调中快速定位数据
Elastic Search + LogStash + Kibana = ELK Stack
logstash1----| (redis实现松耦合功能)
logstash2----|----->broker redis----->indexer logstash---->search storage<--------Web Logstash
logstash3----|
ELS的概念:
、索引:数据会放在多个索引中,索引可以理解为database,索引里面存放的基本单位是文档,LES会把索引分片,便于横向扩展,分别可以做备份,多个分片读比较快,备份分片在主的挂掉之后可以自动将自己提升为主分片(实现横向扩展和冗余)
、文档类型:和redis一样,key是有类型的
、节点:一个ELS的实例是一个节点
、集群:多节点的集合组成集群,类似于zookeeper会选举出主节点,客户端不需要关注主节点,连接任何一个都可以,数据会自动同步,因此应用不需要关注那个是主节点。前提是要把
配置文件:
[root@elk-server1 config]# vim elasticsearch.yml
cluster.name: hfelk-server #集群的名称,名称相同就是一个集群
node.name: Server1 #集群情况下,当前node的名字,每个node应该不一样
node.master: true #当前节点是否可以被选举为master节点,可以不选举master做保存数据
node.data: true #当前节点是否存储数据,也可以不存储数据,只做master
bootstrap.mlockall: true #锁住内存,不做swap,提高效率
http.port: #客户端访问端口
transport.tcp.port: #集群访问端口:
index.number_of_shards: #默认每个项目5个分片
index.number_of_replicas: #每个主分片一个副本分片,即5个主分片就有5个副本
二:安装及配置:
官网下载地址:
https://www.elastic.co/downloads
官方文档:
https://www.elastic.co/guide/index.html
1、安装:
安装java环境,1.8.20或以上的版本
配置yum源或使用源码安装
2、启动:
/usr/local/elasticsearch/bin/elasticsearch -d #后台进程方式启动
/etc/init.d/elasticsearch restart
3、设置启动脚本:
下载:elasticsearch-servicewrapper-master.zip
[root@elk-server1 tianqi]# mv elasticsearch-servicewrapper-master/service/ /usr/local/elasticsearch/bin/
帮助信息:
[root@elk-server1 tianqi]# /usr/local/elasticsearch/bin/service/elasticsearch
Usage: /usr/local/elasticsearch/bin/service/elasticsearch [ console | start | stop | restart | condrestart | status | install | remove | dump ] Commands:
console Launch in the current console.
start Start in the background as a daemon process.
stop Stop if running as a daemon or in another console.
restart Stop if running and then start.
condrestart Restart only if already running.
status Query the current status.
install Install to start automatically when system boots.
remove Uninstall.
dump Request a Java thread dump if running.
4、安装启动脚本:
[root@elk-server1 tianqi]# /usr/local/elasticsearch/bin/service/elasticsearch install #安装脚本
Detected RHEL or Fedora:
Installing the Elasticsearch daemon..
[root@elk-server1 tianqi]# ls /etc/init.d/elasticsearch #验证是否安装完成
/etc/init.d/elasticsearch
[root@elk-server1 tianqi]# chkconfig --list | grep ela #自动设置为开机启动
elasticsearch :off :off :on :on :on :on :off
5、启动elasticsearch服务:
[root@elk-server1 tianqi]# /etc/init.d/elasticsearch start
Starting Elasticsearch...
Waiting for Elasticsearch......
running: PID:
[root@elk-server1 tianqi]# /etc/init.d/elasticsearch status
Elasticsearch is running: PID:, Wrapper:STARTED, Java:STARTED
6、java的配置文件:
[root@elk-server1 service]# ls /usr/local/elasticsearch/bin/service/elasticsearch.conf
9200:访问的都端口
9300:服务器之间通信的端口
7、测试:
[root@elk-server1 elasticsearch]# curl -i -XGET http://192.168.0.251:9200
HTTP/1.1 OK
Content-Type: application/json; charset=UTF-
Content-Length: {
"status" : ,
"name" : "Server1",
"cluster_name" : "HFELK-Server1",
"version" : {
"number" : "1.7.0",
"build_hash" : "929b9739cae115e73c346cb5f9a6f24ba735a743",
"build_timestamp" : "2015-07-16T14:31:07Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
三:ES 概念和集群:
1、基于http的RESTful API
以jsop返回查询结果:
[root@elk-server1 config]# curl -XGET 'http://192.168.0.251:9200/_count?pretty' -d '
> {
> "query":{
> "match_all":{}
> }
> }
>
> '
{
"count" : ,
"_shards" : {
"total" : ,
"successful" : ,
"failed" :
}
}
curl -i:
[root@elk-server1 config]# curl -i -XGET 'http://192.168.0.251:9200/_count?pretty' -d '
{
"query":{
"match_all":{}
}
} '
HTTP/1.1 OK
Content-Type: application/json; charset=UTF-
Content-Length: {
"count" : ,
"_shards" : {
"total" : ,
"successful" : ,
"failed" :
}
}
2、安装ELS监控管理插件:
[root@elk-server1 service]# /usr/local/elasticsearch/bin/plugin -i elasticsearch/marvel/latest/
-> Installing elasticsearch/marvel/latest/...
Trying http://download.elasticsearch.org/elasticsearch/marvel/marvel-latest.zip...
Downloading ......................................................................................................................................................................................................................................................DONE
Installed elasticsearch/marvel/latest/ into /usr/local/elasticsearch/plugins/marvel
3、web访问:http://xx.chinacloudapp.cn:9200/_plugin/marvel/
选选免费试用:

4、进入测试界面:

5、界面效果:

提交内容:

6、提交的代码如下:
POST /index-demo/test
{
"user":"jack",
"message":"hello word"
}
}
7、 查看和删除指定文档内容:
GET /index-demo/test/AVP0y8ANAZWiuuxBK3mq/_source
DELETE /index-demo/test/AVP0y8ANAZWiuuxBK3mq/_source
8、搜索文档:
GET /index-demo/test/_search?q=hello
{
"took": ,
"timed_out": false,
"_shards": {
"total": ,
"successful": ,
"failed":
},
"hits": {
"total": ,
"max_score": 0.15342641,
"hits": [
{
"_index": "index-demo",
"_type": "test",
"_id": "AVP0y8ANAZWiuuxBK3mq",
"_score": 0.15342641,
"_source": {
"user": "jack",
"message": "hello word"
}
}
]
}
}
四:elasticsearch集群管理程序之head:
1、安装集群的管理插件head:
集群更换了虚拟机环境,所以主机名不一样,安装的时候要多安装几次,有的时候会因为网络问题无法一次 安装完成。
[root@node6 local]# /usr/local/elasticsearch/bin/plugin -i mobz/elasticsearch-head/
-> Installing mobz/elasticsearch-head/...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip...
Downloading ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE
Installed mobz/elasticsearch-head/ into /usr/local/elasticsearch/plugins/head
2、打开web管理端,查看是否已经有本机被管理了:

3、在另外一台主机上配置好java和elasticsearch,配置文件只要吧node节点的名字改了就行,其他的不需要改,然后配置脚本启动服务,再把elasticsearch启动即可,会自动在集群显示,推荐三台或以上的节点,因为其中一台主机挂掉不影响整个服务的访问
绿色代表分片都正常运行,20个分片都正常,表示集群非常健康
黄色表示所有主分片都正常,但是副本分片有丢失,意味着ELS可以正常工作,但是有一定的风险,性能也不是最好的
红色代表有主分片丢失,此部分数据就无法使用了
4、成功的集群效果:

5、以上是在监控程序marvel的界面创建了两个项目:
打开连接:http://192.168.10.206:9200/_plugin/marvel/sense/index.html
POST /index-demo/hi
{
"user":"tom1",
"message":"hello word"
}
} POST /index-hello/hi
{
"user":"tom1",
"message":"hello word"
}
}
ELK 之一:ElasticSearch 基础和集群搭建的更多相关文章
- Elasticsearch高级之-集群搭建,数据分片
目录 Elasticsearch高级之-集群搭建,数据分片 一 广播方式 二 单播方式 三 选取主节点 四 什么是脑裂 五 错误识别 Elasticsearch高级之-集群搭建,数据分片 es使用两种 ...
- 全文搜索引擎 Elasticsearch 入门:集群搭建
本文主要介绍什么是 ElasticSearch 以及为什么需要它,如何在本机安装部署 ElasticSearch 实例,同时会演示安装 ElasticSearch 插件,以及如何在本地部署多实例集群, ...
- ElasticStack之Elasticsearch集群搭建
需搭建服务器环境 操作系统 Host:port node 1 CentOS 7.2.1511 11.1.11.127:9200 node1 2 CentOS 7.2.1511 11.1.11.128: ...
- Elasticsearch(ELK)集群搭建
一.前言 Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据.Elasticsearch也使用 ...
- elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)
一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...
- elasticsearch 集群管理(集群规划、集群搭建、集群管理)
一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...
- ElasticSearch的基本用法与集群搭建
一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...
- elasticsearch集群搭建实例
elasticsearch集群搭建实例 下个月又开始搞搜索了,几个月没动这块还好没有落下. 晚上在自己虚拟机上搭建了一个简易搜索集群,分享一下. 操作系统环境: Red Hat 4.8.2-16 el ...
- 【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell
Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实 ...
随机推荐
- rman备份优化思路
本章不讲rman备份原理.仅仅提供一些思路 1.oracle11g 选择压缩算法为中级: 2.添加rman备份的通道. 以上两种做法.添加CPU的利用率,降低IO 3.指定rate參数 这个rate和 ...
- swt combo 自动补全
public class AutoCompleteComboMain { static final Display display = new Display(); static fi ...
- C#静态方法
C#静态方法 学习C#静态函数及变量的一个精典例子与代码 (1)用于对静态字段.只读字段等的初始化. (2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的. (3)类的 ...
- Js动态设置Img大小
function ResizePic() { $('img').each(function () { var maxWidth = 450; // 图片最大宽度 ...
- HttpModule、HttpHandler和Page的生命周期
1.引言 2.两个处理步骤 2.1.创建ASP.NET环境 2.2.用触发的MHPM事件处理请求 3.什么事件中应该做什么 4.示例代码 5.深入ASP.NET页面事件 1.引言 这篇文章我们将试图理 ...
- python切片练习
这块儿没什么难的,细心一点就好 L = [] n = 1 while n <= 99: L.append(n) n = n + 2 print(L) #但是在Python中,代码不是越多越好,而 ...
- s3c2440栈分配情况(fl2440裸机 stack)
//2440INIT.S ;The location of stacks UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ SVCStac ...
- jz2440不能成功地启动文件系统, Failed to execute /linuxrc.
文件系统加载失败,错误信息提示: VFS: Mounted root (nfs filesystem). Freeing init memory: 140K Failed to ex ...
- 将 Java Spring Framework 应用程序迁移到 Windows Azure
我们刚刚发布了一个新教程和示例代码,以阐述如何在Windows Azure中使用 Java 相关技术.在该指南中,我们提供了分步教程,说明如何将 Java Spring Framework 应用程序( ...
- UITableView 协议中常用的方法
UITableViewDataSource 协议中常用方法 1.设置右边 索引值 - ( NSArray *)sectionIndexTitlesForTableView:( UITableView ...