ELK+fileBeat 日志系统搭建

来源:互联网 发布:远程控制软件下载 编辑:程序博客网 时间:2024/05/16 07:53

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

系统环境 :virtualBox centos7 。
特别提醒:关防火墙,我因为这个坑卡了两天。
根据进程名查看pid: ps -ef|grep name。
根据端口查看pid: nestat -apn|grep 9100。
根据pid强行关闭进程; kill -9 pid.

ES集群搭建

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

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

  3. 修改配置文件 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安装

  1. 安装node 和npm,使用node -v和npm -v检查是否安装成功。
  2. 使用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配置

  1. 直接开始配置,打开fileBeat.yml。我是直接在我的windows主机上配置的fileBeat。
    监控本地Tomcat日志
    这里写图片描述
    将默认输出到ES换成logstash
    这里写图片描述
  2. 启动fileBeat
  3. 为了看到效果打开tomcat,如果logstash按照我的配置是可以在logstash服务器控制台看到打印信息的;并且切换到head和kibana页面都会有变化。
原创粉丝点击