首页 > 其他分享 >实现高效的分布式日志收集与分析在淘客返利系统中的应用

实现高效的分布式日志收集与分析在淘客返利系统中的应用

时间:2024-07-22 18:59:17浏览次数:14  
标签:ELK 收集 淘客 Logstash Elasticsearch 返利 日志 logstash

实现高效的分布式日志收集与分析在淘客返利系统中的应用

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在本文中,我们将深入探讨如何在淘客返利系统中实现高效的分布式日志收集与分析。通过使用ELK(Elasticsearch、Logstash、Kibana)技术栈,我们可以有效地收集、存储和分析系统的日志数据,从而提升系统的可观测性和故障排查能力。

一、分布式日志收集的必要性

在分布式系统中,各个服务和模块分散在不同的服务器上,日志数据也相应地分散存储。为了能够对系统进行全面的监控和分析,需要一种能够统一收集和处理分布式日志的方案。ELK技术栈正是为了解决这一问题而设计的。

二、ELK技术栈的简介

ELK技术栈由以下三部分组成:

  1. Elasticsearch:一个分布式搜索和分析引擎,用于存储和查询日志数据。
  2. Logstash:一个数据收集引擎,用于从不同的数据源收集日志数据,并将其发送到Elasticsearch。
  3. Kibana:一个数据可视化平台,用于展示和分析存储在Elasticsearch中的日志数据。

三、ELK技术栈的部署

我们可以使用Docker来快速部署ELK技术栈。首先,编写一个Docker Compose文件:

version: '3.7'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
    environment:
      - discovery.type=single-node
    ports:
      - "9200:9200"
    networks:
      - elk

  logstash:
    image: docker.elastic.co/logstash/logstash:7.10.0
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    ports:
      - "5000:5000"
    networks:
      - elk

  kibana:
    image: docker.elastic.co/kibana/kibana:7.10.0
    ports:
      - "5601:5601"
    networks:
      - elk

networks:
  elk:
    driver: bridge

在这个Compose文件中,我们定义了三个服务:Elasticsearch、Logstash和Kibana,并将它们连接到同一个网络elk

四、Logstash配置

Logstash负责收集日志数据并将其发送到Elasticsearch。我们可以编写一个简单的Logstash配置文件logstash/pipeline/logstash.conf

input {
  beats {
    port => 5044
  }
}

filter {
  json {
    source => "message"
  }
}

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

在这个配置文件中,Logstash从Beats输入插件(如Filebeat)收集日志数据,将其解析为JSON格式,并发送到Elasticsearch中的taokefanli索引。

五、应用程序日志收集

为了收集Java应用程序的日志,我们可以使用Logback和Filebeat。首先,配置Logback将日志输出到文件:

<configuration>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>/var/log/taokefanli/application.log</file>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="info">
    <appender-ref ref="FILE"/>
  </root>

</configuration>

然后,配置Filebeat将日志文件发送到Logstash:

