日志收集之filebeat

一,软件介绍

  Filebeat是一个轻量级日志传输Agent,可以将指定日志转发到Logstash、Elasticsearch、Kafka、Redis等中。Filebeat占用资源少,而且安装配置也比较简单,Filebeat附带了内部模块(auditd、Apache、Nginx、System和MySQL),这些模块简化了普通日志格式的聚集、解析和可视化。结合使用基于操作系统的自动默认设置,使用Elasticsearch Ingest Node的管道定义,以及Kibana仪表盘来实现这一点。

二,部署安装

  本机测试环境

    存在  redis 数据库,减轻压力

    nginx web服务器 

   下载filebeat 

1 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-linux-x86_64.tar.gz
2 
3     tar zxvf filebeat-6.6.0-linux-x86_64.tar.gz
4 
5     ln -s filebeat-6.6.0-linux-x86_64 filebeat

  启动命令filebeat

三,配置文件

   编写配置文件

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
    - /var/log/messages #配置收集的日志路径
  - /application/nginx/logs/*.log
exclude_lines
: ['^DBG',"^$"] ##排除的内容,正则排除 document_type: filesystem-log-5612 #设置类型 filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 3 setup.kibana: output.file: path: "/tmp" filename: "text.txt"

    测试启动服务

./filebeat -e -c filebeat.yml -d "Publish"

   测试连接logstash连接

  

  已经存在日志文件了

    后台启动:

    

nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &

    启动后立刻查看日志

 tail -f /tmp/text.txt

    再终端输入:

echo "666666666666666" >> /var/log/messages

    

  数据已经记录了

 

四,连接redis  

  配置前保证redis局域网能够连接!!

    

  结束进程:  kill 对应的pid即可    

   配置文件重新配置:  

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
    - /var/log/messages
    - /application/nginx/logs/*.log
  exclude_lines: ['^DBG',"^$"]
  document_type: filesystem-log-5612
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 3
setup.kibana:
output.redis:
  hosts: "10.0.0.7"
  db: "1"
  port: "6379"
  password: "123"
  key: "filesystem-log-5612"

    启动

 nohup ./filebeat -e -c filebeat.yml > /dev/null 2>&1

    再redis上查看数据

 

   

[root@elk-master config]# redis-cli -h 10.0.0.7 -p 6379 -a 123
10.0.0.7:6379> keys *
(empty list or set)
10.0.0.7:6379> keys *
(empty list or set)
10.0.0.7:6379> select 1
OK
10.0.0.7:6379[1]> KEYS *  查看内容
1) "filesystem-log-5612"
10.0.0.7:6379[1]> llen filesystem-log-5612  里面文件长度
(integer) 7
10.0.0.7:6379[1]> llen filesystem-log-5612
(integer) 7
10.0.0.7:6379[1]> llen filesystem-log-5612
(integer) 7
10.0.0.7:6379[1]> llen filesystem-log-5612
(integer) 7
10.0.0.7:6379[1]> llen filesystem-log-5612
(integer) 9
10.0.0.7:6379[1]> KEYS *
1) "filesystem-log-5612"
10.0.0.7:6379[1]>

 

五, logstash节点拉取数据

     logstash配置文件:

    

input {
    redis {
        data_type => "list"
        host => "10.0.0.7"
        db => "1"
        port => "6379"
        password => "123"
        key => "filesystem-log-5612"

    }
}

output {
    elasticsearch {
        hosts => ["10.0.0.223:9200"]
        index => "filesystem-log-5612-%{+YYYY.MM.dd}"
    }
}

   语法检测:

/elk/logstash/bin/logstash -f /elk/logstash/config/logstash.conf -t

  

没问题.启动logstash 

/elk/logstash/bin/logstash -f /elk/logstash/config/logstash.conf &

成功  

六,head查看

  

七, >>>>>>>

  

为了监控Redis的队列长度,可以写一个监控脚本对redis进行监控,并增加zabbix报警

[root@elk-master ~]# vim redis-test.py 
#!/usr/bin/env python
import redis
def redis_conn():
        pool=redis.ConnectionPool(host="10.0.0.7",port=6379,db=1,password=123)
        conn = redis.Redis(connection_pool=pool)
        data = conn.llen('filesystem-log-5612')
        print(data)
redis_conn()
[root@elk-master ~]# python redis-test.py     #当前redis队列长度为0
0

 

         

 

posted on 2019-02-12 16:16  kingle-l  阅读(870)  评论(0编辑  收藏  举报

levels of contents