ELK日志收集系统

news2024/11/24 19:56:38

一、概述

1、ELK由三个组件构成

2、作用

            日志收集        日志分析        日志可视化

3、为什么使用?

    日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。

        如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。  

         但如果 服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。

        目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。

二、组件

1.elasticsearch

日志分析        

开源的日志收集、分析、存储程序

特点

    分布式    零配置          自动发现    索引自动分片

    索引副本机制    Restful风格接口    多数据源    自动搜索负载

2.logstash

日志收集

搜集、分析、过滤日志的工具

工作流程

         一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去

        Inputs → Filters → Outputs

        输入-->过滤-->输出

INPUT

File:从文件系统的文件中读取,类似于tail -f命令
Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
Redis:从redis service中读取
Beats:从filebeat中读取

FILETER

Grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。
官方提供的grok表达式:logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub
Grok在线调试:Grok Debugger
Mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。
Drop:丢弃一部分Events不进行处理。
Clone:拷贝Event,这个过程中也可以添加或移除字段。
Geoip:添加地理信息(为前台kibana图形化展示使用)

OUTPUTS

Elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。
File:将Event数据保存到文件中。
Graphite:将Event数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。

3.kibana

                        日志可视化
                为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。

三、架构类型

ELK

                es        logstash        kibana

ELKK

                es                logstash                kafka                kibana

ELFK

    es     logstash( 重量级    占用系统资源较多)      filebeat( 轻量级  占用系统资源较少)        kibana

ELFKK

        es        logstash        filebeat        kafka        kibana

四、案例

ELK日志收集系统集群实验

一、实验拓扑

二、环境配置

设置各个主机的IP地址为拓扑中的静态IP,在两个节点中修改主机名为node1和node2并设置hosts文件

node1:

hostnamectl set-hostname node1

vim /etc/hosts

192.168.2.4  node1

192.168.2.3  node2

node2:

hostnamectl set-hostname node2

vim /etc/hosts

192.168.2.4  node1

192.168.2.3  node2

三、 安装node1与node2节点的elasticsearch

1. 安装

 mv elk软件包  elk

 cd elk

 rpm -ivh elasticsearch-5.5.0.rpm

2.配置

node1:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster  //集群名称   

node.name:node1 //节点名字

path.data:/var/lib/elasticsearch  //数据存放路径

path.logs: /var/log/elasticsearch/  //日志存放路径

bootstrap.memory_lock:false //在启动的时候不锁定内存

network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

node2:

vim /etc/elasticsearch/elasticsearch.yml

cluster.name:my-elk-cluster  //集群名称   

node.name:node2 //节点名字

path.data:/var/lib/elasticsearch  //数据存放路径

path.logs: /var/log/elasticsearch/  //日志存放路径

bootstrap.memory_lock:false //在启动的时候不锁定内存

network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

http.port:9200 //侦听端口为9200

discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

3.启动elasticsearch服务

node1和node2

systemctl start elasticsearch

4.查看节点信息

http://192.168.2.3:9200

http://192.168.2.4:9200

三、在node1安装elasticsearch-head插件

1.安装node

cd elk

tar xf node-v8.2.1.tar.gz

cd node-v8.2.1

./configure && make && make install

等待安装完毕。

2.拷贝命令

cd elk

tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2

cd phantomjs-2.1.1-linux-x86_64/bin

cp phantomjs  /usr/local/bin

3.安装elasticsearch-head

cd elk

tar xf elasticsearch-head.tar.gz

cd elasticsearch-head

npm install

4.修改elasticsearch配置文件

vim /etc/elasticsearch/elasticsearch.yml

 # Require explicit names when deleting indices:

#

#action.destructive_requires_name:true

http.cors.enabled: true  //开启跨域访问支持,默认为false

http.cors.allow-origin:"*"  //跨域访问允许的域名地址

重启服务: systemctl restart elasticsearch

5.启动elasticsearch-head

cd /root/elk/elasticsearch-head

npm run start &

查看监听: netstat -anput | grep :9100

6.访问:

http://192.168.2.3:9100

7.测试

在node1的终端中输入:

curl  -XPUT  'localhost:9200/index-demo/test/1?pretty&pretty' -H  'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

刷新浏览器可以看到对应信息即可

四、node1服务器安装logstash

cd  elk

rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service

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

测试1: 标准输入与输出