filebeat.inputs:
- type: log
  paths:
    - /var/log/taokefanli/*.log

output.logstash:
  hosts: ["localhost:5044"]

启动Filebeat后,它会监控日志文件的变化,并将日志数据发送到Logstash。

六、日志的查询与分析

部署和配置完成后,我们可以通过Kibana来查询和分析日志数据。在Kibana中,我们可以创建索引模式taokefanli-*,并使用Discover功能来实时查看日志数据。

我们还可以创建仪表板和可视化组件,用于展示关键指标,如系统错误率、响应时间等。例如,创建一个饼图展示不同类型的错误:

{
  "title": "Error Types",
  "type": "pie",
  "params": {
    "bucket": {
      "field": "level.keyword",
      "type": "terms"
    },
    "metrics": {
      "field": "count",
      "type": "count"
    }
  },
  "aggs": [
    {
      "id": "1",
      "type": "terms",
      "schema": "segment",
      "params": {
        "field": "log.level.keyword",
        "size": 5
      }
    }
  ]
}

七、日志告警

为了及时发现系统中的异常情况,可以配置基于Elasticsearch的告警系统。例如,使用Elastalert来监控日志数据并发送告警通知:

首先,安装Elastalert:

pip install elastalert

然后,配置一个简单的告警规则rules/error_rule.yaml

name: Error Alert
type: frequency
index: taokefanli-*
num_events: 10
timeframe:
  minutes: 5
filter:
- term:
    level: "ERROR"
alert:
- "email"
email:
- "[email protected]"

这个规则会在每5分钟内检测是否有超过10个错误日志,如果超过则发送邮件告警。

八、总结

通过使用ELK技术栈,我们可以高效地实现淘客返利系统中的分布式日志收集与分析。ELK不仅能够帮助我们集中管理和查询日志数据,还能通过可视化和告警机制提升系统的可观测性和故障排查能力。

本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

标签:ELK,收集,淘客,Logstash,Elasticsearch,返利,日志,logstash
From: https://blog.csdn.net/u011269762/article/details/140617291

相关文章

  • 如何减少 Docker 日志大小,有效节省磁盘空间
    Docker是一个强大的容器化平台,它允许开发者在一个独立的环境中运行应用程序。虽然Docker提供了很多便利,但在实际使用过程中,日志文件可能会迅速增长,占用大量的磁盘空间。本文将详细介绍如何减少Docker日志大小,从而有效节省磁盘空间。Docker日志机制Docker使用日志......
  • sql server 事务日志释放空间
    您收到的错误消息表明数据库'EastRiver'的事务日志已满,导致数据库操作失败。要解决这个问题,可以按照以下步骤操作:1.备份事务日志首先,备份事务日志以释放空间:BACKUPLOG[EastRiver]TODISK=N'C:\Backup\EastRiver_log.bak'GO2.收缩事务日志文件备份日志后,可以使用DBCC......
  • 若依Cloud操作日志
    能耗管理平台新增功能操作日志操作日志1.表结构实体类packagecom.mgiot.infra.entity.log;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;import......
  • ABP vNext—审计日志使用
    ABPvNext—审计日志关于审计日志开启审计日志如何自定义审计日志关于审计日志审计跟踪(也称为审核日志)是一个安全相关的时间顺序记录,记录这些记录的目的是为已经影响在任何时候的详细操作,提供程序运行的证明文件记录、源或事件。ABP提供了能够为应用程序交互自动记......
  • Windows生产设备日志采集工具
    永久免费:前往Gitee最新版本更新内容Winform全部切换到.NetFramework4.0.更符合大部分的自动化设备.Web提供.NetFramework4.0的运行时环境安装包Web打开时,若当前IP为设备,直接显示设备信息介绍用途:定时全量或增量采集工控机,办公电脑文件以及日志.(SCADA,Io......
  • 如何从命令行设置日志记录级别
    我使用argparse从命令行获取日志记录级别,然后将其作为logging.basicConfig的输入传递。然而,我试图实现这一点的方式不起作用。有什么建议吗?期望的行为,来自命令行:pythonmain.py-log=DEBUG期望的输出DEBUG:__main__:Debugisworking代码importloggingimp......
  • 机械学习—零基础学习日志(高数08——函数周期性)
    零基础为了学人工智能,真的开始复习高数函数的性质,开始新的学习!周期性:周期函数的合理运用就是,确定了最小周期T,以这个周期T在函数f(x)里面任意位置夹住的面积是相同的。(个人不权威表述,大概这个意思)张宇老师没有讲解第一个结论的证明,但是我还是有点疑惑的。所以,自己写了一......
  • nginx日志切割定时任务
    目录nginx进行日志切割的好处:实现步骤:1.给access.log日志文件重命名,并备份2.编写定时日志脚本     3.运行日志切割脚本4.将日志切割脚本加入crontab定时任务crontab定时任务配置讲解nginx进行日志切割的好处:便于管理和查询:随着时间的推移,Nginx日志文......
  • 玄机-第二章日志分析-mysql应急响应
    文章目录前言简介应急开始准备工作日志分析步骤1步骤2步骤3步骤4总结补充erro.log前言这里应急需要知道mysql提权的一些姿势,还有能够提权成功的前提。5金币就当复习一下了。这里考察的是mysql应急响应,我们应该是根据找flag的需求去就行,但是我做了之后发现......
  • 玄机-第二章日志分析-mysql应急响应
    目录前言简介应急开始准备工作日志分析步骤1步骤2步骤3步骤4总结补充mysql中的/var/log/mysql/erro.log记录上传文件信息的原因前言这里应急需要知道mysql提权的一些姿势,还有能够提权成功的前提。5金币就当复习一下了。这里考察的是mysql应急响应,我们应该是根据找flag......