ELK部署安装以及配置

发现了一篇不错的关于ELK安装部署的文章,这里做个记录。

一、什么是ELK

ELK是Elasticsearch + Logstash + Kibana 这种架构的简写。这是一种日志分平台析的架构。从前我们用shell三剑客(grep, sed, awk)来分析日志, 虽然也能对付大多数场景,但当日志量大,分析频繁,并且使用者可能不会shell三剑客的情况下, 配置方便,使用简单,并且分析结果更加直观的工具(平台)就诞生了,它就是ELK。 ELK是开源的,并且社区活跃,用户众多。当然国内也有一些收费的,比较好用的日志分析平台,比如日志易(日志易的同事赶紧给我打钱,毕竟这广告打的好)。

二、ELK常见的几种架构

1 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。

2 Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。

3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如kafka) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。目前我司使用的就是这种架构,我个人也比较推荐这种方式。

架构图:
在这里插入图片描述
说明: logstash节点和elasticsearch节点可以根据日志量伸缩数量, filebeat部署在每台需要收集日志的服务器上。

三、安装部署

1. redis安装部署

这个不做介绍,但是因为redis在这里充当中间件,所以最好先安装redis,并且启动

2. filebeat安装部署

filebeat是一款轻量级的数据采集器,需要部署在每台需要收集日志的机器上。安装和配置过程很方便,如果机器很多,可以配合使用批量部署工具进行安装。

1) 安装

linux 平台使用 rpm安装

 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.2.2-x86_64.rpmsudo rpm -vi filebeat-5.2.2-x86_64.rpm

上面安装的是5.2.2版本。这个版本要和后面的其他组件版本保持一致,否则可能会出现兼容性问题。其他平台的安装方法,可以在官方文档中找到 filebeat安装

2) 配置

配置文件是yml格式的,对格式有严格的要求,因为简书排版的问题,我就直接贴图片了。
在这里插入图片描述
典型filebeat.yml配置

1)日志输入:

filebeat.prospectors模块用来指定日志文件的来源。在这个配置文件中, 总共接收三个日志文件,分别是

/data/logs/php/errors.log   /data/logs/nginx/www_error.log /data/logs/php/www.slow.log

input_type 指定日志类型,在这里是log, 应该也可以是json。
paths指定日志文件路径。
document_type:这个字段是用来给日志打标记的。
fields: 也是打标记,主要为了后面日志分析查找的方便,存储的时候也会根据fields分类存储,相同fields的数据存在同一个redis key中
fields_under_root: 如果该选项设置为true, 则该fields会存储在top-level中。
tail_files: 这个选项如果设置为true,则读取日志文件的新内容,而忽略原有的内容,一般要设置为true

2)日志输出

output.redis:指定输出到redis
hosts:指定redis主机,可以指定多台。
password:redis密码,redis默认没有密码,在这里设为空就行
fields_under_root: 和前面对应,top-level的存储key
tail_files: 和前面对应
keys:指定存入redis中的key, 在这个配置文件中,不同的日志文件被存到不同的key。
db: 指定存在redis中的db编号(redis默认安装有16个databases,0~15, 默认是存储在db0中的)

3)启动

配置完成后,就可以启动filebeat了,但是如果日志量很大的话,千万要注意redis可能会被撑爆,因为现在还未配置Logstash,即现在只有filebeat往redis中写数据,有生产者,没有消费者,就会造成数据积压。所以如果日志量很大,先不要启动。

我们生产环境是用supervisor管理fielbeat的,配置好supervisisor之后,执行

supervisorctl start filebeat

启动filebeat 。如果你对supervisor不熟,又想用它的话,可以去了解下,这是一个不错的任务管理工具。supervisor的配置

[program:filebeat]
command=/data/app/filebeat/filebeat -e -c filebeat.yml
directory=/data/app/filebeat
logfile=/data/app/filebeat/run.log
autorestart=true

3 logstash 安装配置

1)环境准备

安装logstash需要依赖于java环境,具体需要安装哪个版本的jdk,请参考官方文档。 我这边logstash版本是5.2. 查看官方文档,需要的是jdk1.8.0

在这里插入图片描述

如何安装jdk,不在这里介绍,网上一大堆教程。

2) 安装

先下载指定版本

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.2.2.tar.gz     

解压到指定目录

tar xf logstash-5.2.0.tar.gz -C /data/app/

值得一提的是,这种安装方式无需编译,解压后就可以使用。你也可以使用yum安装。

解压后查看一下目录结构

在这里插入图片描述logstash目录结构
其中config一般用来存放日志文件, bin用来存放logstash启动文件或者二进制文件。

logstash启动方式

bin/log -f config/你的配置文件

-f用来指定配置文件。ok, 那接下来我们来写一个配置文件。

在这里插入图片描述
logstash典型配置

