资讯专栏INFORMATION COLUMN

CentOs 7.2下ELK日志分析系统搭建

NotFound / 3324人阅读

摘要:系统环境为了安装时不出错,建议选择这两者选择一样的版本,本文全部选择版本。也是一个开源和免费的工具,它可以为和提供的日志分析友好的界面,可以帮助您汇总分析和搜索重要数据日志。注意首次会提示没有索引。。。。

系统环境
为了安装时不出错,建议选择这两者选择一样的版本,本文全部选择5.3版本。

System: Centos release 7.2
Java: openjdk version "1.8.0_144"
ElasticSearch: 5.5.1
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash: 5.5.1
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

Kibana: 5.5.1
Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

ELK 关系:

LEK:logstatsh 收集日志,存到elasticserach (存储,产生索引,搜索) 到kibana展现(view)

在官网首页下载tar源码包
将以上的源码包上传至centos服务器上/usr/local/src目录下
tips: Logstash 的运行依赖于 Java 运行环境,在 Oracle 官方下载新版 jdk。

一、准备

下载jdk-8u144-linux-x64.tar,上传至CentOS上。

解压源码包
通过终端新建java文件夹,并解压至/usr/local/java文件夹下
# mkdir -pv /usr/local/java
# tar -zxvf /usr/local/src/jdk-8u144-linux-x64.tar.gz -C /usr/local/java

设置jdk环境变量
这里采用全局设置方法,就是修改etc/profile,它是是所有用户的共用的环境变量
# vi /etc/profile
在末尾添加如下:
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

然后保存使profile生效
source /etc/profile

检验是否安装成功
java -version

二、Elasticsearch安装配置

解压elasticsearch-5.5.1.tar源码包

下载链接:https://artifacts.elastic.co/...
解压至/usr/local/目录下

 tar -zxvf /usr/local/src/elasticsearch-5.5.1.tar.gz  -C /usr/local/

修改配置文件
以下供参考配置,实际以需求为准:
vi /usr/local/elasticsearch-5.5.1/config/elasticsearch.yml

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

cluster.name: skynet_es_cluster
node.name: skynet_es_cluster_dev1 

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

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

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

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

修改系统参数
确保系统有足够资源启动ES
设置内核参数
vi /etc/sysctl.conf

# 增加以下参数
vm.max_map_count=655360
执行以下命令,确保生效配置生效:
sysctl -p
设置资源参数
vi /etc/security/limits.conf

# 修改

soft nofile 65536

hard nofile 131072

soft nproc 65536

hard nproc 131072
设置用户资源参数

vi /etc/security/limits.d/20-nproc.conf
# 设置elk用户参数
elk soft nproc 65536

4.添加启动用户,设置权限
启动ElasticSearch5版本要非root用户,需要新建一个用户来启动ElasticSearch
useradd elk #创建用户elk
groupadd elk #创建组elk
useradd elk -g elk #将用户添加到组
mkdir -pv /data/elk/{data,logs} # 创建数据和日志目录

修改文件所有者

chown -R elk:elk /data/elk/
chown -R elk:elk /usr/local/elasticsearch-5.5.1/

启动ES

查看内存剩余

free -g
使用elk用户启动elasticsearch服务
切换至elk用户

su elk
/usr/local/elasticsearch-5.5.1/bin/elasticsearch
检查elasticsearch服务,如下图所示,即成功开启服务了,这就意味着你现在已经启动并运行一个Elasticsearch节点了。

tips:

单个节点可以作为一个运行中的Elasticsearch的实例。而一个集群是一组拥有相同cluster.name的节点,(多带带的节点也可以组成一个集群)可以在elasticsearch.yml配置文件中修改cluster.name,该节点启动时加载(需要重启服务后才会生效)。

客户端网页访问:
服务器要关闭防火墙

systemctl stop firewalld.service

三、安装 Logstash
下载并安装 Logstash ,安装 logstash 只需将它解压的对应目录即可,例如: /usr/local 下:
官网下载地址:https://artifacts.elastic.co/...

1.解压源码包

tar /usr/local/src/logstash-5.5.1.tar.gz -C /usr/local/
首先,我们通过运行最基本的Logstash管道来测试您的Logstash安装。
Logstash管道有两个必需的元素,input并且output,以及一个可选的元素,filter。输入插件消耗来自源的数据,过滤器插件会按照您指定的方式修改数据,并且输出插件将数据写入到目的地。

