您的位置:首页 > 运维架构 > Linux

ELK+fileBeat 日志系统搭建

2017-07-18 16:10 861 查看

首先声明我是业余的,只讲解如何搭建具体使用我也不会。

系统环境 :virtualBox centos7 。

特别提醒:关防火墙,我因为这个坑卡了两天。

根据进程名查看pid: ps -ef|grep name。

根据端口查看pid: nestat -apn|grep 9100。

根据pid强行关闭进程; kill -9 pid.

ES集群搭建

由于它本身是Java写的所以需要安装jdk。官网下载需要接受一个协议(也有方式下载只是我没有成功,就放弃这种方式了)最后我选择安装openjdk,这种安装方式不需要配置环境变量。其实也可以用你的windows主机下载压缩包再传到虚拟机上。在virtualBox上支持复制要装插件,使用ftp需要配置,所以我是自己写了个servlet,使用虚拟机下载主机上的文件,这样在多次需要同一个文件时不用多次在外网下载,下载更快。

查看yum库jdk版本:yum search java|grep jdk

选择安装1.8.0 :yum install java-1.8.0-openjdk*

下载ES 同样建议使用自己的内网下载,解压 tar -xvf elasticsaerch-5.4.1.tar.gz。(我的ES比其他工具版本低一点,由于中间准备期末考试停顿了一段时间,再开始弄的时候下载没注意)

修改配置文件 vi config/elasticsearch.yml

主要配置:

node.name: node1 //节点名称,集群内唯一

network.host: 192.168.56.201 //访问ip,如果使用localhost则仅本机可访问;搭建集群一般不会在一台主机上基本都是本机内网ip。

http.cors.enable: ture: ture

http.cors.allow-origin: * //head 使用,监控集群状态

node.master: ture //标记本节点可作为master,master通过选举产生。

node.data: true //本节点作为数据节点存储数据,一般不建议既是master又是data节点

//可作为master节点的ip ,多个用逗号分隔;默然9300可不加端口

discovery.zen.ping.unicast.hosts: [“192.168.56.201”]

//开始初始化最少的master节点个数,默认为3

discovery.zen.minimum_master_nodes: 1

4 . ES不允许在root 权限下运行需要创建新用户

adduser esAdmin

passwd esAdmin

//分配权限,我为了省事直接将ES上级目录也就是我放置这些文件的目录所有权全部给这个用户了。

chown -R /usr/local/services

千万不要执行chown -R /。我当时就抽风试了一下出了一些奇怪的错误。

5 . 尝试启动ES, ./binelasticsearch -d 参数 d 是后台启动;建议先不要后台启动,控制台启动方便看日志。启动成功日志很明显的,能够启动成功再使用后台启动。ctrl+z后ES并没有关闭。可以使用以下方式。

还有启动时可能会有文件描述符问题查一下很快解决的



6. 从节点的配置区别在于node.master和node.data

7. 从节点启动成功截图,当初就是未关闭防火墙从节点始终找不到主节点,在这卡了两天。



Elasticsearch集群中有的节点四种角色:

第一种:

node.master: true

node.data: true

这种组合表示这个节点即有成为主节点的资格,又存储数据,

这个时候如果某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于这个节点的压力就比较大了。

elasticsearch默认每个节点都是这样的配置,在测试环境下这样做没问题。实际工作中建议不要这样设置,

这样相当于主节点和数据节点的角色混合到一块了。

第二种:

node.master: false

node.data: true

这种组合表示这个节点没有成为主节点的资格,也就不参与选举,只会存储数据。

这个节点我们称为data(数据)节点。在集群中需要单独设置几个这样的节点负责存储数据。后期提供存储和查询服务。

第三种:

node.master: true

node.data: false

这种组合表示这个节点不会存储数据,有成为主节点的资格,可以参与选举,有可能成为真正的主节点。

这个节点我们称为master节点.。

第四种:

node.master: false

node.data: false

这种组合表示这个节点即不会成为主节点,也不会存储数据,

这个节点的意义是作为一个client(客户端)节点,主要是针对海量请求的时候可以进行负载均衡。

kibana , head安装

安装node 和npm,使用node -v和npm -v检查是否安装成功。

使用npm安装grunt:

npm install –g grunt–cli

3 . 下载解压kibana,修改配置文件 config/kibana.yml

server.host: 192.168.56.201 //同样的localhost表示仅本机可访问

elasticsearch.url:”http://192.168.201:9200“。

4 .启动kibana同样建议先控制台启动防止有错,再转后台启动

nohup ./bin/kibana &



5.在GitHub上下载elasticsearch-head源码,git地址https://github.com/mobz/elasticsearch-head

6. 进入head目录运行 (5.0之前head作为插件安装,之后就不再以插件形式安装)

npm install

如果速度较慢或者安装失败,使用国内镜像。没翻墙的建议都用这个

npm install -g cnpm –registry=https://registry.npm.taobao.org

7 . 修改Gruntfile.js



8.启动head

grunt server



9 . 浏览器访问

kibana地址 :http://192.168.56.201:5601

head地址:http://192.168.56.201:9100/





logstash 配置

1 . 下载解压就不说了。在config目录创建fileBeat_to_es.conf,这份文件是开始使用log4j发送日志配置改写的所以存在一些注释掉的配置。log4j发送由于存在安全问题已经弃用详情

stdin{}//控制台输入

stdout{}控制台输出。这对输入输出是为了测试

我这里的所有配置都是比较业余,建议参考其他人或者官方文档

output 的hosts 官方建议排除主节点避免主节点压力过大详情



2. 启动方式

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



当然logstash也可以配置在多台服务器

fileBeat配置

直接开始配置,打开fileBeat.yml。我是直接在我的windows主机上配置的fileBeat。

监控本地Tomcat日志



将默认输出到ES换成logstash



启动fileBeat

为了看到效果打开tomcat,如果logstash按照我的配置是可以在logstash服务器控制台看到打印信息的;并且切换到head和kibana页面都会有变化。
a1eb
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息