logstash配置文件最基本的需要指定日志的输入和日志的输出。可以把logstash理解成一个处理日志的中间件,所以需要input和output

在这个配置文件里:

input是redis, 需要指定redis的host 和port以及db,还要指明数据的类型,list表示这是一个redis的list对象。key指明redis中的key名称。

output 是elasticsearch, hosts指明elasticsearch的ip和端口,index指明这个日志存在elasticsearch中的索引名称。

这是最简单的配置,这样配置即可启动logstash,但如果你想针对日志做一些预处理,或者一些信息的过滤,可以使用logstash提供的模块,具体参见官方文档。

这里介绍下filter模块
在这里插入图片描述
带filter的logstash配置文件

input和output和上面一样,不做介绍。 filter模块中有个grok,可以用来匹配日志。根据你日志的格式来编写match规则。怎么书写规则,可以参考官方文档,这里大概讲下。 使用%{} 这种形式匹配一个变量,DATA匹配任何字符, 比如上面的 %{DATA:timestamp} 表示这个日志第一域是时间, 大括号后面有个空格,空格前面表示第一域) 将时间赋值给timestamp变量(名称可以自定义), 后面同理, 第二域是代表告警级别(赋值给level), 第三域是告警信息(赋值给msg), 第四域是客户ip地址(赋值给client_ip)…

这个匹配规则刚开始写起来可能有些费劲,需要调试。我当时调试也花了不少时间。

ok,现在我们有了配置文件,即可启动logstash。

./bin/logstash -f ./config/conf.d/error.log.nginx

建议使用supervisor管理进程。

在这里插入图片描述
supervisor中的logstash配置

如果启动有报错,根据报错一步步解决问题。

4 elasticsearch安装

1)依赖

和logstash一样,elasticsearch 同样需要依赖jdk,因为前面已经安装jdk环境,所以这一步可以跳过。

2)下载安装包并解压

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz
tar -xvf elasticsearch-5.2.2.tar.gz -C  /data/app/

和logstash一样,不需要编译,解压后既可以使用。但需要配置文件

3)配置

在这里插入图片描述
elasticsearch典型配置文件

配置文件说明:

cluster.name: 指定elasticsearch 集群的名称,集群内的所有elasticsearch需要配置相同的cluster.name

node.name: 当前节点名称,需要集群内唯一。

path.data: 数据存放位置

path.logs: elasticsearch的日志存放位置

http.port: 端口

discovery.zen.ping.unicast.hosts: elasticsearch节点。

下面两个应该是elasticsearch处理相关的配置,可以参考官方文档。

关于elasticsearch节点,这里说明下,最好配置成单数,且数量要大于等于3. 因为集群需要选举主从。

4)启动

配置完之后,启动elasticsearch。 注意,如果你使用root用户启动elasticsearch,就会报错,启动失败,这是因为elasticsearch不允许用root用户启动。可以创建一个用户,用来启动elasticsearch

groupadd elasticsearch

useradd -g elasticsearch elasticsearch

上面命令用来创建elasticsearch组和用户。创建完之后,因为默认对刚才的elasticsearch安装目录没有相关权限,还需要权限赋值(更改目录所属组和用户)。

chown -R elasticsearch:elasticsearch  /data/app/elasticsearch/

ok,现在可以启动了。

/data/app/elasticsearch/bin/elasticsearch -d

-d 表示后台运行。

还是一样,如果有报错,就解决报错。

5 kibana安装配置

1) 下载安装包并解压

和上面的logstash以及elasticsearch一样,无需编译,下载并解压即可使用。

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz
 tar -xzf kibana-5.2.2-linux-x86_64.tar.gz -C /data/app/

2) 配置

解压后,进入到kibana目录,修改配置文件
在这里插入图片描述
kibana典型配置

server.host:指明服务运行的地址

elasticsearch.uri: 指明elasticsearch运行的地址和端口

kibana.index: 指明kibana使用的索引,这个是自定义的。

tilemap.uri:指明了使用地图api, 在这里使用了高德地图的api

配置完成。

  1. 启动
/data/app/kibana/bin/kibana

如果正常启动,则可以通过默认的5601端口访问kibana 的web界面。

6 nginx

上一步,当kibana安装启动之后,并且可以正常访问,ELK的架构算是完成了。但是,如果是生产环境,我的建议是用nginx代理kibana web。 nginx安装配置很简单,网上一大堆,请自行安装配置。

至此,我们完成了filebeat + redis + logstash + elasticsearch + kibana + nginx 的这种架构。通过访问网页, 即可查询相关日志。

至于kibana怎么使用,如何创建索引,这个该教程就不作介绍了,可以参考网上的一些资料,或者如果你英文水平过关,直接看官方文档吧。

在这里插入图片描述

原文链接:https://www.jianshu.com/p/e7362ccfe7e3?tdsourcetag=s_pctim_aiomsg

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值