filebeat+elk简单搭配

参考:

https://www.cnblogs.com/configure/p/7607302.html (kibana登陆认证[借用nginx转发])

https://www.elastic.co/cn/products(官网)

https://zhuanlan.zhihu.com/p/23049700(filebeat)

https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html#plugins-filters-date-match(logstash时间戳转换)

https://blog.csdn.net/wuyinggui10000/article/details/77879016(elk时区问题)

架构简介:

利用filebeat收集日志给logstash,logstash统一格式传递给elasticsearch,再利用kibana图形界面进行展示

系统:全都是centos 6系列版本

1.elasticsearch的安装配置

yum install  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.rpm -y

vi  /etc/elasticsearch/elasticsearch.yml

/etc/init.d/elasticsearch start

/etc/elasticsearch/elasticsearch.yml 配置如下:

cluster.name: lesu-elk

node.name: node-1

path.data: /home/elasticsearch   #保存数据的地方

path.logs: /var/log/elasticsearch

debug:

1.elasticsearch依赖于java,所以有时候会报java相关错,此时 yum install java -y即可

2.切换数据目录是要注意权限,我这里就遇到权限不足,所以需要 chown  -R elasticsearch  /home/elasticsearch

测试:

curl 'http://localhost:9200/?pretty' 显示为:

{

"name" : "node-1",

"cluster_name" : "lesu-elk",

"cluster_uuid" : "goAOXrJpQLuqfoHzl7LJMg",

"version" : {

"number" : "6.3.0",

"build_flavor" : "default",

"build_type" : "rpm",

"build_hash" : "424e937",

"build_date" : "2018-06-11T23:38:03.357887Z",

"build_snapshot" : false,

"lucene_version" : "7.3.1",

"minimum_wire_compatibility_version" : "5.6.0",

"minimum_index_compatibility_version" : "5.0.0"

},

"tagline" : "You Know, for Search"

}

即表示正常

2.logstash的安装配置

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

vi  /etc/yum.repos.d/logstash.repo

yum install logstash  -y

ln -s /usr/local/bin/logstash  /usr/share/logstash/bin/logstash

ln -s  /etc/logstash  /usr/share/logstash/config

#默认logstash可执行文件不在linux PATH变量搜索范围内,第二条则是logstash找不到自己环境变量的配置文件,所以需要这两个软连接

vi /etc/logstash/filebeat.conf

logstash -t  /etc/logstash/filebeat.conf #这个是配置文件测试语句

logstash -f  /etc/logstash/filebeat.conf #这个是启动命令

/etc/yum.repos.d/logstash.repo 内容如下

[logstash-6.x]

name=Elastic repository for 6.x packages

baseurl=https://artifacts.elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

logstash的调试配置如下:

input {

stdin{

}

}

filter {

grok {

match => { "message" => "%{ATS}" }

}

date {

match => ["time", "yyyy-MM-dd HH:mm:ss,SSS","UNIX"]

target => "time"

}

ruby {

code => "event.set('time', event.get('time').time.localtime + 8*60*60)"

}

}

output {

stdout{

codec => rubydebug

}

}

#主要在于用stdin和stdout两个插件,用来实时输入和输出

最终的线上配置:

input {

beats {

port => "5044"

}

}

filter {

grok {

match => { "message" => "%{ATS}" }

}

date {

match => ["time", "yyyy-MM-dd HH:mm:ss,SSS","UNIX"]

target => "time"

}

ruby {

code => "event.set('time', event.get('time').time.localtime + 8*60*60)"

}

}

output {

elasticsearch {

hosts => ["127.0.0.1:9200"]

index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"

}

}

线上配置简介:

logstash可以简单看成三段式的流水线处理,输入-->数据处理-->输出

输入就是input这段,可以来自标准输入stdin、redis等等,这里因为跟filebeat结合,所以用beats监听5044端口等待来自filebeat的数据

数据处理是filter段,这里采用grok插件对数据进行分割,我的数据是自定义的squid日志,数据如下

1500047983.032 494 192.168.124.4 TCP_MISS/200 656 359 http://linzb.com/wx_auth/WechatQrcode/694a37e9c2b7616fd53119fcd7120927/2 - DIRECT/6.6.6.6 image/png

默认的grok-patterns没有现成的规则可以用,这里我根据需求只分割image/png的部分前面的部分,所以在/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns中添加自定义条目:

ATS %{NUMBER:time}\s+%{NUMBER:duration}\s%{IP:client_address}\s%{WORD:cache_result}/%{POSINT:status_code}\s%{NUMBER:bytes}\s%{NUMBER:bytes_source}\s%{NOTSPACE:url}\s-\s%{WORD:hierarchy_code}/%{IP:source_address}

%{NUMBER:time}: NUMBER是grok-patterns文件中定义好的匹配规则变量,这个语句大意可以理解为,过滤匹配NUMBER规则的数据,保存为time字段,其他依次类推

\s:这里代表一个空格

因为我的数据是UNIX的时间格式(而且NUMBER匹配的是数字,不是时间,所以elasticsearch也没法识别),在elasticsearch中不直观,所以我这里也用了date插件,转换时间格式

match => ["time", "yyyy-MM-dd HH:mm:ss,SSS","UNIX"] 含义是匹配time字段,UNIX代表原来的数据格式是UNIX时间

target => "time" 则表示修改后的数据存储为time字段,这里相当于修改自身了,也可以保存为其他字段,然后用remove_field插件移除原有字段

ruby那段的语句则是为了修改时区,event.set是设置时间字段,event.get是获取时间字段,具体请参考:https://blog.csdn.net/wuyinggui10000/article/details/77879016

output就很简单了,输出数据给elasticsearch,比较关键的是%{[@metadata][beat]},它可以获取来自filebeat传递的变量,这样我们就可以为不同的节点传递不同的索引,用以区分

