天天看点

ELK+Filebeat快速搭建

ELK日志系统在日志系统应用比较广泛,最近研究了ELK的搭建,根据自己这几天的搭建经历,总结了关于ELK的搭建方法

ELK顾名思义是ElasticSearch(后面简称es),Logstash,Kibana组建的一套日志系统,下载官网如下 https://www.elastic.co/cn/downloads/ 选取自己需要搭建的版本 注意版本要一直 因为logstash占用资源比较大 所以我选取了filebeat 轻量级日志收集工具。用filebeat收集日志,用logstash过滤日志(filebeat和logstash可以两选一 也可以一起用)以上我选取的是6.6.2版本的,仅供参考

下图是ELK运行的流程图

ELK+Filebeat快速搭建

ELK+filebeat 都是傻瓜式安装,下载完之后用命令安装或者解压压缩包然后配置文件修改之后启动即可用。

**

首先 logstash和es依赖java环境 安装1.8版本的jdk。

vim /etc/profile.d/java.sh 添加如下代码

export JAVA_HOME= jdk安装路径

export JRE_HOME= $JAVA_HOME/jre

export CLASSPATH= .: $ JAVA_HOME/lib:$ JRE_HOME/lib:$CLASSPATH

export PATH= $ JAVA_HOME/bin:$ JRE_HOME/bin:$PATH

退出保存运行

source /etc/profile.d/java.sh

运行 java -version 查看是否java环境安装成功

另外lunix内核也有要求

Linux的内核要在 3.5+ 以上,内核查看命令 uname -a

一,Filebeat安装

**

1,下载安装包

2,解压

3,进入解压之后的目录并编辑 filebeat.yml 配置文件

ELK+Filebeat快速搭建

type:需要收集的服务器日志文件类型

paths: 需要收集的服务器日志文件路径

ELK+Filebeat快速搭建

如果你选择的filebeat直接输出在es上 那么就把注释去掉

output.elasticsearch:

hosts: [“172.18.56.92:9200”] //es服务器的ip es的服务器端口为9200 检查是否有开启

如果你选择的是输出到logstash上 那么就把 logstash output注释去掉

output.logstash:

hosts: [“172.18.56.92:5044”] //logstash服务器ip logstash服务器端口为5044 检查是否开启

4,bin目录下启动filebeat ./filebeat -e -c filebeat.yml 配置文件修改要重新启动

**

二,Logstash安装

1,下载安装包

2,解压

3,进入解压后的目录并在config目录下创建一个配置文件例如 from_beat.conf 文件

4,编辑from_beat.conf文件 并添加如下代码

ELK+Filebeat快速搭建

logstash管道主要包含三部分 input ,filter,output 。

input 数据来源配置 这里的数据来源是filebeat 所以是beats;也可以是redis或者kafka等;

filter 数据过滤配置 里面包含一些过滤规则等,有需求可以具体了解一下;

output 数据输出配置 输出到es里 hosts是es服务器 可以是多个逗号隔开,index是es的索引

5,编辑 logstash.yml 文件如下图

ELK+Filebeat快速搭建
ELK+Filebeat快速搭建

path.data 目录自己创建

http.host logstash服务器的ip

6,bin目录下启动logstash ./logstash -f …/config/from_beat.conf 出现这个即表示启动成功

ELK+Filebeat快速搭建

**

三,ES安装

**

1,下载安装包

2,解压

3,进入解压后的目录编辑config目录下的elasticsearch.yml文件

ELK+Filebeat快速搭建
ELK+Filebeat快速搭建

cluster.name 集群名字

node.name 节点名字

path.data es数据存储路径

path.logs es日志路径

network.host es的服务器ip

http.port 默认端口9200

4,进入bin目录启动es ./elasticsearch

我们看到启动置换后有报错

ELK+Filebeat快速搭建

说明启动的时候没有用非root用户启动,需要新建一个用户组

groupadd es

useradd -g es es

设置es目录

chown -R es:es /es/

切换es用户 su es 再次启动

出现这个错误 原来配置文件写里的数据路径和日志路径没有创建

ELK+Filebeat快速搭建

我们创建该目录之后再次启动

mkdir /data/elk/els_data

mkdir /data/elk/log/els

chown -R es es /data/elk/els_data

chown -R es es /data/elk/log/els

出现报错

ERROR: [3] bootstrap checks failed

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

[3]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

切换root用户

vi /etc/security/limits.conf

  • soft nofile 65536
  • hard nofile 65536

    vi /etc/sysctl.conf

    添加

    vm.max_map_count=655360

    保存后执行

    sysctl -p

如还有报错参考 https://blog.csdn.net/happyzxs/article/details/89156068

然后访问 访问 ip:9200 如果出现

ELK+Filebeat快速搭建

到此 es 安装启动完成

四,Kibana安装

1,下载安装包

2,解压

3,进入解压后的目录编辑config目录下的kibana.yml文件

server.port: 5601

server.host: “172.18.240.33” //当前服务器ip

elasticsearch.hosts: [“http://172.18.240.28:9200”,“http://172.18.240.33:9200”] //es的服务器

kibana.index: “.kibana6”

logging.dest: /data/log/kibana/kibana.log //kibana日志路径

创建日志目录文件

mkdir -p /data/log/kibana/

touch /data/log/kibana/kibana.log

chmod o+rw /data/log/kibana/kibana.log

4,进入bin目录 启动kibana ./kibana

浏览器访问kibana http://172.18.240.28:5601/

如果浏览器显示 Kibana server is not ready yet 有可能是es和kibana版本不一致导致的 如果版本一致 那么稍等一会刷新页面即可

进入kinbana之后

ELK+Filebeat快速搭建

在index patterns里面添加索引 索引名就是logstash的配置文件里配置的index

ELK+Filebeat快速搭建

匹配到索引之后 点击下一步

ELK+Filebeat快速搭建

根据自己需要选择 我选择的是第一个 然后下一步

ELK+Filebeat快速搭建

log索引建立成功 点击进入discover页面 然后可以看到filebeat收集的服务器日志里面的内容了

ELK+Filebeat快速搭建

好了 现在日志文件只要有内容修改那么filebeat就会将日志收集到传给logstash logstash进行过滤并写入es里 kinbana就可以读取es里面的内容了 快去试一试吧!

继续阅读