2.安装完成后运行如下命令:
/usr/local/logstash-5.5.1/bin/logstash -e "input { stdin { } } output { stdout {} }"
Sending Logstash"s logs to /usr/local/logstash-5.5.1/logs which is now configured via log4j2.properties
2017-04-25T06:07:10,900[logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>125}
The stdin plugin is now waiting for input:
2017-04-25T06:07:10,968[logstash.pipeline ] Pipeline main started
2017-04-25T06:07:11,064[logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
hello world
2017-04-25T10:07:41.447Z yyp hello world
我们可以看到,我们输入什么内容logstash按照某种格式输出,其中-e参数参数允许Logstash直接通过命令行接受设置。这点尤其快速的帮助我们反复的测试配置是否正确而不用写配置文件。使用ctrl-c命令可以退出之前运行的Logstash。

使用-e参数在命令行中指定配置是很常用的方式,不过如果需要配置更多设置则需要很长的内容。这种情况,我们首先创建一个简单的配置文件,并且指定logstash使用这个配置文件。 例如:在 logstash 安装目录下(/usr/local/logstash-5.5.1/config)创建一个“基本配置”测试文件 logstash-simple.conf。

3.创建配置文件
vi logstash-simple.conf

input { stdin { } }
output {
    stdout { codec=> rubydebug }
}

Logstash 使用 input 和 output 定义收集日志时的输入和输出的相关配置,本例中 input 定义了一个叫 "stdin" 的 input , output 定义一个叫 "stdout" 的 output 。无论我们输入什么字符, Logstash 都会按照某种格式来返回我们输入的字符,其中 output 被定义为 "stdout" 并使用了 codec 参数来指定 logstash 输出格式。

使用logstash的-f参数来读取配置文件,执行如下开始进行测试:

4.启动
/usr/local/logstash-5.5.1/bin/logstash -f /usr/local/logstash-5.5.1/config/logstash-simple.conf

Sending Logstash"s logs to /usr/local/logstash-5.5.1/logs which is now configured via log4j2.properties
2017-04-25T06:18:43,294[logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>1, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>125}
2017-04-25T06:18:43,939[logstash.pipeline ] Pipeline main started
The stdin plugin is now waiting for input:
2017-04-25T06:18:44,674[logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
hello world!
{
"@timestamp" => 2017-04-25T12:21:21.526Z,
"@version" => "1",
"host" => "yyp",
"message" => "hello world!"
}
如上显示,说明成功了。

4.测试Elasticsearch 和 Logstash 来收集日志数据

接下来我们在 logstash 安装目录下创建一个用于测试 logstash 使用 elasticsearch 作为 logstash 的后端的测试文件 logstash-test.conf,该文件中定义了stdout和elasticsearch作为output,这样的“多重输出”即保证输出结果显示到屏幕上,同时也输出到elastisearch中。
前提要保证elasticsearch和logstash都正常启动(需要先启动elasticsearch,再启动logstash)

vi logstash-test.conf

input { stdin { } }
output {
    elasticsearch {hosts => "192.168.30.132:9200" } #elasticsearch服务地址
    stdout { codec=> rubydebug }
}

开启服务,执行如下命令:

/usr/local/logstash-5.5.1/bin/logstash -f /usr/local/logstash-5.5.1/config/logstash-test.conf
我们可以使用 curl 命令发送请求来查看 ES 是否接收到了数据:

curl "http://192.168.30.132:9200/_s..."
返回结果:

{
    "took" : 13,
    "timed_out" : false,
    "_shards" : {
        "total" : 1,
        "successful" : 1,
        "failed" : 0
    },
    "hits" : {
        "total" : 1,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : ".kibana",
            "_type" : "config",
            "_id" : "5.5.1",
            "_score" : 1.0,
            "_source" : {
                "buildNum" : 14844
            }
        }
      ]
    }
}

至此,你已经成功利用 Elasticsearch 和 Logstash 来收集日志数据了。

四、kibana的安装

解压kibana-5.5.1-linux-x86_64源码包

下载地址:https://artifacts.elastic.co/...

解压至/usr/local/下
tar -zxvf /usr/local/src/kibana-5.5.1-linux-x86_64.tar.gz -C /usr/local/
2.配置kibana

编辑kibana.yml配置文件
vi /usr/local/kibana-5.5.1-linux-x86_64/config/kibana.yml

修改以下参数:
server.port: 5601 #开启默认端口5601
server.host: “192.168.30.132” #站点地址
elasticsearch.url: http://192.168.30.132:9200 #指向elasticsearch服务的ip地址
kibana.index: “.kibana”
3.启动

