1. 程式人生 > >Centos7下ELK+Redis日誌分析平臺的集群環境部署記錄

Centos7下ELK+Redis日誌分析平臺的集群環境部署記錄

fire systemctl 系統 gpgcheck poc dt.jar 添加 大致 路徑

之前的文檔介紹了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;
這裏在三個節點機上安裝了插件,所以三個節點都可以訪問插件狀態

Centos7下ELK+Redis日誌分析平臺的集群環境部署記錄