logstash -e 'input{ stdin{} }output { stdout{} }'

测试2: 使用rubydebug解码

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'

测试3:输出到elasticsearch

logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.2.3:9200"]} }'

  查看结果:

http://192.168.2.3:9100

若看不到,请刷新!!!

五、logstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。标准的配置文件格式如下:

input (...)  输入

filter {...}   过滤

output {...}  输出

在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

input {

file{path =>"/var/log/messages" type =>"syslog"}

file { path =>"/var/log/apache/access.log"  type =>"apache"}

}

案例:通过logstash收集系统信息日志

chmod o+r /var/log/messages

vim /etc/logstash/conf.d/system.conf

input {

file{

path =>"/var/log/messages" 

type => "system"

start_position => "beginning"

}

}

output {

elasticsearch{

hosts =>["192.168.1.1:9200"]

index => "system-%{+YYYY.MM.dd}"

}

}

重启日志服务: systemctl restart logstash

查看日志: http://192.168.2.3:9100

六、node1节点安装kibana

cd elk

rpm -ivh kibana-5.5.1-x86_64.rpm

1.配置kibana

vim /etc/kibana/kibana.yml

server.port:5601  //Kibana打开的端口

server.host:"0.0.0.0" //Kibana侦听的地址

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

//和Elasticsearch 建立连接

kibana.index:".kibana"  //在Elasticsearch中添加.kibana索引

2.启动kibana

systemctl start kibana

3.访问kibana :

http://192.168.1.1:5601

首次访问需要添加索引,我们添加前面已经添加过的索引:system-*

七、企业案例:

1.收集httpd访问日志信息

2.在httpd服务器上安装logstash,参数上述安装过程,可以不进行测试

3.logstash在httpd服务器上作为agent(代理),不需要启动

4.编写httpd日志收集配置文件

vim /etc/logstash/conf.d/httpd.conf

