ELK+Filebeat+Nginx集中式日志解决方案(二)——添加ElasticSearch集群

一、使用说明:


Elasticsearch插件:


 Elasticsearch常用的几个插件为:

# head
# 地址  https://github.com/mobz/elasticsearch-head
mobz/elasticsearch-head

# kopf
# 地址  https://github.com/lmenezes/elasticsearch-kopf
lmenezes/elasticsearch-kopf

# bigdesk
# 地址 https://github.com/hlstudio/bigdesk
hlstudio/bigdesk

 因为依照第一篇文章,笔者是用的elasticsearch-5.2.2安装的,版本比较新,所以安装方法也不一样,下面会以elasticsearch-head为例,构建与elasticsearch的交互。

   Elasticsearch 集群:

Elasticsearch 启动时会根据配置文件中设置的集群名字(cluster.name)自动查找并加入集群。Elasctisearch 节点默认使用 9300 端口寻找集群,所以必须开启这个端口。

一个 Elasticsearch 集群中一般拥有三种角色的节点,master、data 和 client。

  • master:master 节点负责一些轻量级的集群操作,比如创建、删除数据索引、跟踪记录集群中节点的状态、决定数据分片(shards)在 data 节点之间的分布;
  • data:data 节点上保存了数据分片。它负责数据相关操作,比如分片的 CRUD,以及搜索和整合操作。这些操作都比较消耗 CPU、内存和 I/O 资源;
  • client:client 节点起到路由请求的作用,实际上可以看做负载均衡器。

配置文件中有两个与集群相关的配置:

  • node.master:默认 true。True 表示该节点是 master 节点;
  • node.data:默认 true。True 表示该节点时 data 节点。如果两个值都为 false,表示是 client 节点。

一个集群中不一定有 client 节点,但是肯定有 master 和 data 节点。默认第一个启动的节点是 master。Master 节点也能起到路由请求和搜索结果整合的作用,所以在小规模的集群中,无需 client 节点。但是如果集群规模很大,则有必要设置专门的 client。


二、实验环境


架构图:

4台服务器(centos 6.5 final版本):

192.168.1.194 (filebeat收集日志,nginx做为web服务器)
192.168.1.195 (filebeat收集日志,nginx做为web服务器)
192.168.1.196 (logstash)
192.168.1.198(elasticsearch master,kibana,nginx做方向代理)
192.168.1.200 (elasticsearch DataNode)
192.168.1.201 (elasticsearch DataNode)

使用版本:

java-1.8.0-openjdk
filebeat-5.2.2
logstash-5.2.2
elasticsearch-5.2.2
kibana-5.2.2
nginx-1.6.1

三、安装配置:


此次实验是在第一篇文章的基础上,不熟悉的可以先看一下第一篇文章《ELK+Filebeat+Nginx集中式日志解决方案(一)》。

安装插件:


先在192.168.1.198上安装elasticsearch-head插件,对于Elasticsearch 5.x不在支持head插件模式,只能已独立服务模式启动,具体方式如下:

cd /usr/local/
yum install -y git npm
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm install -g grunt-cli
nohup grunt server &

通过浏览器访问http://192.168.1.198:9100/可以访问elasticsearch-head服务。可以看到head提供的页面,但是连接不上elasticsearch.需要在elasticsearch5.2.2的配置里增加一下参数:

http.cors.enabled: true
http.cors.allow-origin: "*"

