Centos7下ELK+Redis日誌分析平臺的集群環境部署記錄
阿新 • • 發佈:2018-05-29
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日誌分析平臺的集群環境部署記錄