linux————ELK(日志收集系统集群)

news2024/10/6 18:09:10

一、概述

一、为什么要使用ELK

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

        如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。

二、ELK作用

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

二、组件

一、elasticsearch

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

特点

        分布式
        零配置
        自动发现
        索引自动分片
        索引副本机制
        Restful风格接口
        多数据源
        自动搜索负载

二、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数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。

三、kibana

        日志可视化

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

三、架构类型

ELK

        es
        logstash
        kibana

ELKK

        es
        logstash
        kafka
        kibana

ELFK

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

ELFKK

        es
        logstash
        filebeat
        kafka
        kibana

EFK

        es
        logstash
        fluentd
        kafka
        kibana

四、构建ELk集群

        基于Java环境yum install -y java-1.8.0-OpenJDK)  

        虚拟机        内存4G  四核

        已经下载好的         tar包

一、环境配置

        关闭防火墙,selinux 

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

node1:192.168.100.10/24

        hostnamectl set-hostname node1

        vim /etc/hosts

                192.168.1.1  node1

                192.168.1.2  node2

node2:192.168.100.11/24

        hostnamectl set-hostname node2

        vim /etc/hosts

                192.168.1.1  node1

                192.168.1.2  node2

二、安装node1与node2节点的elasticsearch

        安装        rpm -ivh elasticsearch-5.5.0.rpm

配置                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"】 //群集发现通过单播实现

启动elasticsearch服务

node1和node2

systemctl start elasticsearch

查看节点信息

192.168.100.10:9200

192.168.100.11:9200

三、在node1安装elasticsearch-head插件

安装node

cd elk

tar xf node-v8.2.1.tar.gz

cd node-v8.2.1

./configure && make  -j4&& make install

拷贝命令

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

安装elasticsearch-head

cd elk

tar xf elasticsearch-head.tar.gz

cd elasticsearch-head

npm install(npm 由node包生成

修改elasticsearch配置文件
vim /etc/elasticsearch/elasticsearch.yml
#action.destructive_requires_name:true 
http.cors.enabled: true  //开启跨域访问支持,默认为false
http.cors.allow-origin:"*"  //跨域访问允许的域名地址
重启服务: systemctl restart elasticsearch

启动elasticsearch-head

cd /root/elk/elasticsearch-head

npm run start &

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

访问: 192.168.100.10:9100

测试

在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.1.1:9200"]} }'

  查看结果:192.168.100.10: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.100.10:9200"]

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

}

}

重启日志服务: systemctl restart logstash

查看日志: 192.168.100.10:9100

六、node1节点安装kibana

cd elk

rpm -ivh kibana-5.5.1-x86_64.rpm

配置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索引

启动kibana

systemctl start kibana

访问kibana : 192.168.100.10:5601

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

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

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

相关文章

C++ ASIO 实现异步套接字管理

Boost ASIO(Asynchronous I/O)是一个用于异步I/O操作的C库,该框架提供了一种方便的方式来处理网络通信、多线程编程和异步操作。特别适用于网络应用程序的开发,从基本的网络通信到复杂的异步操作,如远程控制程序、高并…

vulnhub靶机Solstice

下载地址:https://download.vulnhub.com/sunset/solstice.ova 主机发现 arp-scan -l 扫描端口 nmap --min-rate 10000 -p- 192.168.21.147 这里端口有太多于是我就整理了一下 nmap --min-rate 10000 -p- 192.168.21.147 -oA ports 数据整理 cat ports.nmap|grep…

【不良人】官方声明:天罡传电影拍摄三部,第七季仅一句话说明

Hello,小伙伴们,我是小郑继续为大家深度解析画江湖系列! 距离画江湖之不良人第六季完结已经有一段时间了,就在小郑都快忘了这部动漫的时候,突然官方发声了。先是透露了关于画江湖之不良人番外电影天罡传的情报,之后又明…

Ansible自动化运维之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…

windows 搭建 swoole开发环境(官网已支持)

第一步下载:swoole官网下载 swoole-cli-v5.0.3-cygwin-x64.zip 只支持 64 位的系统 第二步解压到指定文件夹:E:\phpstudy_pro\WWW\swoole-cli-v5.0.3-cygwin-x64 第三步设置环境变量:把解压后的文件夹下的 bin 目录路径配置到系统的 Path 环境…

茶凳浅谈-使用QCA7006AQ 让电动汽车成为智慧电网的一环

前言: 智慧电网一词相信大家都已经耳熟能详。智能电网是指采用先进的电力技术和设备、信息与通信技术,系统地实现电网的智能型监测、分析和决策控制,支持新型能源发电和灵活优质用电,具有高自动化水平,并有一定自愈、互动功能的安…