重启elasticsearch后,刷新elasticsearch-head的页面(http://192.168.1.198:9100/),发现链接正常了。界面如下:

ok,至此安装elasticsearch-head插件结束。

安装集群:


先在192.168.1.200和192.168.1.201上安装好elasticsearch环境,可以参照《ELK+Filebeat+Nginx集中式日志解决方案(一)》。


在192.168.1.198(master)上面配置elasticsearch.yml

#---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
  
cluster.name: myesdata
   
# ------------------------------------ Node ------------------------------------
node.name: server198
node.master: true
node.data: false
     
# ----------------------------------- Paths ------------------------------------
path.data: /home/data/elk      
path.logs: /var/log/elasticsearch/elasticsearchlog
       
# ----------------------------------- Memory -----------------------------------
#bootstrap.mlockall: true
indices.fielddata.cache.size: 50mb
        
#------------------------------------ Network And HTTP --------------------------
network.host: 0.0.0.0
http.port: 9200
         
          
# --------------------------------- Discovery ------------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping_timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.ping_interval: 30s
discovery.zen.fd.ping_retries: 6
discovery.zen.ping.unicast.hosts: ["192.168.1.198:9300","192.168.1.200:9300","192.168.1.201:9300",]
           
# --------------------------------- merge ------------------------------------------
indices.store.throttle.max_bytes_per_sec: 100mb

bootstrap.system_call_filter: false
http.cors.enabled: true
http.cors.allow-origin: "*"

在192.168.1.200(DataNode)上面配置elasticsearch.yml

#---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
  
cluster.name: myesdata
   
# ------------------------------------ Node ------------------------------------
node.name: server200
node.master: false
node.data: true
     
# ----------------------------------- Paths ------------------------------------
path.data: /home/data/elk   
path.logs: /var/log/elasticsearch/elasticsearchlog
       
# ----------------------------------- Memory -----------------------------------
#bootstrap.mlockall: true
indices.fielddata.cache.size: 50mb
        
#------------------------------------ Network And HTTP --------------------------
network.host: 0.0.0.0
http.port: 9200
         
# ------------------------------------ Translog ----------------------------------
#index.translog.flush_threshold_ops: 50000
          
# --------------------------------- Discovery ------------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping_timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.ping_interval: 30s
discovery.zen.fd.ping_retries: 6
discovery.zen.ping.unicast.hosts: ["192.168.1.198:9300",]
#discovery.zen.ping.multicast.enabled: false
           
# --------------------------------- merge ------------------------------------------
indices.store.throttle.max_bytes_per_sec: 100mb

bootstrap.system_call_filter: false

在192.168.1.201(DataNode)上面配置elasticsearch.yml

#---------------------------------- Cluster -----------------------------------
# Use a descriptive name for your cluster:
  
cluster.name: myesdata
   
# ------------------------------------ Node ------------------------------------
node.name: server201
node.master: false
node.data: true
     
# ----------------------------------- Paths ------------------------------------
path.data: /home/data/elk   
path.logs: /var/log/elasticsearch/elasticsearchlog
       
# ----------------------------------- Memory -----------------------------------
#bootstrap.mlockall: true
indices.fielddata.cache.size: 50mb
        
#------------------------------------ Network And HTTP --------------------------
network.host: 0.0.0.0
http.port: 9200
         
# ------------------------------------ Translog ----------------------------------
#index.translog.flush_threshold_ops: 50000
          
# --------------------------------- Discovery ------------------------------------
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping_timeout: 200s
discovery.zen.fd.ping_timeout: 200s
discovery.zen.fd.ping_interval: 30s
discovery.zen.fd.ping_retries: 6
discovery.zen.ping.unicast.hosts: ["192.168.1.198:9300",]
#discovery.zen.ping.multicast.enabled: false
           
# --------------------------------- merge ------------------------------------------
indices.store.throttle.max_bytes_per_sec: 100mb

bootstrap.system_call_filter: false

在192.168.1.198,192.168.1.200,192.168.1.201上面分别执行

mkdir -p /home/data/elk/
mkdir -p /var/log/elasticsearch/elasticsearchlog/
chown elasticsearch. -R /home/data/elk/
chown elasticsearch. -R /var/log/elasticsearch/elasticsearchlog/

然后先启动master,在分别启动DataNode

service elasticsearch start

浏览器访问http://192.168.1.198:9100/ ,查看集群是否正常:

ok,elasticsearch集群到这里就配置成功了,接下来需要做的就是修改logstash的配置:

output {
    elasticsearch {
        hosts => ["192.168.1.200:9200","192.168.1.201:9200"]
        index => "logstash-%{type}-%{+YYYY.MM.dd}"
        document_type => "%{type}"
    }
    #stdout { codec => rubydebug }
}

只需要把原来的

hosts => ["192.168.1.198:9200"]

这里改成

hosts => ["192.168.1.200:9200","192.168.1.201:9200"]

输出到elasticsearch集群的两个DataNode节点就ok了

然后启动logstash:

nohup logstash -r -f /etc/logstash/conf.d/nginx-test.conf --path.settings /etc/logstash &

加上-r选项比较好,可以自动观测logstash配置文件的变化,自动重载配置。

然后此时查看kibana就会有数据输出了。

然后浏览器再访问http://192.168.1.198:9100/ ,查看一下状态:

会发现状态跟之前没数据时不一样了。

ok,到这里elasticsearch集群就加上去了。欢迎关注后续文章......

时间: 2024-08-02 06:55:43

ELK+Filebeat+Nginx集中式日志解决方案(二)——添加ElasticSearch集群的相关文章

ELK+Filebeat 集中式日志解决方案详解

原文:ELK+Filebeat 集中式日志解决方案详解 链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html?ca=drs- ELK Stack 简介 ELK 不是一款软件,而是 Elasticsearch.Logstash 和 Kibana 三种软件产品的首字母缩写.这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack.根据

logpool-v0.3基于rabbitmq+mysql的log4j集中式日志解决方案

V0.3相对于v0.2的更新如下: 如下: 提供了基于web的控制台: 1.日志级别.应用名称.主机名称会每个半小时自动从app_log中distinct更新,无需人工配置: 2.日志每隔半小时会清除5天以前的记录: 3.更新后的war地址为:http://pan.baidu.com/s/1gfdQjuV,原地址失效.

logpool-v0.2基于rabbitmq+mysql的log4j集中式日志解决方案

下一个小版本会进行清理. war包下载地址 http://pan.baidu.com/s/1nvGmORn

集中式日志分析平台 - ELK Stack - 安全解决方案 X-Pack

大数据之心 关注 0.6 2017.02.22 15:36* 字数 2158 阅读 16457评论 7喜欢 9 简介 X-Pack 已经作为 Elastic 公司单独的产品线,前身是 Shield, Watcher, Marvel, Graph, 和 reporting,先来说说这几个爸爸是做什么的吧: Shield: 提供对数据的 Password-Protect,以及加密通信.基于角色的权限控制,IP 过滤,审计,可以有效地: 防止未授权的访问:基于 Password-Protect,基于角

安装logstash+kibana+elasticsearch+redis搭建集中式日志分析平台

本文是参考logstash官方文档实践的笔记,搭建环境和所需组件如下: Redhat 5.7 64bit / CentOS 5.x JDK 1.6.0_45 logstash 1.3.2 (内带kibana) elasticsearch 0.90.10 redis 2.8.4 搭建的集中式日志分析平台流程如下: elasticsearch 1.下载elasticsearch. wget https://download.elasticsearch.org/elasticsearch/elasti

集中式日志系统

1.复旦大学:集中式日志系统让数据挖掘更深入 http://www.edu.cn/zxz_6542/20140822/t20140822_1166702.shtml 2.基于Hadoop的携程集中式日志系统介绍 http://tech.it168.com/a2013/0418/1474/000001474008.shtml

ELK + Filebeat +Nginx 集中式日志分析平台(一)

一.环境准备 本次我们采用 yum 官方仓库进行安装,之前采用 rpm 包安装的文档大家请看 http://blog.51cto.com/wzlinux/2175836 . 1.软件版本 Filebeat 6.5.1Logstash 6.5.1Elasticsearch 6.5.1Kibana 6.5.1JDK 1.8.0_181 2.服务器准备 IP 系统 角色 172.18.8.200 CentOS 7.5 Minimal Elasticsearch + Kibana 172.18.8.20

集中式日志系统 ELK 协议栈详解

1.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便. 1.1.2 elasticsearch几个重要术语 NRT elasticsea

集中式日志分析平台 Elastic Stack(介绍)

一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 Filebeat,他是 Beats 家族其中的一员,性能超越 logstash,部署简单,占用资源少,可以很方便的和 logstash,ES 对接. 从官方网站可以看出新一代 ELK 架构如下: 1.Beats Beats 平台集合了多种单一用途数据采集器.这些采集器安装后可用作轻量型代理,从成百上千或成千