ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

fliebeat+kafka的ELK日志分析平台

2021-12-16 11:03:41  阅读:230  来源: 互联网

标签:fliebeat ELK filebeat elastic kibana kafka nginx logstash


目录

一.环境讲解

file

当前结构,Filebeat部署在需要收集日志的机器上,收集日志,输出到zk+kakfa集群这个中间件中。logstash从kafka集群消费信息,并根据配置内容,进行格式转化和过滤,整理好的数据会发给elastic进行存储。elastic能对大容量的数据进行接近实时的存储、搜索和分析操作。最后由kibana提供web界面,调用elastic做数据分析,然后展示出来。

注意点:
1.filebeat启动后,只会读取最新输入的日志,类似tail -f
2.kafka集群的内容,logstash读取一条,就会消失一条,不会造成重复读取
3.这套系统里,只有elastic存储数据

#当前用5台机器模拟,实际可使用2-3台,将zk+kafka集群每台都进行部署,也可以1台,部署多实例。

[nginx服务]
    主机名 = nginx-server
    系统 = centos-7.3
    地址 = 1.1.1.1
    软件 = nginx-1.8 80
           filebeat-7.4.2

[zk+kafka集群]
    主机名 = kafka-1
    系统 = centos-7.3
    地址 = 1.1.1.2
    软件 = jdk-1.8
           zookeeper-3.5 2181
           kafka-2.0.0 9092

    主机名 = kafka-2
    系统 = centos-7.3
    地址 = 1.1.1.3
    软件 = jdk-1.8
           zookeeper-3.5 2181
           kafka-2.0.0 9092

[elasticsearch]
    主机名 = elastic-server
    系统 = centos-7.3
    地址 = 1.1.1.4
    软件 = jdk-1.8
           elasticsearch-7.4.2 9200

[logstash+kibana]
    主机名 = lk-server
    系统 = centos-7.3
    地址 = 1.1.1.5
    软件 = jdk-1.8
           logstash-7.4.2 9600
           kibana-7.4.2 5601

注意事项:
1.filebeat的版本要一致,在官网都有对应的包
2.filebeat连接kafka的版本,是有支持范围的,可查看官方文档filebeat-kafka配置
3.不同版本elk需要的jdk版本也不同,需要看好说明

二.部署配置

配置kafka集群

操作服务器(kafka-1,kafka-2)
1.这里使用2台组建kafka集群,可根据需求添加或删减节点。部署可查看文章kafka集群部署

2.按照上述连接,启动并测试好kafka集群,确保可正常使用

配置日志输出端

操作服务器(nginx-server)
1.Nginx作为日志输出端,这里也可以用自定义文件代替,然后手动插入内容
yum -y install nginx-1.8

若没有包,可扩展epel或者源码安装nginx-1.6

2.启动并本地访问,促使产生日志
systemctl start nginx
curl http://127.0.0.1
cat /var/log/nginx/access.log
file

3.安装filebeat
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.2-x86_64.rpm
rpm -vi filebeat-7.4.2-x86_64.rpm

4.建立文件夹,这里使用自建立的配置文件,方便修改维护
mkdir conf
cd conf

建立filebeat配置文件,格式一定要对齐,因为是yml格式的。启动后,filebeat会在kafka中建立一个叫nginx-log的topic
vim filebeat-nginx.yml

filebeat.inputs:
- type: log
  paths:
    - /var/log/nginx/access.log

output.kafka:
  hosts: ["1.1.1.2:9092", "1.1.1.3:9092"]
  topic: 'nginx-log'

具体的参数解释,可以查看filebeat配置文件详解

5.启动filebeat,这里会把启动日志输出到当前目录filebeat.log文件中,方便查看
nohup /usr/share/filebeat/bin/filebeat -e -c filebeat-nginx.yml &>> filebeat.log &

若不是这个地址,可以用如下命令,去查找这个命令位置在哪
rpm -ql filebeat

6.等半分钟,然后查看filebeat进程和日志,是否启动有问题
ps -aux |grep filebeat
file

查看日志,没有异常情况,就可以进行下一步了
cat filebeat.log

7.写入日志
curl http://127.0.0.1

操作服务器(kafka-1)
8.kafka中应该有新的topic nginx-log产生,test是创建集群时,测试功能创建的
cd /usr/local/kafka
bin/kafka-topics.sh --list --zookeeper localhost:2181
file

查看topic里的消息内容,可以看到日志信息的
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic nginx-log --from-beginning
file

配置logstash

操作服务器(lk-server)
1.先安装jdk-1.8
yum install java-1.8.0 -y

2.下载logstash的二进制包并部署
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.2.tar.gz
tar -xf logstash-7.4.2.tar.gz
mv logstash-7.4.2 /usr/local/logstash

3.建立文件夹,这里使用自建立的配置文件,方便修改维护
mkdir conf
cd conf

建立logstash配置文件,格式一定要对齐,因为是yml格式的。启动后会从kafka取数据,并传输给elasticsearch,中间是对nginx的日志数据,进行正则分段
vim logstash-nginx.yml

input {
  kafka  {
    auto_offset_reset => "latest"
    bootstrap_servers => "1.1.1.2:9092,1.1.1.3:9092"
    topics => ["nginx-log"]
    group_id => "logstash-file"
    codec => "json"
  }
}