input {

file{

path=>"/var/log/httpd/access_log" //收集Apache访问日志

type => "access" //类型指定为 access

start_position => "beginning" //从开始处收集

}

output{

elasticsearch {

hosts =>["192.168.8.134:9200"] // elasticsearch 监听地址及端口

index =>"httpd_access-%{+YYYY.MM.dd}" //指定索引格式

}

}

5.使用logstash命令导入配置:

logstash -f  /etc/logstash/conf.d/httpd.conf

使用kibana查看即可! http://192.168.2.3:5601   查看时在mangement选项卡创建索引httpd_access-*  即可!


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构学习 --4 串

数据结构学习 --1 绪论 数据结构学习 --2 线性表 数据结构学习 --3 栈,队列和数组 数据结构学习 --4 串 数据结构学习 --5 树和二叉树 数据结构学习 --6 图 数据结构学习 --7 查找 数据结构学习 --8 排序 本人学习记录使用 希望对大家帮助 不当之处希望大家帮忙纠正…

二极管:常用二极管封装

常用二极管封装 1、DO-41 2、DO-201AD 3、DO-35 4、LL-34 5、DO-214AC (SMA) 6、SMB

电脑数据丢失如何恢复?最常见的2种数据恢复方法!

大家使用电脑的时候是否有发生过不小心删除数据,或者数据不明丢失的情况呢?相信九成都是有的,那么当你的数据不小心删除或是丢失的话,有没有电脑数据恢复方法?其实很多人当自己电脑的数据丢失后,如果不是很…

一直傻傻分不清 count(*) count(id) count(1) 这次终于整明白了

COUNT(*)、COUNT(id) 和 COUNT(1) 是用于计算行数的 SQL 聚合函数,它们在某些方面有一些区别。 - COUNT(*):COUNT(*) 是一种特殊的语法,它返回结果集中的行数,不考虑任何列的值。它会将表中的每一行都计数,包括含有NU…

ToBeWritten之威胁情报

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…

【LeetCode】剑指 Offer <二刷>(1)

目录 前言: 题目:剑指 Offer 03. 数组中重复的数字 - 力扣(LeetCode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 前言: …

Charles调试请求

问题 需要调试特定的一个请求。 解决 选中调试 选中一个请求,右键菜单选中调试即可。 启用调试模式 勾选顶部控制按钮,启用调试模式,右下角会出现调试启用状态。 调试请求管理 通过顶部proxy➡️Breakpoint Settings…菜单&#xf…

企业诊断屋:在线小说企业如何用A/B测试赋能业务

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近两年来,在线小说领域业务发展“降速”,相较于几年前的快速扩张,2022年后国内在线小说企业步入瓶颈期。但与此同,新…

云端地球 | 在线云端建模,让建筑设计更高效

三维模型制作是建筑设计的重要环节,但人工建模需要耗费大量的时间和精力。随着计算机视觉和倾斜摄影测量技术的发展,实景三维模型的应用日益广泛,利用三维重建技术实现可视化、数字化和信息化转变,已逐渐成为建筑行业的共识。 陕西…

【二等奖方案】大规模金融图数据中异常风险行为模式挖掘赛题「Aries」解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束,大赛官方竞赛平台DataFountain(简称DF平台)正在陆续释出各赛题获奖队伍的方案思路,欢迎广大数据科学家交流讨论。 本方案为【大规模金融图数据中…

学生管理系统VueAjax版本

学生管理系统VueAjax版本 使用Vue和Ajax对原有学生管理系统进行优化 1.准备工作 创建AjaxResult类,对Ajax回传的信息封装在对象中 package com.grg.Result;/*** Author Grg* Date 2023/8/30 8:51* PackageName:com.grg.Result* ClassName: AjaxResult* Descript…

打造完美直播:深入解析人脸美颜SDK的算法与特性

在如今数字化的时代,直播已经成为了人们与世界互动的重要方式之一。而在众多直播平台中,吸引观众并提供高质量的视觉体验成为了至关重要的任务。其中,人脸美颜技术的应用对于提升直播质量和观众体验起到了不可忽视的作用。本文将深入解析人脸…

正中优配:h股是什么意思

跟着我国世界化程度的日益进步,越来越多的人开端瞩目“H股”,它到底是什么意思呢? H股(H share)是指在香港上市的我国企业股票,它是我国企业参与世界本钱商场的一种方法。在1990年代初期,我国为…

在CSDN的第128天:写博客是我对抗焦虑的工具

目录 机缘 收获 日常 成就 憧憬 致各位 机缘 机缘,我在CSDN应该有两个比较大的机缘 第一个机缘是在大一上的时候,加入了实验室的朋友们都在写博客,而我因为没加入实验室,一度非常焦虑。当时我很害怕,我害怕我自己…

月薪16K,从房地产转行5G网络优化工程师,他说:等风来,不如追风去!

杨绛先生曾说:“无论你上到人生的哪一层台阶,阶下有人仰望你,阶上有人俯视你,抬头自卑,低头自得;唯有平视,才能看见最真实的自己。” 李同学,湖北的某四线小城市,29岁&am…

【HSPCIE仿真】输入网表文件(5)基本仿真输出

仿真输出 1. 概述1.1 输出变量1.2 输出分析类型 2. 显示仿真结果2.1 .print语句基本语法示例 2.2 .probe 语句基本语法示例 2.3 子电路的输出2.4 打印控制选项.option probe.option post.option list.option ingold 2.5 .model_info打印模型参数 3. 仿真输出参数的选择3.1 直流…

如何跟进好客户,维护客户?

万事开头难,获取了客户资源后,必须进行有效的跟进和维护才有机会获得赢单。 客户跟进维护过程中的主要困境 基于以上困境,我向公司销售大佬取经,总结了以下几个适合销售小白的销售方法论: 本文所用工具:ht…

哈佛商学院教授:每个老板使用ChatGPT之类AI工具的理由

哈佛商学院教授Karim Lakhani表示,每个老板都应该使用生成式人工智能工具,生成式AI为老板提供了一种更高效的工作方式,在提高生产力、提高规模、与客户沟通以及促进销售、社交媒体内容更新和新产品开发等方面都有积极意义。 Karim Lakhani表…

分享一个影像切瓦片工具

当我们手上有很多无人机拍摄的影像,想切片后发布到内网可以用什么工具切片?亦或是自己制作的地图有没有什么工具可以切片后进行发布?想要解决这些问题,你可以好好看看这篇文章,本文将为你提供一种简单的切片方法&#…

信息安全——数字签名

一、数字签名背景 假定A发送一条包含认证码的消息给B,他们之间仍然可能存在争议,例如A可以否认发过该消息,B无法证明A确实发了该消息。另外B也可以伪造一个不同的消息,但声称是从A收到的。也就是说,虽然保证了信息的完…