Centos7下ELK+Redis日志分析平台的集群环境部署记录

之前的文档介绍了ELK的架构基础知识,下面简单记录下ELK结合Redis搭建日志分析平台的集群环境部署过程,大致的架构如下:

+ Elasticsearch是一个分布式搜索分析引擎,稳定、可水平扩展、易于管理是它的主要设计初衷
+ Logstash是一个灵活的数据收集、加工和传输的管道软件
+ Kibana是一个数据可视化平台,可以通过将数据转化为酷炫而强大的图像而实现与数据的交互将三者的收集加工,存储分析和可视转化整合在一起就形成了ELK。

基本流程:
1)Logstash-Shipper获取日志信息发送到redis。
2)Redis在此处的作用是防止ElasticSearch服务异常导致丢失日志,提供消息队列的作用。
3)logstash是读取Redis中的日志信息发送给ElasticSearch。
4)ElasticSearch提供日志存储和检索。
5)Kibana是ElasticSearch可视化界面插件。

1)机器环境

主机名           ip地址              部署的服务
elk-node01      192.168.10.213      es01,redis01
elk-node02      192.168.10.214      es02,redis02(vip:192.168.10.217)
elk-node03      192.168.10.215      es03,kibana,nginx

三台节点都是centos7.4系统
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

三台节点各自修改主机名
[[email protected] ~]# hostname elk-node01
[[email protected] ~]# hostnamectl set-hostname elk-node01

关闭三台节点的iptables和selinux
[[email protected] ~]# systemctl stop firewalld.service
[[email protected] ~]# systemctl disable firewalld.service
[[email protected] ~]# firewall-cmd --state
not running

[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Disabled
[[email protected] ~]# vim /etc/sysconfig/selinux
......
SELINUX=disabled

三台节点机都要做下hosts绑定
[[email protected] ~]# cat /etc/hosts
......
192.168.10.213 elk-node01
192.168.10.214 elk-node02
192.168.10.215 elk-node03

同步三台节点机的系统时间
[[email protected] ~]# yum install -y ntpdate
[[email protected] ~]# ntpdate ntp1.aliyun.com

三台节点都要部署java8环境
下载地址:https://pan.baidu.com/s/1pLaAjPp
提取密码:x27s

[[email protected] ~]# rpm -ivh jdk-8u131-linux-x64.rpm --force
[[email protected] ~]# vim /etc/profile
......
JAVA_HOME=/usr/java/jdk1.8.0_131
JAVA_BIN=/usr/java/jdk1.8.0_131/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/sbin/
CLASSPATH=.:/lib/dt.jar:/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

[[email protected] ~]# source /etc/profile
[[email protected] ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

2)部署ElasticSearch机器环境

a)安装Elasticsearch(三台节点都要操作。部署的时候,要求三台节点机器都能正常对外访问,正常联网)
[[email protected] ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[[email protected] ~]# cat /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

[[email protected] ~]# yum install -y elasticsearch

b)配置Elasticsearch集群
elk-node01节点的配置
[[email protected] ~]# cat /etc/elasticsearch/elasticsearch.yml|grep -v "#"
cluster.name: kevin-elk          #集群名称,三个节点的集群名称配置要一样
node.name: elk-node01.kevin.cn     #集群节点名称,一般为本节点主机名。注意这个要是能ping通的,即在各节点的/etc/hosts里绑定。
path.data: /data/es-data         #集群数据存放目录,注意目录权限要是elasticsearch
path.logs: /var/log/elasticsearch      #日志路径,默认就是这个路径
network.host: 192.168.10.44             #服务绑定的网络地址,一般填写本节点ip;也可以填写0.0.0.0
http.port: 9200                     #服务接收请求的端口号
discovery.zen.ping.unicast.hosts: ["192.168.10.44", "192.168.10.45", "192.168.10.47"]    #添加集群中的主机地址,会自动发现并自动选择master主节点

[[email protected] ~]# mkdir -p /data/es-data
[[email protected] ~]# mkdir -p /var/log/elasticsearch/          #默认这个路径是存在的
[[email protected] ~]# chown -R elasticsearch.elasticsearch /data/es-data       #这一步授权不能忘记,否则下面的es服务器启动会失败!
[[email protected] ~]# chown -R elasticsearch.elasticsearch /var/log/elasticsearch/

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl enable elasticsearch
[[email protected] ~]# systemctl start elasticsearch
[[email protected] ~]# systemctl status elasticsearch
[[email protected] ~]# lsof -i:9200
COMMAND   PID          USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    20061 elasticsearch  195u  IPv6 1940586      0t0  TCP elk-es01.kevin.cn:wap-wsp (LISTEN)

