Linux部署7.9.3ELK+Filebeat监控tomcat日志

Linux环境安装7.9.3版本elasticsearch

1. 下载及解压

     将elasticsearch-7.9.3-linux-x86_64.tar.gz放在myfiles中解压

2. 修改es相应的配置

cd /myfiles/elasticsearch-7.9.3/config

vi elasticsearch.yml

node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true  
http.cors.allow-origin: "*"
//允许自动建立索引,否则filebeat到logstash到es报错
action.auto_create_index: true


//修改jvm
vi jvm.options

-Xms256m
-Xmx256m


//添加系统设置参数
vi /etc/sysctl.conf

vm.max_map_count=262144

//执行生效
sysctl -p

3. es高版本对于root用户无法启动。我们这里创建普通用户

  

adduser elk
passwd elasticsearch

//赋予权限
groupadd elk
useradd elk
chown -R elk:elk /myfiles

su elk

4. 启动

守护线程启动 -d
./myfiles/elasticsearch-7.9.3/bin/elasticsearch -d

5.关闭防火墙

/sbin/iptables -I INPUT -p tcp --dport 9200 -j ACCEPT

报错问题解决:

由于每个进程最大同事打开文件数太小

修改/etc/security/limits.conf , 修改最大65535,修改最小4096

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

 

安装Head插件

1.安装node

//解压 
tar -zxvf node-v10.10.0-linux-x64.tar.gz
//查看版本
./bin/node -v  
//设置软连接
ln -s /myfiles/node-v10.10.0-linux-x64/bin/npm   /usr/local/bin/ 
ln -s /myfiles/node-v10.10.0-linux-x64/bin/node   /usr/local/bin/

配置环境变量
export NODE_HOME=/myfiles/node-v10.10.0-linux-x64/
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules


//安装node插件
npm install -g grunt-cli

2. 安装phantomjs

yum install -y bzip2

解压phantomjs-2.1.1-linux-x86_64.tar.bz2

tar -xjf phantomjs-2.1.1-linux-x86_64.tar.bz2


设置环境变量
export PATH=$PATH:/myfiles/phantomjs-2.1.1-linux-x86_64/bin


如果报错:
phantomjs报phantomjs: error while loading shared libraries: libfontconfig.so.1: cannot open

执行
yum -y install fontconfig-devel

3. 安装head

//解压head
unzip elasticsearch-head-master.zip

vi elasticsearch-head-master/Gruntfile.js
查找connect添加hostname
connect: {
        server: {
                options: {
                        port: 9100,
                        base: '.',
                        keepalive: true,
                        hostname: '*'
                }
        }
}


//修改es连接地址
vi elasticsearch-head-master/_site/app.js
输入“http://localhost:9200”进行查找
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.100.9:9200";

4.运行head。

在elasticsearch-head-master目录执行npm install  ,将项目需要的依赖打包

如果遇到

EACCES: permission denied, link '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1605260201806/phantomjs-2.1.1-linux-x86_64' -> '/myfiles/elasticsearch-head-master/node_modules/phantomjs-prebuilt/lib/phantom'

首先移除项目中的rm -rf node_modules

然后 npm install --unsafe-perm

 

之后执行grunt server启动

// 后台运行 nohup npm run start &

/sbin/iptables -I INPUT -p tcp --dport 9100 -j ACCEPT

 然后访问192.168.100.9:9100即可

 

 

Linux环境安装7.9.3版本logstash

动态将来自不同数据源的数据统一起来。并将数据标准化到目的地。

将logstash-7.9.3.tar.gz放在myfiles中解压

在目录
/myfiles/logstash-7.9.3/config创建转换规则配置文件

vi es_log.conf

 input{
      file{
          path =>"/myfiles/log/protalTodoLog.20201111_114.log"
      }
      beats {
        port => 5044
        codec => "json"
      }
  }

  filter{
    mutate{
        remove_field => "@version"
        remove_field => "offset"
        remove_field => "input_type"
        remove_field => "beat"
        remove_field => "tags" 
    }
    ruby{
        code => "event.timestamp.time.localtime"
    }
  }

  output {
      elasticsearch {
           hosts => ["192.168.100.9:9200"]
           index => "portal_todo"
      }
  }

filebeat携带额外的信息到,标志来自哪台机器,通过fields携带(如下,携带的key是name,value是server1) 

filebeat.inputs:
- type: log
  enabled: true
  fields:
    name: server1

 logstash获取filebeat携带的额外的信息,,%{[fields][name]}

es的index必须小写

由于项目中存在多个日志并分隔日志,例如:protal_2020.12.1.log,protal_todo_2020.12.1.log........


input {
      beats {
        port => 5044

        //json会解析成对象,我这里只想要字符串,监听tomcat这里为空
        codec => "json"
      }
  }

filter {
    date{
        match=>["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
        target=>"@timestamp"
    }
    grok {
         match => ["message",  "%{COMMONAPACHELOG}"]

    }
    ruby {
        code => "
            event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)
            path = event.get('log')['file']['path']
            puts format('path = %<path>s', path: path)
            if (!path.nil?) && (!path.empty?)
                event.set('filename', (path.split('/')[-1]).downcase)
            end
        "
    }
  }


output{
     elasticsearch {
        hosts => ["192.168.100.9:9200"]
        index => "%{[fields][name]}_%{filename}"
     }
}

启动

./logstash -f /myfiles/logstash-7.9.3/config/es_log.conf

 

Linux环境安装7.9.3版本filebeat

ELK框架使用logstash收集、解析日志,但是logstash对内存、cpu、io资源消耗比较高。而Beats所占系统的资源几乎可以忽略不计。

监听指定文件日志或者位置。收集,转发到elasticsearch或发送给logstash解析。

 

Beats包括6种工具。

packetbeat:网络数据,收集网络流量数据

metricbeat:指标,收集系统、进程和文件系统级别的CPU和内存使用情况

filebeat:日志文件,手机文件数据

winlogbeat:windows事件日志

auditbeat:审计数据

heartbeat:运行时间监控

解压对应目录

修改配置文件

cd /myfiles/filebeat-7.9.3-linux-x86_64

vi filebeat.yml


- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /myfiles/log/*.log
fields:
  name: 113


默认传输到es注释
我们传输到logstash
output.logstash:
  enabled: true
  hosts: ["192.168.100.9:5044"]

./filebeat -e -c filebeat.yml

启动  nohup ./filebeat -e -c filebeat.yml >$log 2>&1 &

 

 

 

Linux环境安装7.9.3版本kibana

解压对应的安装包

修改配置文件

/myfiles/kibana-7.9.3/config

vi kibana.yml

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
i18n.locale: "zh-CN"

在kibana-7.9.3目录启动

首先不能是root用户。

 

./bin/kibana

设置elk用户可以访问该目录

nohup /myfiles/kibana-7.9.3/bin/kibana &

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值