filter {
  grok {
    match => {
      "message" => "%{IPORHOST:clientip} \[%{HTTPDATE:time}\] \"%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:http_status_code} %{NUMBER:bytes} \"(?<http_referer>\S+)\" \"(?<http_user_agent>\S+)\" \"(?<http_x_forwarded_for>\S+)\""
    }
  }
}

output {
  elasticsearch {
    hosts => ["192.168.56.106:9200"]
      index => "nginx-%{+YYYY.MM.dd}"
  }
}

具体的参数解释,可以查看logstash配置文件详解

4.启动logstash,这里会把启动日志输出到当前目录logstash.log文件中,方便查看
nohup /usr/local/logstash/bin/logstash -f logstash-nginx.yml &>> logstash.log &

5.等半分钟,然后查看logstash进程和日志,是否启动有问题
ps -aux|grep logstash
file

进程是启动着的,则查看日志,看看有没有异常
cat logstash.log

配置elasticsearch

操作服务器(elastic-server)
1.先安装jdk-1.8
yum install java-1.8.0 -y

2.下载elasticsearch的二进制包,直接解压即用
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz
tar -xf elasticsearch-7.4.2-linux-x86_64.tar.gz
mv elasticsearch-7.4.2-linux-x86_64 /usr/local/elastic

3.修改elasticsearch的配置文件
vim /usr/local/elastic/config/elasticsearch.yml

cluster.name: nginx-elk
node.name: node-1
cluster.initial_master_nodes: node-1
path.data: /data
path.logs: /var/log/elastic
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200

4.创建数据目录和日志目录
mkdir /data
mkdir /var/log/elastic
groupadd elastic
useradd -g elastic elastic
chown -R elastic:elastic /data /var/log/elastic

5.修改启动内存,一般为内存的1/2
vim /usr/local/elastic/config/jvm.options

-Xms512m
-Xmx512m

6.切换到elastic,启动服务
su - elastic

启动后查看日志,这个要等一会,会慢慢刷出来,如果到最后直接退出了,就是有报错,没通过预检查,需要将报错条目找出来,按照文档elastic报错解析进行解决
/usr/local/elastic/bin/elasticsearch
file

若都符合要求,会卡在日志界面,使用ctl + c强制停止,然后用如下命令在后台启动
/usr/local/elastic/bin/elasticsearch -d

配置kibana

操作服务器(lk-server)
1.下载二进制包,解压即用
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.4.2-linux-x86_64.tar.gz
tar -xf kibana-7.4.2-linux-x86_64.tar.gz
mv kibana-7.4.2-linux-x86_64 /usr/local/kibana

2.修改kibana配置文件
vim /usr/local/kibana/config/kibana.yml

server.host: "1.1.1.5"
server.port: 5601
server.name: "testlog"
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"
elasticsearch.hosts: "http://1.1.1.4:9200"

3.启动kibana,如果是root启动,要加允许参数
/usr/local/kibana/bin/kibana --allow-root

查看输出是否有error项,如果是warning则问题不大,只是一些插件之类的没加载,可正常使用。错误和警告解决可查阅kibana报错说明解决

若都符合要求,会卡在日志界面,使用ctl + c强制停止,然后用如下命令在后台启动
nohup /usr/local/kibana/bin/kibana --allow-root &>> kibana.log &

4.查看elasticsearch的索引,是否kibana使用了elasticsearch建立默认索引
curl http://1.1.1.4:9200/_cat/indices
file

5.访问nginx,制造一些访问记录
curl http://1.1.1.1

稍等一会,再查看elastichsearch记录,会有之前在logstash输出部分,index选项所设置的nginx-日期的索引名
file

这里green表示没问题,yellow表示接受到数据了,但没有做副本,read表示有问题,没接受到数据。

四.kibana图形操作

建立索引

1.添加新的日志采集项,点击Management-> Index Patterns,比如添加nginx系统日志。注意后面的不要忘了。

这里创建nginx并且设置的是@timestamp为索引匹配,后面的数据会根据这个时间戳查询
file

2.默认情况下,kibana需要设置一个默认索引

设置默认索引,点击五角星图标即可,这样在其他模块中会自动根据默认索引显示出需要的界面,否则空索引是没有界面使用的。
file

3.点击discover,则会显示默认索引的工资空间,显示的数据默认是15分钟,你可以自己调整时间段后refresh刷新查询到你想要的数据。如果你选择的索引模式配置了time字段,则文档随时间的分布将显示在页面顶部的直方图中。

这里要把时间设置为一天内,不然可能不会显示数据
file

设置图形展示

1.选择创建新的可视化图形
file

2.选择饼状图
file

3.选择nginx日志的索引
file

4.选择add添加一个条件进行筛选
file

5.选择message,这个是在logastch中设置的,属于粗略设置,这个列保存了整个访问记录。这里匹配本地127访问的记录,进行筛选。
file

6.可以看到一共7次访问,这里只记录了5次
file

标签:fliebeat,ELK,filebeat,elastic,kibana,kafka,nginx,logstash
来源: https://www.cnblogs.com/rxysg/p/15696854.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有