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系统
[root@elk-node01 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
 
三台节点各自修改主机名
[root@localhost ~]# hostname elk-node01
[root@localhost ~]# hostnamectl set-hostname elk-node01
 
关闭三台节点的iptables和selinux
[root@elk-node01 ~]# systemctl stop firewalld.service
[root@elk-node01 ~]# systemctl disable firewalld.service
[root@elk-node01 ~]# firewall-cmd --state
not running
 
[root@elk-node01 ~]# setenforce 0
[root@elk-node01 ~]# getenforce
Disabled
[root@elk-node01 ~]# vim /etc/sysconfig/selinux
......
SELINUX=disabled
 
三台节点机都要做下hosts绑定
[root@elk-node01 ~]# cat /etc/hosts
......
192.168.10.213 elk-node01
192.168.10.214 elk-node02
192.168.10.215 elk-node03
 
同步三台节点机的系统时间
[root@elk-node01 ~]# yum install -y ntpdate
[root@elk-node01 ~]# ntpdate ntp1.aliyun.com
 
三台节点都要部署java8环境
下载地址:https://pan.baidu.com/s/1pLaAjPp
提取密码:x27s
  
[root@elk-node01 ~]# rpm -ivh jdk-8u131-linux-x64.rpm --force
[root@elk-node01 ~]# 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
  
[root@elk-node01 ~]# source /etc/profile
[root@elk-node01 ~]# 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(三台节点都要操作。部署的时候,要求三台节点机器都能正常对外访问,正常联网)
[root@elk-node01 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@elk-node01 ~]# 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

[root@elk-node01 ~]# yum install -y elasticsearch

b)配置Elasticsearch集群
elk-node01节点的配置
[root@elk-node01 ~]# 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主节点

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

[root@elk-node01 ~]# systemctl daemon-reload
[root@elk-node01 ~]# systemctl enable elasticsearch
[root@elk-node01 ~]# systemctl start elasticsearch
[root@elk-node01 ~]# systemctl status elasticsearch
[root@elk-node01 ~]# 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节点的配置
[root@elk-node02 ~]# 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"]

[root@elk-node02 ~]# mkdir -p /data/es-data
[root@elk-node02 ~]# mkdir -p /var/log/elasticsearch/
[root@elk-node02 ~]# chown -R elasticsearch.elasticsearch /data/es-data
[root@elk-node02 ~]# chown -R elasticsearch.elasticsearch /var/log/elasticsearch/

[root@elk-node02 ~]# systemctl daemon-reload
[root@elk-node02 ~]# systemctl enable elasticsearch
[root@elk-node02 ~]# systemctl start elasticsearch
[root@elk-node02 ~]# systemctl status elasticsearch
[root@elk-node02 ~]# lsof -i:9200

-------------------------------------------------------------------------------------------
elk-node03节点的配置
[root@elk-node03 ~]# 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"]

[root@elk-node03 ~]# mkdir -p /data/es-data
[root@elk-node03 ~]# mkdir -p /var/log/elasticsearch/
[root@elk-node03 ~]# chown -R elasticsearch.elasticsearch /data/es-data
[root@elk-node03 ~]# chown -R elasticsearch.elasticsearch /var/log/elasticsearch/

[root@elk-node03 ~]# systemctl daemon-reload
[root@elk-node03 ~]# systemctl enable elasticsearch
[root@elk-node03 ~]# systemctl start elasticsearch
[root@elk-node03 ~]# systemctl status elasticsearch
[root@elk-node03 ~]# lsof -i:9200

c)查看elasticsearch集群信息(下面命令在任意一个节点机器上操作都可以)
[root@elk-node01 ~]# 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 ,表示详细显示
[root@elk-node01 ~]# 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 

查询集群状态方法
[root@elk-node01 ~]# 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
[root@elk-node01 ~]# curl -XGET 'http://192.168.10.44:9200/_cluster/state/master_node?pretty'
{
  "cluster_name" : "kevin-elk",
  "master_node" : "pD6BJY5UTXqKgyFKzeZctA"
}

或者
[root@elk-node01 ~]# 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表示健康)
[root@elk-node01 ~]# 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% 

或者
[root@elk-node01 ~]# 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插件
[root@elk-node01 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

安装kopf插件
[root@elk-node01 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

安装bigdesk插件
[root@elk-node01 ~]# /usr/share/elasticsearch/bin/plugin install hlstudio/bigdesk

三个插件安装后,记得给plugins目录授权,并重启elasticsearch服务
[root@elk-node01 ~]# chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins
[root@elk-node01 ~]# 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

[root@elk-node01 ~]# systemctl restart elasticsearch

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

猜你喜欢

转载自www.cnblogs.com/kevingrace/p/9104423.html
今日推荐