执行以下命令启动:
/usr/local/kibana-5.5.1-linux-x86_64/bin/kibana
4.测试浏览器访问

访问:http://192.168.30.132:5601
如下图所示,说明成功访问了

5.配置ES索引

kibana第一次使用时,会要求创建index,只要按照默认值即可。

注意:
首次会提示没有索引。。。。

首先需要加上我们刚刚建立的索引index => "logstash--%{+YYYY-MM}" 点击setting->indices, 在这里我们可以Configure an index pattern, 也就是说可以配置 正则匹配的index,

vi logstash-simple.conf

input {
    stdin{}
}
output {
    elasticsearch {
        action => "index"            # 在ES上操作index
        hosts  => "192.168.30.132:9200"   # ES地址
        index  => "logstash-%{+YYYY-MM}"   #索引名
    }
}

可以看到默认的index是"logstash-*", 默认是从logstash导出的数据, 因为我们在logstash中配置的索引就是logstash开头的,所以这里我们保持默认不变.

下面还有一个Time-field name, 一般来说time都是一个必要的字段, 并且这个字段的类型是date类型! 不是string!!! 如果没有时间字段, 那么将上面的" Index contains time-based events" 取消就OK.

问题
1、出现Configure an index pattern create是灰色的的问题

这个问题是配置文件的问题,修改logstash的配置文件,使其输出到elasticsearch,其中的index选项配置为kibana上的index,比如我是index => "logstash-%{+YYYY-MM}" ,这个时候重启logstash,kibana就保持默认的logstash-*索引既可,应该能够看到Create按钮了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/34153.html

相关文章

  • 基于Centos7的ELK + filebeat日志分析(java weblogic平台)搭建实战

    摘要:踩过的坑国内好多早期的应用系统都是采用中文编码,现在估计也是一大坨,这会导致应用程序的在写日期时,使用中文格式,例如,本次遇到的一月,内部以统一使用编码,且不支持中文字符转时间类型。 网上有很多的ELK搭建教程,但大多数文章介绍的ELK版本比较旧,内容也比较零散。本文基于最新版本的elastic日志集中分析套件,以及redis作为缓冲,完整记录一套ELK架构搭建过程。并实现了对生产环境...

    gxyz 评论0 收藏0
  • 基于Centos7的ELK + filebeat日志分析(java weblogic平台)搭建实战

    摘要:踩过的坑国内好多早期的应用系统都是采用中文编码,现在估计也是一大坨,这会导致应用程序的在写日期时,使用中文格式,例如,本次遇到的一月,内部以统一使用编码,且不支持中文字符转时间类型。 网上有很多的ELK搭建教程,但大多数文章介绍的ELK版本比较旧,内容也比较零散。本文基于最新版本的elastic日志集中分析套件,以及redis作为缓冲,完整记录一套ELK架构搭建过程。并实现了对生产环境...

    cgh1999520 评论0 收藏0
  • 使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析

    摘要:监听的宿主机端口容器内的端口命令行启动一个将配置和数据挂载出来,即使出现了问题。简单的使用在搭建时,暴露出来的端口就是的服务。这是由于的网络隔离基于实现造成的问题。 showImg(https://segmentfault.com/img/remote/1460000019678227?w=1276&h=946); 前言 Elasticsearch + Logstash + Kiban...

    banana_pi 评论0 收藏0
  • centos7上elastic search安装填坑记

    摘要:切换到用户,然后错误先要切换到用户然后可以执行以下命令,设置,但是重启后又会恢复为原值。下面的例子是新建一个名叫的。 showImg(https://segmentfault.com/img/remote/1460000015723676); 注: 本文首发于 My 公众号 CodeSheep ,可 长按 或 扫描 下面的 小心心 来订阅 ↓ ↓ ↓ showImg(https://...

    Ilikewhite 评论0 收藏0
  • ElasticSearch6.4.0集群搭建

    摘要:虚拟内存区域是一个连续的虚拟地址空间区域。四启动集群首先切换为用户,并启动服务器上的节点注意参数表示以后台进程启动,默认情况下会在控制台输出日志。 最近在学习ES相关内容,为了方便自己使用,在本地虚拟机上搭建了一个3节点的ES集群,在搭建过程中,遇到了许多坑,网上的资料也比较分散,所以详细整理一下搭建过程发出来供参考。搭建过程中,由于是两台虚拟机,所以有一种很快速的办法,搭建一台,然后...

    appetizerio 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<