14.2.1 安装配置 ELK

在进行 ELK 系统的搭建之前,我们首先需要在服务器搭建 java 运行环境,为了安装时不出错,建议选统一 ElasticSearch 版本,全部选择5.5版本。

System:Centos release 7.3

Java:Oracle-jdk version "1.8.0_131"

ElasticSearch : 5.5.0

Kibana : 5.5.0

ELK 各个组件我们在 Centos 中可以采用 yum, rpm 方式安装,当然也可以采用源码安装,今天我们来介绍一下源码安装方式。

1. 安装配置 Java 环境

Elasticsearch 官方建议使用 Oracle 的 JDK8,在安装之前首先要确定下机器有没有安装 JDK。

解压安装

首先在终端中输入命令,进行验证:

java -version

由于我的系统是最小化安装的,终端显示了报错信息。

解压已经下载好的 jdk-8u131-linux-x64.tar.gz 文件,并重命名为 jdk/。

使用如下命令,把 jdk/ 文件放入 /usr/local 目录下:

sudo mv jdk/ /usr/local

环境变量配置

我们虽然可以在 /etc/profile 文件之中进行环境配置,但为了便于然后的管理,推荐大家在 /etc/profile.d 目录下新建 shell 文件配置环境:

sudo vim /etc/profile.d/jdk.sh

写入如下内容:

export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存后运行 source /etc/profile.d/jdk.sh 使环境变量生效。

退出当前终端,并重新登录,输入 java -version 确认安装:

2. ElasticSearch 安装

第一步,解压下载的 zip 文件,重命名为 elasticsearch/ , 并移动至 /usr/local 目录下。

执行如下命令:

sudo vi /usr/local/elasticsearch/config/elasticsearch.yml

第二步,修改配置文件如下:

#这里指定的是集群名称,需要修改为对应的,开启了自发现功能后,ES会按照此集群名称进行集群发现

cluster.name: elk

#数据目录
path.data:/data/elk/data

# log目录
path.logs:/data/elk/logs

#修改ES的监听地址,这样别的机器也可以访问
network.host:0.0.0.0

#默认的端口号
http.port:9200

第三步:为普通用户添加权限

sudo chown -R user /data/elk

把 /data/elk 目录及其下的所有文件和子目录的属主改成 user。

第四步,我们还需要修改系统默认参数,以确保有足够的资源启动 ES:

设置内核参数

执行如下命令:

sudo vi /etc/sysctl.conf

//在文件之中,添加如下参数: vm.max_map_count=655360

再执行如下命令生效:

sudo sysctl -p

设置资源参数

sudo vi /etc/security/limits.conf

在底部添加如下内容:

* soft nofile 65536

* hard nofile 131072

* soft nproc 65536

* hard nproc 131072

设置用户参数

sudo vi /etc/security/limits.d/20-nproc.conf

修改 user soft nproc 65536

接着 重启 机器,并输入 ulimit -n 进行验证,如果显示并非预期的 65536,比如 1024 则可能需要修改 ssh 配置:

sudo vim /etc/ssh/sshd_config

把其中的 UseLogin 的值改为 yes, 然后重启服务:

sudo service sshd restart

退出当前用户,并查看 ulimit -n,发现已改为 65536。

第五步 我们需要启动 es 并验证安装,重启 机器以后,进入 elasticsearch 的 bin 目录,以非 root 用户 在后台启动:

./elasticsearch -d

使用 curl 查看信息:

curl -X GET http://localhost:9200

这样,我们便完成了 es 的安装。

3. 安装 logstash

参考 es 的安装,解压文件,重命名并移动至 /usr/local 目录下。然后进入 logstash/bin 文件夹,输入:

./logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

然后你会发现终端在等待你的输入。没问题,敲入 Hello World,回车,然后查看会返回结果:

生成并编辑配置文件

这里,我们新建一个 logstash 配置文件,我们首先在输入项中设置了日志(input.file.path)的路径,在 filter 下面,进行正则匹配过滤。最后指定输出为本地 elasticsearch。

input {
  file {
    path => "/data/elk/logs/*.log"
    start_position => beginning
    ignore_older => 0
    sincedb_path => "/dev/null"
  } 
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}
output {
  elasticsearch { hosts => ["xxx.xxx.x.xxx:9200"] }
  stdout { codec => rubydebug }
}

可能会有报错,但这个配置文件仅仅为了演示,如何改进会在下文演示。

在 logstash 目录之中执行如下命令,即可启动 logstash:

./bin/logstash -f ./config/simple.conf

提升 logstash 启动速度

logstash 在安装完成以后,启动时间可能会越来越长,甚至是5到10多分钟。以至于怀疑程序错误,这时候可能是系统的“熵”低了。

如果出现logstash启动慢,使用如下命令查询,。

cat /proc/sys/kernel/random/entropy_avail

如果返回值小于1000,那么就需要安装 haveged 包,执行如下命令即可:

yum install haveged -y && systemctl start haveged && systemctl enable haveged && systemctl status haveged

4. 安装 kibana

参考 es 的安装,解压文件,重命名并移动至 /usr/local 目录下。然后进入 kibana/config 文件夹,编辑 kibana.yml 配置文件,修改以下参数:

#开启默认端口5601如果5601被占用可用5602或其他
server.port:5601

#站点地址
server.host:“localhost” 

#指向elasticsearch服务的ip地址
elasticsearch.url:http://localhost:9200

kibana.index:“.kibana”

关闭 selinux

执行如下命令:

sudo vim /etc/sysconfig/selinux

设置 SELINUX=disabled

然后执行

sudo setenforce 0

进入相应目录,cd kibana/bin 运行 ./kibana

通过kibana窗口观察你的结果:

http://localhost:5601

results matching ""

    No results matching ""