一:需求及基础:

场景:

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 基础和集群搭建的更多相关文章

  1. Elasticsearch高级之-集群搭建,数据分片

    目录 Elasticsearch高级之-集群搭建,数据分片 一 广播方式 二 单播方式 三 选取主节点 四 什么是脑裂 五 错误识别 Elasticsearch高级之-集群搭建,数据分片 es使用两种 ...

  2. 全文搜索引擎 Elasticsearch 入门:集群搭建

    本文主要介绍什么是 ElasticSearch 以及为什么需要它,如何在本机安装部署 ElasticSearch 实例,同时会演示安装 ElasticSearch 插件,以及如何在本地部署多实例集群, ...

  3. 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: ...

  4. Elasticsearch(ELK)集群搭建

    一.前言 Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储.检索数据:本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据.Elasticsearch也使用 ...

  5. elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  6. elasticsearch 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  7. ElasticSearch的基本用法与集群搭建

    一.简介 ElasticSearch和Solr都是基于Lucene的搜索引擎,不过ElasticSearch天生支持分布式,而Solr是4.0版本后的SolrCloud才是分布式版本,Solr的分布式 ...

  8. elasticsearch集群搭建实例

    elasticsearch集群搭建实例 下个月又开始搞搜索了,几个月没动这块还好没有落下. 晚上在自己虚拟机上搭建了一个简易搜索集群,分享一下. 操作系统环境: Red Hat 4.8.2-16 el ...

  9. 【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell

    Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实 ...

随机推荐

  1. 【Linux命令】数据库mysql配置命令

    # 检查MySQL服务器系统进程 ~ ps -aux|grep mysql mysql 1103 0.0 0.3 492648 51780 ? Ssl 14:04 0:21 /usr/sbin/mys ...

  2. BZOJ 3175: [Tjoi2013]攻击装置( 匈牙利 )

    黑白染成二分图, 然后不能同时选的就连边, 最大匹配数为m, t为不能放的数目, 则题目所求最大点独立集为 n*n-m-t -------------------------------------- ...

  3. linkbutton.js

    jquery.linkbutton.js /** * linkbutton - jQuery EasyUI * * Licensed under the GPL: * http://www.gnu.o ...

  4. Zend Studio 如何配置本地apache服务器使用xdebug调试php脚本

    本地环境搭配: apache 2.2 安装位置:D:/program files/Apache Software Foundation/Apache2.2 php 5.2.10 安装位置:C:/php ...

  5. Python每日一练(2):找出html中的所有链接(Xpath、正则两个版本)

    要在hrml文件中找出特定的内容,首先需要观察该内容是什么东西,在什么位置,这样才能找出来. 假设html的文件名称是:"1.html".href属性全都在a标签里. 正则版: # ...

  6. iOS显示PDF

    使用UIWebView来显示 //locale file NSString *html = [NSString stringWithContentsOfFile:path1 encoding:NSUT ...

  7. JS 移动动画

    function moveElement(elementId, final_x, final_y,interval) {            if (!document.getElementById ...

  8. javascript单元测试(转)

    1.      什么是单元测试 在计算机编程中,单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编程中,一个单元就是单 ...

  9. nginx配置ssl加密(单双向认证、部分https)

    nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...

  10. logback自定义格式转换器

    创建自定义格式转换符有两步. 首先,必须继承ClassicConverter类.ClassicConverter对象负责从ILoggingEvent 提取信息,并产生一个字符串.例如,LoggerCo ...