ELK、ELFK企业级日志分析系统

目录

一、ELK简介

1、什么是ELK

2、ELK工作原理及过程​编辑

3、ELK相关名词介绍

①Elasticsearch介绍

②Logstash介绍

③Kibana介绍

④Fluentd介绍

⑤Filebeat介绍

二、ELK部署

1、实验环境

2、安装elasticsearch

3、安装logstash

4、安装kiabana

5、监控apache日志

三、ELFK部署

1、实验环境

2、部署filebeat

3、logstash配置及验证 

四、ELK及ELFK排错思路

1、filebeat侧排查

2、logstash侧排查

3、ES、kibana侧问题


一、ELK简介

1、什么是ELK

ELK日志分析系统:由3个组件组成 Elasticesearch、Kiabana、Logstash完成更强大的用户对日志的查询排序和统计需求

日志服务器作用:提高安全性、集中存放日志、

缺陷:对日志分析困难

2、ELK工作原理及过程

①、将日志进行集中化管理,从消息队列进入logstash

②、logstash将日志进行过滤、格式化并输出到Elasticsearch

③、Elasticsearch对格式化的数据进行索引和存储

④、Kibana从Elasticsearch中获取数据进行前端数据的展示

3、ELK相关名词介绍

①Elasticsearch介绍

基于Lucenne(全文搜索引擎的架构)分布式多用户能力的全文搜索引擎、基于JAVA开发、可扩展的,允许进行全文结构化搜索。理解为全局搜索引擎

核心概念:接近实时、集群、节点、索引(库--表--文档记录)、分片和副本、

②Logstash介绍

数据收集引擎,强大的数据处理工具,可以实现数据传输、格式处理、格式化输出、数据输入、数据加工(过滤、改写等)以及数据输出。

作用:数据收集引擎,支持动态的从各种数据源收集数据,对数据进行过滤、分析、丰富统一格式等操作,存储到用户指定的位置,一般发送给elasticsearch。

组件:Shipper、indexer、Boker、search and storage 、web interface

logstash常用命令:

-f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash的输入和输出流,可以加载配置文件

-e:从命令中获取,输入、输出后面跟着字符串,此字符串可以被当做logstash的配置,如果为空默认使用stdin输入stdout输出

-t:测试配置文件是否正确然后退出

③Kibana介绍

ES的一个功能强大的数据可视化,提供图形化的web界面流量ES日志数据,汇总分析搜索重要数据。

Filebeat:轻量级的开源日志文件数据收集器。通常在需要采集数据的客户端安装,指定目录与日志格式,filebeat能快速收集数据,发送给logstash或直接发送给ES存储,性能上比运行在JVM上的logstash优势明显。常用于ELFK架构

④Fluentd介绍

流行的开源数据收集器,logstash太重量级的缺点,引入logstash性能低耗费资源少、更易用、性能更高,常用于EFK中

⑤Filebeat介绍

轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中。

二、ELK部署

1、实验环境

节点名 ip地址 安装软件
node1 192.168.30.11 elasticsearch、kibana
node2 192.168.30.12 elasticsearch
apache 192.168.30.14 apache、logstash

2、安装elasticsearch

node1、node2执行:
systemctl stop firewalld 
setenforce 0 
#关闭防火墙和selinux
cd /opt
将es的rpm安装包上传到/opt目录下
rpm -ivh elasticsearch-5.5.0.rpm 
#安装elasticsearch
systemctl daemon-reload  
#重新加载system管理
systemctl  enable  elasticsearch.service 
#设置服务开机自启
vim /etc/elasticsearch/elasticsearch.yml
#修改elasticsearch配置文件
添加内容:
cluster.name: my-elk-cluster       
#设置es集群名称
node.name: node2						
#设置本机节点名称
path.data: /data/elk_data			
#指定数据存放路径
path.logs: /var/log/elasticsearch 
#指定日志存放路径(固定)
bootstrap.memory_lock: false     
#启动时不锁定内存
network.host: "0.0.0.0"				  
#监听地址所有
http.port: 9200								
#监听端口为9200ES的默认端口
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  
#集群发现通过单播实现,指定要发现的节点名,保存退出
grep -v  "^#"  /etc/elasticsearch/elasticsearch.yml  
#过滤非#开头的行检查配置是否有问题
mkdir  -p /data/elk_data
chown   elasticsearch:elasticsearch  /data/elk_data
#创建数据存放路径并授权
systemctl start elasticsearch.service
netstat -antp | grep 9200
#启动ELK并检查是否启动成功,netstat查看端口会有延迟,可以直接查看服务状态
浏览器验证节点信息网页显示status是green则表示状态正常:
192.168.30.11:9200/_cluster/health?pretty
192.168.30.13:9200/_cluster/health?pretty

3、安装logstash

apache机器执行:
systemctl stop firewalld 
setenforce 0 
#关闭防火墙和selinux
cd /opt
#将logstash的rpm安装包上传到/opt目录下
rpm -ivh logstash-5.5.1.rpm     
#安装logstash
systemctl enable  logstash.service   --now
#设置开机自启logstash并立即启动
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
#配置logstash命令全局可用
chmod +r /var/log/messages
#设置任何人可读此日志
vim /etc/logstash/conf.d/system.conf
#编辑一个新的logstash子配置文件读取
文件内容:
input {
    file{
        path =>"/var/log/messages"						#指定要收集的日志的位置
        type =>"system"									#自定义日志类型标识
        start_position =>"beginning"					#表示从开始处收集
    }
}
output {
    elasticsearch {										#输出到 elasticsearch
        hosts => ["192.168.30.11:9200"]					#指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"					#指定输出到 elasticsearch 的索引格式
    }
}
systemctl restart logstash
#修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。
Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
www.baidu.com
#测试logstash,输完命令后输入www.baidu.com查看是否会出现下图内容,出现则表示无问题退出即可