3.filebeat的安装配置:

yum install https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.0-x86_64.rpm -y

vi /etc/filebeat/filebeat.yml

/etc/init.d/filebeat start

/etc/filebeat/filebeat.yml内容如下:

filebeat.prospectors:

- input_type: log

paths:

- /home/ats_log/squid*

output.logstash:

hosts: ["8.8.8.8:5044"]

index: 192.168.124.127

path:指明要收集哪些日志

index:这个字段就是跟前面logstash的%{[@metadata][beat]}相对应,传递给logstash处理作为elasticsearch的索引

注:filebeat用/var/lib/filebeat/registry记录采取日志的位置,所以要重新读取日志的话,就修改这里面对应日志的offset字段,或者简单点删掉这个文件,不过这时就必须先停掉filebeat

4.kibana的安装配置

yum install  https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-x86_64.rpm  -y

vi /etc/kibana/kibana.yml

/etc/init.d/kibana start

kibana.yml配置很简单,默认就可以主要字段如下:

server.port: 5601

server.host: "127.0.0.1"

elasticsearch.url: "http://localhost:9200"

5.为kibana添加认证功能(这里为了防止链接失效,所以直接摘抄自:https://www.cnblogs.com/configure/p/7607302.html)

vi  /etc/yum.repos.d/nginx.repo

yum -y install nginx httpd-tools

mkdir -p /etc/nginx/passwd

htpasswd -c -b /etc/nginx/passwd/kibana.passwd user ******

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup

vim /etc/nginx/conf.d/default.conf

service nginx restart

/etc/yum.repos.d/nginx.repo 内容如下:

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/6/$basearch/

gpgcheck=0

enabled=1

/etc/nginx/conf.d/default.conf 内容如下:

server {

listen 80;

auth_basic "Kibana Auth";

auth_basic_user_file /etc/nginx/passwd/kibana.passwd;

location / {

proxy_pass http://127.0.0.1:5601;

proxy_redirect off;

}

}

原文地址:http://blog.51cto.com/linzb/2135687

时间: 2024-11-06 18:20:31

filebeat+elk简单搭配的相关文章

helm部署Filebeat + ELK

helm部署Filebeat + ELK 系统架构图: 1) 多个Filebeat在各个Node进行日志采集,然后上传至Logstash 2) 多个Logstash节点并行(负载均衡,不作为集群),对日志记录进行过滤处理,然后上传至Elasticsearch集群 3) 多个Elasticsearch构成集群服务,提供日志的索引和存储能力 4) Kibana负责对Elasticsearch中的日志数据进行检索.分析 1. Elasticsearch部署 官方chart地址:https://gith

原版Filebeat+ELK

在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的Filebeat+ELK开源实时日志分析平台的记录过程,有不对的地方还望指出. 简单介绍: 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是

linux单机部署kafka(filebeat+elk组合)

filebeat+elk组合之kafka单机部署 准备: kafka下载链接地址:http://kafka.apache.org/downloads.html 在这里下载kafka_2.12-2.10.0.0.tgz(kafka和zookeeper都用同一个包里的). 一.安装和配置jdk(下载jdk,配置环境即可) JAVA_HOME=/opt/jdk1.8.0_131 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH

FILEBEAT+ELK日志收集平台搭建流程

filebeat+elk日志收集平台搭建流程 1.         整体简介: 模式:单机 平台:Linux - centos - 7 ELK:elasticsearch.logstash.kibana三款开源软件的集合. FILEBEAT:代替logstash的采集功能,轻量.耗用小. 目前收集的有nginx日志.java日志[单行|多行]. 都是通过在客户端的生成日志配置文件中定义好初步json格式,然后利用filebeat采集到logstash,存储到elasticsearch,最后通过k

ELK简单使用

原作者:http://www.cnblogs.com/snidget/p/6269383.html ELK ELK是什么? Elasticsearch LogStash Kibana 1,简单的安装 我采用的是本地window环境: 下载的包如下: 首先安装的是jdk8,安装完成之后,设置路径, 增加一个系统变量 JAVA_HOME 值为安装的jdk目录: 编辑系统变量 PATH 在值的末尾添加 :%JAVA_HOME%/bin 打开命令行窗口,输入 java -version: 看看是否安装成

ELK简单安装测试

1 介绍组件 Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读). Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. ElasticSearch它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch 中的 Index 是一组具有相似特征的文档集合,类似于关系数据库模型中的数据库实例,Inde

ELK简单安装与配置

Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,它能帮助你搜索.分析和浏览数据:它是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架. 一.环境介绍 1.架构介绍 ELK是C/S架构的,所以这里列出server和client server : centos 6.6 x86_64 IP: 10.0.90.24 client : centos 6.6 x86_64 IP: 10.0.90.2

Kafka+Zookeeper+Filebeat+ELK 搭建日志收集系统

ELK ELK目前主流的一种日志系统,过多的就不多介绍了 Filebeat收集日志,将收集的日志输出到kafka,避免网络问题丢失信息 kafka接收到日志消息后直接消费到Logstash Logstash将从kafka中的日志发往elasticsearch Kibana对elasticsearch中的日志数据进行展示 image 环境介绍: 软件版本: - Centos 7.4 - java 1.8.0_45 - Elasticsearch 6.4.0 - Logstash 6.4.0 - F

filebeat+elk+zookeeper启动命令

./filebeat setup --dashboards curl -X GET "10.0.6.114:9200/_cat/indices?v" 启动filebeatcd /opt/filebeat-6.5.4-linux-x86_64 ./filebeat -e -c filebeat.yml & 启动kafkacd /opt/kafka_2.11-2.1.0/bin./kafka-server-start.sh ../config/server.properties &