ELK,ELFK日志收集分析系统

ELK简介

ELK是一套完整的日志集中处理解决方案,将ElasticSearch,Logstash和Kibana三个开源工具配合使用,实现用户对日志的查询、排序、统计需求。

ELK工作原理

在所有需要收集日志的服务器上部署Logstash,或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署Logstash

Logstash收集日志,将日志格式化并输出到Elasticsearch集群中,Elasticsearch对格式化的数据进行索引和存储

Kibana从ES集群中查询数据生成图表,并进行前端数据的展示

Elasticsearch介绍

是基于Luccene(一个全文检索引擎的架构)开发的分布式存储检索引擎,是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档

Elasticsearch是基于java语言开发,可以通过restful web接口,让用户可以通过浏览器与Elasticsearch通信

Logstash介绍

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

Kibana介绍

kibana是一个功能强大的数据可视化 Dashboard(仪表板),kibana提供图形化的web界面来浏览

Elasticsearch日志数据,可以用来汇总,分析和搜索重要数据

Filebeat介绍

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

Fluentd介绍

fluentd是一个流行的开源数据收集器,由于logstash太重量级的缺点,logstash性能低,资源消耗比较多等问题,随后就有 Fluentd 的出现。相比较 logstash,Fluentd 更易用、资源消耗更少、性能更高,在数据处理上更高效可靠,受到企业欢迎,成为 logstash 的一种替代方案,常应用于 EFK 架构当中

搭建ELK

主机名ip地址需安装的软件

node1

192.168.94.7elasticsearch,kibana

node2

192.168.94.8elasticsearch
apache192.168.94.9apache logstash

安装elasticsearch

#更改主机名
#node1
hostnamectl set-hostname node1
bash
#node2
hostnamectl set-hostname node2

#以下两台同时做
vim /etc/hosts
192.168.94.7 node1
192.168.94.8 node2

#查看java版本,若没安装 yum install java -y 安装一下 openjdk即可
java -version

#部署elasticsearch软件
#将elasticsearch-5.5.0.rpm包放在opt下,可以去官网获取
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm

#加载系统服务
systemctl daemon-reload
systemctl enable elasticsearch.service

#修改配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml


--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]


#创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

#启动elasticsearch,并查看是否成功开启
systemctl start elasticsearch.service
#可能需要等待10秒左右
netstat -natp|grep 9200

#查看节点信息
浏览器访问 192.168.94.7:9200   192.168.94.8:9200 查看node1,node2的节点信息

浏览器访问 
192.168.94.7:9200/_cluster/health?pretty  
192.168.94.8:9200/_cluster/health?pretty
查看群集的健康情况,可以看到 status 值为 green(绿色),表示节点健康运行。
绿色:健康  数据和副本 全都没有问题
红色:数据都不完整
黄色:数据完整,但副本有问题

        

使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集

安装 Elasticsearch-head 插件

#两个节点同时操作
#切换到opt
cd /opt

#准备安装包,node  Elasticsearch-head  phantomjs 安装包
#下载编译安装工具 
yum install gcc gcc-c++ make -y

#解压node压缩包
tar xf node-v8.2.1.tar.gz

#进行编译安装,这个需要一段时间,大概10分组左右,可以根据自己的内核核数,make -j 数字 来加快编译速度
cd node-v8.2.1/
./configure
make && make install

#安装 phantomjs
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

#安装 Elasticsearch-head 数据可视化工具
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

#修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml_bak
vim /etc/elasticsearch/elasticsearch.yml

--末尾添加以下内容--
http.cors.enabled: true				#开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"			#指定跨域访问允许的域名地址为所有

#重新启动elasticsearch
systemctl restart elasticsearch

#启动 elasticsearch-head 服务,必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败
cd /usr/local/src/elasticsearch-head/
npm run start &

#elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100

#通过浏览器查看 Elasticsearch 信息
192.168.94.7:9200
192.168.94.8:9200

