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

ELK安装准备工作
准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好:
配置三台机器的hosts文件内容如下:
vim /etc/hosts
192.168.254.133 master-node
192.168.254.134 data-node1
192.168.254.135 data-node2
角色划分:
• 3台机器全部安装jdk1.8,因为elasticsearch是java开发的
• 3台全部安装elasticsearch (后续都简称为es)
• 192.168.254.133 作为主节点
• 192.168.254.134以及192.168.254.135作为数据节点
• 主节点上需要安装kibana
• 在192.168.254.134上安装 logstash

安装JDK1.8及以上版本!
删除自带的OpenJDK,一些开发版的centos会自带jdk,我们一般用自己的jdk,把自带的删除。先看看有没有安装:
java -version
查找他们的安装位置:
rpm -qa | grep java
删除全部,noarch文件可以不用删除
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.161-0.b14.el7_4.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.161-2.6.12.0.el7_4.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.161-2.6.12.0.el7_4.x86_64
检查有没有删除
java -version
-bash: /usr/bin/java: 没有那个文件或目录
如果还没有删除,则用yum -y remove去删除他们
下载并安装:进入 /usr/local 目录,执行:
wget http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz?AuthParam=1516699305_3ad4fe7353a00babea8146d5257b92e4
下载JDK压缩包,如果不行就自己上传到服务器
下载完成后解压tar包
tar -zxvf jdk-8u162-linux-x64.tar.gz
将解压后的文件夹剪切到usr/local 目录下,并改名为 jdk8
mv jdk1.8.0_162 /usr/local/jdk1.8
配置环境变量 :
vim /etc/profile
在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL下面添加如下代码:
#jdk
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
追加完成后更新配置:source /etc/profile 查看是否安装成功:java -version

ELK版本信息:(也可以在官网自己选择版本)
https://www.elastic.co/downloads

我这里也是通过官方给的源进行安装,以下操作3台机器上都要执行,因为三台机器都需要安装es:
安装es
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vim /etc/yum.repos.d/elastic.repo # 增加以下内容
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

yum install -y elasticsearch
已安装:
elasticsearch.noarch 0:6.3.0-1
如果使用官方的源下载实在太慢的话,也可以直接下载rpm包进行安装

配置es
elasticsearch配置文件在这两个地方,有两个配置文件:
ll /etc/elasticsearch
elasticsearch.yml
jvm.options
log4j2.properties

ll /etc/sysconfig/elasticsearch
/etc/sysconfig/elasticsearch

elasticsearch.yml 文件用于配置集群节点等相关信息的,elasticsearch 文件则是配置服务本身相关的配置,例如某个配置文件的路径以及java的一些路径配置什么的。
开始配置集群节点,在 192.168.254.133 上编辑配置文件:
[root@master-node ~]# vim /etc/elasticsearch/elasticsearch.yml # 增加或更改以下内容
cluster.name: master-node # 集群中的名称
node.name: master # 该节点名称
node.master: true # 意思是该节点为主节点
node.data: false # 表示这不是数据节点
network.host: 0.0.0.0 # 监听全部ip,在实际环境中应设置为一个安全的ip
http.port: 9200 # es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.254.133", "192.168.254.134", "192.168.254.135"] # 配置自动发现
[root@master-node ~]#
然后将配置文件发送到另外两台机器上去:
[root@master-node ~]# scp /etc/elasticsearch/elasticsearch.yml data-node1:/tmp/
[root@master-node ~]# scp /etc/elasticsearch/elasticsearch.yml data-node2:/tmp/
到两台机器上去更改该文件,修改以下几处地方:
192.168.254.134:
[root@data-node1 ~]# vim /tmp/elasticsearch.yml
node.name: data-node1
node.master: false
node.data: true
[root@data-node1 ~]# cp /tmp/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml
cp: overwrite ‘/etc/elasticsearch/elasticsearch.yml’? yes
[root@data-node1 ~]#
192.168.254.135:
[root@data-node2 ~]# vim /tmp/elasticsearch.yml
node.name: data-node2
node.master: false
node.data: true
[root@data-node2 ~]# cp /tmp/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml
cp: overwrite ‘/etc/elasticsearch/elasticsearch.yml’? yes
[root@data-node2 ~]#
完成以上的配置之后,到主节点上,启动es服务:
systemctl start elasticsearch.service
主节点启动完成之后,再启动其他节点的es服务。
排错记录:
我这里启动主节点的时候没有启动成功,于是查看es的日志,但是却并没有生成,那就只能去看系统日志了:
[root@master-node ~]# ls /var/log/elasticsearch/
[root@master-node ~]# tail -n50 /var/log/messages
报错解决:
如果java安装了查看相关路径版本(如果没有请安装)
echo $JAVA_HOME
这是无法在环境变量中找到java可执行文件,那就好办了,做一个软链接过去即可:
[root@master-node ~]# ln -s /usr/local/jdk1.8/bin/java /usr/bin/
再次启动es服务,这次就终于启动成功了:
[root@master-node elasticsearch]# systemctl restart elasticsearch.service
[root@master-node elasticsearch]# ps aux |grep elasticsearch
elastic+ 1695 90.2 14.7 1678052 570592 ? Ssl 19:48 0:07 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.ioUbRBxw -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/elasticsearch -XX:ErrorFile=/var/log/elasticsearch/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/var/log/elasticsearch/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/usr/share/elasticsearch -Des.path.conf=/etc/elasticsearch -Des.distribution.flavor=default -Des.distribution.type=rpm -cp /usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -p /var/run/elasticsearch/elasticsearch.pid --quiet
root 1747 0.0 0.0 112720 988 pts/0 S+ 19:48 0:00 grep --color=auto elasticsearch

9300端口是集群通信用的,9200则是数据传输时用的。
[root@master-node elasticsearch]# netstat -tunpl
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp6 0 0 :::9200 ::: LISTEN 1695/java
tcp6 0 0 :::9300 :::
LISTEN 1695/java

主节点启动成功后,依次启动其他节点即可,这里其他节点都是启动正常的就OK。

curl查看es集群情况
[root@master-node elasticsearch]# curl '192.168.254.133:9200/_cluster/health?pretty'
{
"cluster_name" : "master-node",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 2,
"active_primary_shards" : 0,
"active_shards" : 0,
"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
}

查看集群的详细信息:
[root@master-node elasticsearch]# curl '192.168.254.133:9200/_cluster/state?pretty'
会显示一长串信息!

检查没有问题后,我们的es集群就搭建完成了。
这个集群的状态信息也可以通过浏览器查看:
搭建ELK日志分析平台-分布式集群

但是显示出来的也是一堆字符串,我们希望这些信息能以图形化的方式显示出来,那就需要安装kibana来为我们展示这些数据了。

猜你喜欢

转载自blog.51cto.com/10158955/2133420