4、安装kiabana

node1节点操作:
cd /opt
#上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录
rpm -ivh kibana-5.5.1-x86_64.rpm
#安装kibana
vim /etc/kibana/kibana.yml
添加内容:
server.port: 5601
#监听端口5601
server.host: "0.0.0.0"
#监听地址所有
elasticsearch.url: "http://192.168.30.11:9200" 
#从那台es中获取数据
kibana.index: ".kibana"
systemctl enable kibana.service  --now
netstat -natp | grep 5601
#启动 Kibana 服务
验证 Kibana
浏览器访问 http://192.168.30.11:5601
第一次登录需要添加一个 Elasticsearch 索引:
Index name or pattern
//输入:system-*			#在索引名中输入之前配置的 Output 前缀“system”
单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果,如下图

 5、监控apache日志

apache节点:
yum install  -y apache
systemctl start httpd
#安装启动apache并在本机页面访问apache 192.168.30.14
vim /etc/logstash/conf.d/apache_log.conf
#创建一个apache的logstash子配置文件
添加内容:
input {
    file {
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
    }
    file {
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
    }
}
output {
    if [type] == "access" {
        elasticsearch {
            hosts => ["192.168.30.11:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
	if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.30.11:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}
cd /etc/logstash/conf.d/
#进入logstash子配置文件路径
logstash -f apache_log.conf
#热加载新的子配置文件apache
#浏览器访问 http://192.168.30.11:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引, 在索引名中输入之前配置的 Output 前缀 apache_access-*,并单击“Create”按钮。在用相同的方法添加 apache_error-*索引。
选择“Discover”选项卡,在中间下拉列表中选择刚添加的 apache_access-* 、apache_error-* 索引, 可以查看相应的图表及日志信息。

三、ELFK部署

1、实验环境

节点名 ip地址 安装软件
node1 192.168.30.11 elasticsearch、kibana
node2 192.168.30.12 elasticsearch
apache 192.168.30.14 apache、logstash
pc3 192.168.30.13 filebeat

2、部署filebeat

pc3新机器上执行:
cd /opt
tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz
#将filebeat压缩包上传到/opt路径下并解压
mv filebeat-6.2.4-linux-x86_64/ /usr/local/filebeat
#解压后的文件夹移动到/usr/local路径下并改名为filebeat
vim /usr/local/filebeat/filebeat.yml
#编辑filebeat配置文件,注意格式
filebeat.prospectors: //filebeat.input:
- type: log         
#指定 log 类型,从日志文件中读取消息
  enabled: true
  paths:
    - /var/log/messages       
#指定监控的日志文件
    - /var/log/*.log
  fields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中
    service_name: filebeat
    log_type: log
    service_id: 192.168.30.14
#filebeat的地址

--------------Elasticsearch output-------------------
(全部注释掉)

----------------Logstash output---------------------
output.logstash:
  hosts: ["192.168.30.13:5044"]      
#指定 logstash 的 IP 和端口
/usr/local/filebeat/filebeat -e -c filebeat.yml
#启动 filebeat

3、logstash配置及验证 

logstash即apache节点:
cd /etc/logstash/conf.d

vim logstash.conf
input {						
    beats {
        port => "5044"
#输入从5044端口
    }
}
output {					
    elasticsearch {
        hosts => ["192.168.30.11:9200"]
#输出到es中,格式为调用filebeat的变量+年月日
        index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
    stdout {
        codec => rubydebug
    }
}

#启动 logstash
logstash -f logstash.conf
浏览器访问 http://192.168.30.11:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引“filebeat-*”,单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。

## **20230407**

四、ELK及ELFK排错思路

1、filebeat侧排查

第一步:排查filebeat上的配置文件有没有写错,filebeat的配置文件是yml文件,一定要注意格式。

第二步:查看filebeat上能否telnet通logstash上的5044端口,若ping不通则要查看防火墙和filebeat的配置文件是否指向错误,或者在logstash加载filebeat配置文件时即执行 logstash -f logstash.conf时查看弹出的日志中是否有connection fail或者no route等字样,此2个错误表示防火墙或者5044端口与filebeat不通

2、logstash侧排查

第一步:首先在加载配置文件是查看是否与filebeat成功建立连接,若不成功检查端口5044和防火墙selinux等是否关闭。连接成功截图如下

第二步:查看logstash的日志文件tail -f   -n  50 /var/log/logstash/logstash-plain.log是否有output到ES的字样,连接成功截图如下。若没有output则检查filebeat或logstash自身是否成功采集数据,主要查看配置文件和端口防火墙问题

3、ES、kibana侧问题

第一步:若kibana侧不能创建索引,则需要在ES上查看是否有对应名称的索引,命令如下

curl -X GET "192.168.30.11:9200/_cat/indices/?v" 

#使用时将ip和端口换为自己的ES端口,若索引过多可直接加管道符使用grep过滤名称

第二步:若ES上没有数据,则需要去排查logstash上是否将数据传输过来,若ES上有索引但是kibana创建索引成功后日志显示No results found。则需要调整一下获取的时间,或者访问一下服务产生一些日志即可。

猜你喜欢

转载自blog.csdn.net/weixin_67287151/article/details/130018840