在apache节点部署logstash

#apache节点部署logstash,用于apache日志信息并发送到elasticsearch

#更改主机名
hostnamectl set-hostname apache

#安装apache服务(httpd)
yum install httpd -y
systemctl start httpd

#切换到/opt下
cd /opt

#检测java环境,openjdk即可
java -version 

#将rpm包放在opt下,安装logstash,没有可以去官网获取
cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service

#为logstash 做软连接
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

#测试 Logstash

Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。


定义输入和输出流:
#输入采用标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'
......
www.baidu.com										#键入内容(标准输入)
2020-12-22T03:58:47.799Z node1 www.baidu.com		#输出结果(标准输出)
www.sina.com.cn										#键入内容(标准输入)
2017-12-22T03:59:02.908Z node1 www.sina.com.cn		#输出结果(标准输出)


#使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
......
www.baidu.com										#键入内容(标准输入)
{
    "@timestamp" => 2020-12-22T02:15:39.136Z,		#输出结果(处理后的结果)
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}


使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.10.13:9200"] } }'
			 输入				输出			对接
......
www.baidu.com										#键入内容(标准输入)
www.sina.com.cn										#键入内容(标准输入)
www.google.com										#键入内容(标准输入)

//结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.10.13:9100/ 查看索引信息和数据浏览。


#修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。
#让logstash可以读取文件
chmod +r /var/log/messages  

#编写配置文件
vim /etc/logstash/conf.d/system.conf

input{
  file{
    path => "/var/log/messages"   #指定要收集的日志的位置
    type => "system"              #自定义日志类型标识 
    start_positionn => "beginning" #表示从这开始
  }
}

output{
  elasticsearch{                     #指定输出到elasticsearch
    hosts => ["192.168.94.7:9200"]   #指定elastisearch服务器地址和端口
    index => "system-%{+YYYY.MM.dd}" #指定输出到elasticsearch的索引格式 
  }
}

#重新启动logstash
systemctl restart logstash 


浏览器访问 http://192.168.10.13:9100/ 查看索引信息


在node1节点搭建kibana(也可以找一台新机器)

#在node1节点安装kibana
cd /opt
#将rpm包放在opt下
#安装kibana
rpm -ivh kibana-5.5.1-x86_64.rpm

#设置kibana的配置文件
#打开配置文件
vim /etc/kibana/kibana.yml

#具体配置
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.94.7:9200" 
--30--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"

#启动kibana服务
systemctl start kibana.service
systemctl enable kibana.service

#查看端口号
netstat -natp|grep 5601

#验证
在浏览器输入 192.168.94.7:5601
在 Index name or pattern 的框内输入 system-*

单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果





配置apache端

#将Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
#编辑配置文件
vim /etc/logstash/conf.d/apache_log.conf

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.10.13:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
	if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.10.13:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}


#热加载新的子配置文件apache
logstash -f /etc/logstash/conf.d/apache_log.conf

#前往kibana查看

看看elasticsearch是否添加了apache

查看kibana

搭建ELFK

Filebeat 的作用
由于 logstash 会大量占用系统的内存资源,一般我们会使用 filebeat 替换 logstash 收集日志的功能,组成 ELFK 架构

ELFK 工作流程

filebeat 将日志收集后交由 logstash 处理

logstash 进行过滤、格式化等操作,满足过滤条件的数据将发送给 ES

ES 对数据进行分片存储,并提供索引功能

Kibana 对数据进行图形化的 web 展示,并提供索引接口

主机名ip地址需安装的软件
filebeat192.168.94.10filebeat
#关闭防火墙和核心防护
systemctl stop firewalld
setenforce 0

#切换到opt下,将rpm包放在此处
cd /opt

#安装filebeat
rpm -ivh filebeat-6.6.1-x86_64.rpm

#备份配置文件
cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml_bak

#修改配置文件
vim /etc/filebeat/filebeat.yml