百万级单细胞多组学数据集成

写在前面 这是一篇粉丝来稿,文章题目为“Multi-omics integration in the age of million single-cell data”,于2021年发表于《Nature Reviews Nephrology》上,影响因子为42.439。由于单细胞目前快速的买入了百万级、多组学的时代&#xff…

用WebGPU实现基于物理的渲染

推荐:用 NSDT编辑器 快速搭建可编程3D场景 最近,我花了相当多的时间在 WebGPU 中使用 IBL(基于图像的照明)编写 PBR(基于物理的渲染)渲染器。 PBR 本身并没有什么新奇之处。 这是一项自 2014 年以来就存在的…

Python装饰器(decorators)

本文改编自以下文章:Decorators in Python 装饰器是一个很强大的工具,它允许我们很便捷地修改已有函数或者类的功能,我们可以用装饰器把另一个函数包装起来,扩展一些功能而不需要去修改这个函数代码。 预备知识 在Python中&…

度矩阵、邻接矩阵

度矩阵(degree matrix) 度矩阵是对角阵,对角上的元素为各个顶点的度,顶点vi的度表示和该顶点相关联的变得数量。 在无向图中,顶点vi的度d(vi)N(i)(即与顶点相连的边的数目)有向图中&#xff0…

六年北漂:一个普通程序员的成长之路

微信推送规则改了,星标一下公众号,否则可能收不到推送 收拾完东西,终于忙完一天了,坐在桌子前,梳理一下我的北漂经历。 中午刚下飞机,到了住的地方,直接开始下雨,瞬间感受到一股闷热…

揭秘:房产小程序如何助力售楼业务提升

随着移动互联网的发展,小程序已经成为各行各业进行营销推广的利器之一。对于房地产行业而言,小程序同样具有巨大的潜力。下面,我们将介绍如何使用乔拓云平台开发一款吸睛的房地产营销小程序。 第一步:注册登录乔拓云平台&#xff…

Linux基础--文件描述符

目录 一.C文件接口 1.hello.c写文件 2.hello.c读文件 3.输出信息到显示器 二、系统文件I/O 0.系统调用和库函数 1.open 2.write 3.read 4.close 三、文件描述符fd 1. 0 & 1 & 2 2.文件描述符分配规则 3.重定向 4.使用dup2系统调用 四、FILE 一.C文件接…

为了做好农业,拼多多请来顶尖农业专家当独立董事

8月29日,拼多多发布截至6月30日的2023年第二季度业绩报告。财报显示,拼多多集团今年第二季度收入为523亿元,同比增长66%,远超市场预期。 财报发布的同时,拼多多还宣布,其董事会已聘任荷兰瓦赫宁根大学终身…

【办公自动化】使用Python批量处理Excel文件并转为csv文件

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

一文了解聚合支付

第四方支付是相对于第三方支付而提出的概念,又被称为“聚合支付”是指通过聚合第三方支付平台、合作银行、等多种支付工具进行的综合支付服务。 简言而之,把支付接口聚合到一个平台上面,来给商家或者个人来提供支付服务。 第四方支付集中了各…

为什么深度网络(vgg,resnet)最后都不使用softmax(概率归一)函数,而是直接加fc层?

这个问题很简单,并不是没有使用softmax,而是没有显式使用softmax。 随着深度学习框架的发展,为了更好的性能,部分框架选择了在使用交叉熵损失函数时默认加上softmax,这样无论你的输出层是什么,只要用了nn.…

【GO】LGTM_Grafana_Tempo(2) --- 官方用例改后实操

最近在尝试用 LGTM 来实现 Go 微服务的可观测性,就顺便整理一下文档。 Tempo 会分为 4 篇文章: Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架使用发送数据到 tempo 根据官方文档实操跑起来 tempo,中间根…

测试理论与方法----软件测试工作流程第一个环节:提取测试需求

测试理论与方法 一、软件测试流程 1、软件测试定义 软件:程序数据文档:不仅仅包含应用程序,还应该包含和这个程序相关的数据,文档 软件测试:测试的对象:应用程序,数据,文档 软件…

java八股文面试[数据库]——慢查询优化

分析慢查询日志 直接分析慢查询日志, mysql使用explain sql语句进行模拟优化器来执行分析。 oracle使用explain plan for sql语句进行模拟优化器来执行分析。 table | type | possible_keys | key |key_len | ref | rows | Extra EXPLAIN列的解释: ta…