-------------------------------------------------------------------------------------------
elk-node02节点的配置
[[email protected] ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v "#"
cluster.name: kevin-elk
node.name: elk-node02.kevin.cn
path.data: /data/es-data
path.logs: /var/log/elasticsearch
network.host: 192.168.10.45
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.10.44", "192.168.10.45", "192.168.10.47"]

[[email protected] ~]# mkdir -p /data/es-data
[[email protected] ~]# mkdir -p /var/log/elasticsearch/
[[email protected] ~]# chown -R elasticsearch.elasticsearch /data/es-data
[[email protected] ~]# chown -R elasticsearch.elasticsearch /var/log/elasticsearch/

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl enable elasticsearch
[[email protected] ~]# systemctl start elasticsearch
[[email protected] ~]# systemctl status elasticsearch
[[email protected] ~]# lsof -i:9200

-------------------------------------------------------------------------------------------
elk-node03节点的配置
[[email protected] ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v "#"
cluster.name: kevin-elk
node.name: elk-node03.kevin.cn
path.data: /data/es-data
path.logs: /var/log/elasticsearch
network.host: 192.168.10.47
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.10.44", "192.168.10.45", "192.168.10.47"]

[[email protected] ~]# mkdir -p /data/es-data
[[email protected] ~]# mkdir -p /var/log/elasticsearch/
[[email protected] ~]# chown -R elasticsearch.elasticsearch /data/es-data
[[email protected] ~]# chown -R elasticsearch.elasticsearch /var/log/elasticsearch/

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl enable elasticsearch
[[email protected] ~]# systemctl start elasticsearch
[[email protected] ~]# systemctl status elasticsearch
[[email protected] ~]# lsof -i:9200

c)查看elasticsearch集群信息(下面命令在任意一个节点机器上操作都可以)
[[email protected] ~]# curl -XGET ‘http://192.168.10.44:9200/_cat/nodes‘
192.168.10.45 192.168.10.45 13 20 0.05 d m elk-node02.kevin.cn
192.168.10.44 192.168.10.44  7 22 0.00 d m elk-node01.kevin.cn
192.168.10.47 192.168.10.47  8 24 0.00 d * elk-node03.kevin.cn       #带*号表示该节点是master主节点。即本集群环境下es3节点是主节点

后面添加 ?v ,表示详细显示
[[email protected] ~]# curl -XGET ‘http://192.168.10.44:9200/_cat/nodes?v‘
host      ip        heap.percent ram.percent load node.role master name
192.168.10.45 192.168.10.45           15          20 0.02 d         m      elk-node02.kevin.cn
192.168.10.44 192.168.10.44            6          22 0.00 d         m      elk-node01.kevin.cn
192.168.10.47 192.168.10.47            8          24 0.00 d         *      elk-node03.kevin.cn 

查询集群状态方法
[[email protected] ~]# curl -XGET ‘http://192.168.10.44:9200/_cluster/state/nodes?pretty‘
{
  "cluster_name" : "kevin-elk",
  "nodes" : {
    "dFvBDQ6qQiGqiGbT9AOQmA" : {
      "name" : "elk-node02.kevin.cn",
      "transport_address" : "192.168.10.45:9300",
      "attributes" : { }
    },
    "upj1QlY1S-uleLaJeXfHzg" : {
      "name" : "elk-node01.kevin.cn",
      "transport_address" : "192.168.10.44:9300",
      "attributes" : { }
    },
    "pD6BJY5UTXqKgyFKzeZctA" : {
      "name" : "elk-node03.kevin.cn",
      "transport_address" : "192.168.10.47:9300",
      "attributes" : { }
    }
  }
}

查询集群中的master
[[email protected] ~]# curl -XGET ‘http://192.168.10.44:9200/_cluster/state/master_node?pretty‘
{
  "cluster_name" : "kevin-elk",
  "master_node" : "pD6BJY5UTXqKgyFKzeZctA"
}

或者
[[email protected] ~]# curl -XGET ‘http://192.168.10.44:9200/_cat/master?v‘
id                     host      ip        node
pD6BJY5UTXqKgyFKzeZctA 192.168.10.47 192.168.10.47 elk-node03.kevin.cn 

查询集群的健康状态(一共三种状态:green、yellow,red;其中green表示健康)
[[email protected] ~]# curl -XGET ‘http://192.168.10.44:9200/_cat/health?v‘
epoch      timestamp cluster  status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1527567139 12:12:19  kevin-elk green           3         3     24  12    0    0        0             0                  -                100.0% 

或者
[[email protected] ~]# curl -XGET ‘http://192.168.10.44:9200/_cluster/health?pretty‘
{
  "cluster_name" : "kevin-elk",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 12,
  "active_shards" : 24,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

d)在线安装elasticsearch插件(三个节点上都要操作,且机器都要能对外正常访问)
安装head插件
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

安装kopf插件
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

安装bigdesk插件
[[email protected] ~]# /usr/share/elasticsearch/bin/plugin install hlstudio/bigdesk

三个插件安装后,记得给plugins目录授权,并重启elasticsearch服务
[[email protected] ~]# chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins
[[email protected] ~]# ll /usr/share/elasticsearch/plugins
total 12
drwxr-xr-x 3 elasticsearch elasticsearch 4096 May 28 19:20 bigdesk
drwxr-xr-x 6 elasticsearch elasticsearch 4096 May 28 19:20 head
drwxr-xr-x 8 elasticsearch elasticsearch 4096 May 28 19:21 kopf

[[email protected] ~]# systemctl restart elasticsearch

最后就可以查看插件状态,直接访问http://ip:9200/_plugin/"插件名";
head集群管理界面的状态图,五角星表示该节点为master;
这里在三个节点机上安装了插件,所以三个节点都可以访问插件状态

原文地址:https://www.cnblogs.com/kevingrace/p/9104423.html

时间: 05-27

Centos7下ELK+Redis日志分析平台的集群环境部署记录的相关文章

centos7搭建ELK Cluster日志分析平台(一)

应用场景:ELK实际上是三个工具的集合,ElasticSearch + Logstash + Kibana,这三个工具组合形成了一套实用.易用的监控架构, 很多公司利用它来搭建可视化的海量日志分析平台. 官网下载地址:https://www.elastic.co/downloads  Elasticsearch: 一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口. Elasticsearch是用Java开发的,并作为Apache许可条款

搭建ELK日志分析平台-分布式集群

ELK安装准备工作准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好:配置三台机器的hosts文件内容如下:vim /etc/hosts192.168.254.133 master-node192.168.254.134 data-node1192.168.254.135 data-node2角色划分:? 3台机器全部安装jdk1.8,因为elasticsearch是java开发的? 3台全部安装elasticsearch (后续都简称为es)? 192.168.254.133 作

性能优化分析Spring Cloud ELK+kafka日志分析平台

一.概述 在笔者的上一篇博客介绍了Spring Cloud ELK+kafka日志分析平台的搭建,http://xuyangyang.club/articles/2018/05/24/1527176074152.html,但是笔者在测试环境中发现,在logstash采用了grok插件去处理日志埋点和解析的时候发现了高资源占用,在阿里云8核16G的服务器部署后,测试环境大概每秒不超过几百条的日志的解析下竟然CPU占用高达95%左右,笔者分析了其中的原因,首先由于几个服务的日志格式相关配置还没有落地

Elk实时日志分析平台5.0版本源码安装配置

目录 一. 安装JAVA. 1 二. 安装elasticsearch. 2 三. 配置elasticsearch. 2 四. 安装logstash. 3 五. 配置 logstash. 3 六. 安装kibana. 4 七. 配置kibana. 5 八. 安装x-pack插件... 5 九. x-pack管理用户... 6 1. 添加用户... 6 2. 查看用户... 6 3. 测试用户登录... 6 4. 删除用户... 6 十. 安装filebeat. 7 一. 安装JAVA # mkdi

elk+redis 日志分析系统

e:elasticsearch l:logstash k:kibana logstash快速入门:http://www.2cto.com/os/201411/352015.html elk中文指南 :http://kibana.logstash.es/content/logstash/index.html

ELK实时日志分析平台(elk+kafka+metricbeat)-logstash(四)

1. 安装并测试: 2.  添加配置: 3. 启动检查:

Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建

[TOC] Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建 Redis Java API使用(一):单机版本Redis API使用 Redis的Java API通过Jedis来进行操作,因此首先需要Jedis的第三方库,因为使用的是Maven工程,所以先给出Jedis的依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI

Redis之集群环境搭建

原文:Redis之集群环境搭建 前面文章介绍了Redis的主从复制,虽然该模式能够在一定程度上提高系统的稳定性,但是在数据访问量比较大的情况下,单个master应付起来还是比较吃力的,这时我们可以考虑将redis集群部署,本文就来重点给大家介绍下Redis的集群部署操作. Redis之主从复制2 Redis之主从复制1 Redis集群 一.Redis集群相关概念 1.Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的

Redis集群环境搭建(实验)

环境信息: 集群中至少有奇数个主节点,所以至少三个主节点, 每个节点至少一个备份节点,所以共6个节点(master和slave各3个) 节点信息: (我这里准备了3台主机,每台主机运行一个master和一个slave) 节点1:192.168.2.100:6379     master 节点2:192.168.2.100:6380     slave 节点3:192.168.2.200:6379     master 节点4:192.168.2.200:6380     slave 节点5:19