filebeat.prospectors:
- 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.94.10

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

----------------Logstash output---------------------
output.logstash:
  hosts: ["192.168.94.9:5044"]      #指定 logstash 的 IP 和端口

#启动 filebeat
systemctl start filebeat



apache端配置

#在 Logstash 组件所在节点上新建一个 Logstash 配置文件
#新建一个配置文件
vim /etc/logstash/conf.d/logstash.conf

#写入如下配置
input {
    beats {
        port => "5044"
    }
}
output {
    elasticsearch {
        hosts => ["192.168.94.7:9200"]
        index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
    stdout {
        codec => rubydebug
    }
}


#启动 logstash
logstash -f logstash.conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/534793.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker容器(六)网络配置与数据卷

一、高级网络配置 1.1概述 当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。 同时,Docker 随机分配一个本地未占用的私有…

Python docx:在Python中创建和操作Word文档

使用docx库,可以执行各种任务 创建新文档:可以使用库从头开始或基于模板生成新的Word文档。这对于自动生成报告、信函和其他类型的文档非常有用。修改现有文档:可以打开现有的Word文档,并使用库修改其内容、格式、样式等。这对于…

ios包上架系列 二、Xcode打应用市场ipa包

打包的时候一定要断开网络&#xff0c;上线包名只能在打包机配置 检查是否是正式环境&#xff0c;先在模拟器上运行 1、版本名称和本号号记得在这里更改&#xff0c;否则不生效 原因 &#xff1a;info.list <string>$(FLUTTER_BUILD_NAME)</string><key>CFB…

算法:计数类dp

文章目录 一、举个栗子例子1&#xff1a;爬楼梯问题例子2&#xff1a;不同路径例子3&#xff1a;计数子序列 二、基本思路三、典型例题一、ACWing&#xff1a;900. 整数划分1、解法一1.1、状态转移方程1.2、参考代码 O(n) 超时 2、解法二&#xff1a;类似完全背包问题1.1、状态…

【我的小工具】生成React页面类

有了数据表的结构信息&#xff0c;就能生成React 的页面类&#xff0c;快捷方便。 生成界面如下&#xff1a; 生成的React FrmUser.js页面如下&#xff1a; 只需再写里面的操作逻辑代码。

Jupyter Notbook如何安装配置并结合内网穿透实现无公网IP远程连接使用

文章目录 推荐1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&am…

通过前缀和来看golang的acm输入输出

前缀和 问题引入 package mainimport ("fmt" )func main() {var n, q, l, r intfmt.Scan(&n, &q)a : make([]int, n)ap : make([]int64, n 1)ap[0] 0for i : 0; i < n; i {fmt.Scan(&a[i])ap[i 1] ap[i] int64(a[i])}for j : 0; j < q; j {f…

Docker端口一直占用问题,docker重置(端口无法释放)(彻底重置docker环境)

文章目录 背景解决方法&#xff1a;彻底重置docker环境1. 停止所有Docker容器2. 删除所有容器3. 删除所有Docker镜像4. 删除所有Docker网络5. 删除所有Docker卷6. 清理Dangling资源7. 停止Docker服务8. 删除Docker数据和配置文件9. 重启Docker服务10. 验证 在这里插入图片描述验…

CSS设置文本

目录 概述&#xff1a; text-aling: text-decoration: text-transform: text-indent: line-height: letter-spacing: word-spacing: text-shadow: vertical-align: white-space: direction: 概述&#xff1a; 在CSS中我们可以设置文本的属性&#xff0c;就像Word文…

CUDA 12.4文档3 内存层次异构变成计算能力

5.3 内存层次 Memory Hierarchy CUDA线程在执行过程中可能会访问多个内存空间的数据&#xff0c;如图6所示。每个线程都有自己的私有本地内存。 每个线程块都有一个对块内所有线程可见的共享内存&#xff0c;并且其生命周期与块相同。线程块集群中的线程块可以对彼此的共享内…

springboot上传模块到私服,再用pom引用下来

有时候要做一个公司的公共服务模块。不能说大家都直接把代码粘贴进去&#xff0c;因为会需要维护很多份&#xff1b;这样就剩下两个方式了。 方式一&#xff1a;自己独立部署一个公共服务的服务&#xff0c;全公司都调用&#xff0c;通过http、rpc或者grpc的方式&#xff0c;这…

【C++杂货铺】模板进阶

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 泛型编程 &#x1f4c1; 函数模板 &#x1f4c2; 概念 &#x1f4c2; 格式 &#x1f4c2; class 和 typename &#x1f4c2; 原理 &#x1f4c2; 函数模板实例化 &#x1f4c2; 匹配原则 &#x1f4c1; 类模板 &#x1…

MySOL之旅--------MySQL数据库基础( 2 )

本篇碎碎念:尽自己最大的努力,直到筋疲力尽为止,加油 今日份励志文案: 别人都在前进,我为什么要停下 目录 补上一条博客缺失的内容 常用数据类型 数值类型&#xff1a; 字符串类型&#xff1a; 日期/时间类型&#xff1a; 二进制类型&#xff1a; 其他类型&#xff1a; …

大话设计模式——24.迭代器模式(Iterator Pattern)

简介 提供一种方法顺序访问一个聚合对象中各个元素&#xff0c;而又不暴露该对象的内部实现。&#xff08;Java中使用最多的设计模式之一&#xff09; UML图 应用场景 Java的集合对象&#xff1a;Collection、List、Map、Set等都有迭代器Java ArrayList的迭代器源码 示例 简…

书生·浦语大模型实战营之LMDeploy 量化部署 LLM-VLM 实践

书生浦语大模型实战营之LMDeploy 量化部署 LLM-VLM 实践 创建开发机 打开InternStudio平台&#xff0c;创建开发机。 填写开发机名称&#xff1b;选择镜像Cuda12.2-conda&#xff1b;选择10% A100*1GPU&#xff1b;点击“立即创建”。注意请不要选择Cuda11.7-conda的镜像&#…

2024年腾讯云优惠活动大全

随着云计算技术的日益成熟&#xff0c;越来越多的企业和个人开始选择将业务和数据迁移到云端。作为国内领先的云服务提供商&#xff0c;腾讯云一直致力于为用户提供高效、稳定、安全的云服务体验。在2024年&#xff0c;腾讯云推出了一系列优惠活动&#xff0c;旨在让更多用户能…

了解Vue路由守卫

一、理解&#xff1a; 路由守卫就是通过URL访问组件的过程中&#xff0c;可以设置回调函数做拦截&#xff0c;判断是否允许该URL访问组件。这个过程出现的回调函数&#xff0c;我们叫做路由守卫钩子函数。 路由守卫有3种 1、全局路由守卫 在./router/index.js 文件中&#xff0…

Web服务器架构设计(学习笔记)

软件架构风格 质量属性与架构评估 Web架构综合考察 什么叫做架构风格&#xff1f;又有哪些架构风格&#xff1f;不同的架构风格的优劣如何? 有哪些层次的负载均衡实现&#xff1f;优劣如何&#xff1f; 有哪些层面的集群切片实现&#xff1f; 什么叫做小前端&#xff0c…

fs.1.10 ON CENTOS7 dockerfile模式

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 centos7 docker上编译安装fs.1.10的流程记录&#xff0c;本文使用dockerfile模式。 环境 docker engine&#xff1a;Version 24.0.6 centos docker&#xff1a;7 freeswitch&#xff1a;v1.10.7 dockerfile 创建空…

茴香豆:搭建你的 RAG 智能助理(笔记)

视频地址&#xff1a;https://www.bilibili.com/video/BV1QA4m1F7t4 文档地址&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/huixiangdou/readme.md 作业地址&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/huixiangdou/homework.md 茴香豆项目…