PB级强大日志收集智能分析系统-LCA

log-collect-ai-analytics

介绍

PB级日志收集智能分析系统-LCA

  • 快速部署:部署丝滑,管理方便,有web后台管理。
  • 高效的数据采集:LCA 支持多种数据源,无论是服务器日志、应用日志还是网络设备日志,都能一键配置,快速部署。
  • 灵活的数据处理:比起传统的elk更加灵活,而且还集成了日志分析和告警,内置强大的数据处理功能,包括过滤、聚合、关联等,让您轻松应对复杂的数据处理需求,除了按配置好的目录收集日志还提供了api接口实时调用,吞吐率高。
  • 直观的数据可视化:通过丰富的图表和仪表板,LCA 让数据分析变得更加简单直观,让您一目了然地了解业务状况。
  • 智能告警机制:实时监控关键指标,一旦发现异常立即触发告警,确保问题第一时间得到解决。
  • 安全可靠:web管理后台访问控制策略,保障您的数据安全无忧。

    git地址:日志收集智能分析系统-LCA
软件架构

在这里插入图片描述

通过在运维平台上配置日志收集项,或者通过api接口调用推送日志,logagent从etcd中获取要收集的日志信息从业务服务器读取日志信息,发往kafka,logtransfer负责从kafka读取日志,写入到Elasticsearch中,通过Kibana进行日志检索。loganalysis将安装规则分析日志,将告警,报错日志信息推给企业微信。

  1. 可实时收集常用的软件的日志,比如nginx,项目系统,当每次添加一个需要收集的日志文件时可以实时进行收集,还可以实时收集指定目录下所有按时间切分的日志例如:/logs/2024-07-01.log,/admin/lum-2024-07-02.log
  2. 可以通过api调用主动推送日志到日志分析系统(需要支持5000RPS/S)
  3. 可以对收集的日志进行分析,智能分析,然后按规则告警(nginx状态不是200,php文件报错)
  4. 实现如阿里sls一般查询日志
    在这里插入图片描述
安装教程

etcd安装

Etcd 安装配置

etcd 是一个分布式、高可用的一致性键值存储系统,提供可靠的分布式键值存储、配置共享和服务发现等功能。
etcd 可以用于存储关键数据和实现分布式调度,在现代化的集群运行中能够起到关键性的作用。
etcd 安装配置都非常简单,可以安装在大多数主流平台,比如 Linux、Windows、MacOS等。

1. Linux 安装 etcd
Linux 安装 etcd 有三种方式:yum安装、二进制安装和源码安装。

1.1 yum 安装
在 shell 中执行安装命令。

yum -y install etcd
执行结果:

Downloading packages:
etcd-3.3.11-2.el7.centos.x86_64.rpm |  10 MB  00:00:07     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : etcd-3.3.11-2.el7.centos.x86_64  1/1 
  验证中      : etcd-3.3.11-2.el7.centos.x86_64  1/1 
已安装:
  etcd.x86_64 0:3.3.11-2.el7.centos                                                                                 
完毕!
可执行文件 etcd 和 管理工具 etcdctl 均被安装在 /usr/bin 下。

配置文件位于 /etc/etcd/etcd.conf,我们可以使用 vi 进行编辑。

默认的工作目录位于 /var/lib/etcd。

设置 etcd 为系统服务:

$ systemctl enable etcd
启动运行 etcd:

$ systemctl start etcd
 

1.2 二进制安装
到 etcd 的 github 地址,下载二进制安装包。

etcd 下载地址:https://github.com/etcd-io/etcd/releases/。

以 etcd3.3.1 为例:

wget https://github.com/etcd-io/etcd/releases/download/v3.3.1/etcd-v3.3.1-linux-amd64.tar.gz 
如果 github 速度慢,可以使用华为镜像, 下载地址:https://mirrors.huaweicloud.com/etcd/。

wget https://mirrors.huaweicloud.com/etcd/v3.3.1/etcd-v3.3.1-linux-amd64.tar.gz
tar 包解压后,里面包含可执行文件 etcd 和 管理工具 etcdctl :

tar zxvf etcd-v3.3.1-linux-amd64.tar.gz
将 etcd、etcdctl 复制到 /usr/bin 下。然后创建工作目录,编写配置文件 etcd.conf.yaml。

mkdir /var/lib/etcd
cd /var/lib/etcd
vi etcd.conf.yaml
例如配置文件内容如下:

name: "etcd-node"
data-dir: "/var/lib/etcd"
listen-peer-urls: "http://0.0.0.0:2380"
listen-client-urls: "http://0.0.0.0:2379"
advertise-client-urls: "http://127.0.0.1:2379"
启动运行 etcd:
$ nohup etcd --config-file=/var/lib/etcd/etcd.conf.yaml &
 
1.3 测试验证
查看版本:
etcdctl version  

Elasticsearch安装

Elaticsearch,简称为 ES, ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。

Elasticsearch是一个分布式、可扩展、近实时的高性能搜索与数据分析引擎。Elasticsearch基于Apache Lucene构建,采用Java编写,并使用Lucene构建索引、提供搜索功能。Elasticsearch的目标是让全文搜索功能的落地变得简单。
使用 docker-compose 构建es集群环境


version: '3'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02
      - cluster.initial_master_nodes=es01,es02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
 
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01
      - cluster.initial_master_nodes=es01,es02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata02:/usr/share/elasticsearch/data
    networks:
      - esnet
 
volumes:
  esdata01:
  esdata02:
 
networks:
  esnet:
    driver: bridge

Kafka安装

kafka是一款分布式的基于发布/订阅模式的消息队列,是目前比较主流的消息中间件。

version: "3"
services:
 zookeeper:
  image: wurstmeister/zookeeper
  ports:
   - "2181:2181" 
 kafka:
  image: wurstmeister/kafka
  hostname: kafka
  ports:
   - "19004:19004"  
   - "9092:9092" 
  environment:
   TZ: CST-8
   KAFKA_BROKER_ID: 3
   KAFKA_ADVERTISED_HOST_NAME: kafka
   KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
   KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:19004
   KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9092,OUTSIDE://120.79.5.112:19004
   KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
   KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
  volumes:
   - /var/run/docker.sock:/var/run/docker.sock
  links:
   - zookeeper

部署logAgent

mkdir -p /opt/go_build/log-analysis/logAgent
cd /opt/go_build/log-analysis/logAgent
vim /opt/go_build/log-analysis/logAgent/etc/config.ini

[center]
address = 172.19.12.60:80

[kafka]
address = 172.19.12.60:9092
chan_max_size=100000

[etcd]
address = 172.19.12.60:2379
timeout = 5
collect_log_key = /logagent/%s/collect # 收集的日志的key

[log]
filePath = /opt/go_build/log-analysis/logAgent/logs
filename = logagent
# 日志级别 trace,debug,info,warning,error,fatal,panic
loglevel = info,warning,error,fatal,panic
# 最长保存多少天
max_age = 7

在这里插入图片描述

部署logTransfer

mkdir -p /opt/go_build/log-analysis/logTransfer
cd /opt/go_build/log-analysis/logTransfer

vim /opt/go_build/log-analysis/logTransfer/etc/config.ini

[kafka]
address = 172.19.12.60:9092
topic = ai_nginx,ai_api
group = logCollect

[es]
address = 172.19.12.60:9200
max_chan_size = 100000
nums = 16

[log]
filePath = /opt/go_build/log-analysis/logTransfer/logs
filename = logtransfer
# 日志级别 trace,debug,info,warning,error,fatal,panic
loglevel = info,warning,error,fatal,panic
# 最长保存多少天
max_age = 7

在这里插入图片描述

部署api

vim /opt/go_build/log-analysis/api/etc/config.ini

[center]
address = 172.19.12.60:80

[kafka]
address = 172.19.12.60:9092
chan_max_size=100000

[etcd]
address = 172.19.12.60:2379
timeout = 5
collect_log_key = /logagent/%s/collect # 收集的日志的key

[log]
filePath = /opt/go_build/log-analysis/api/logs
filename = api
# 日志级别 trace,debug,info,warning,error,fatal,panic
loglevel = info,warning,error,fatal,panic
# 最长保存多少天
max_age = 7

在这里插入图片描述

部署analysis

vim /opt/go_build/log-analysis/analysis/etc/config.ini

[center]
address = 172.19.12.60:80

[kafka]
address = 172.19.12.60:9092
chan_max_size=100000

[etcd]
address = 172.19.12.60:2379
timeout = 5
collect_log_key = /logagent/%s/collect # 收集的日志的key

[log]
filePath = /opt/go_build/log-analysis/analysis/logs
filename = logagent
# 日志级别 trace,debug,info,warning,error,fatal,panic
loglevel = info,warning,error,fatal,panic
# 最长保存多少天
max_age = 7

[es]
address = 172.19.12.60:9200
max_chan_size = 100000
nums = 16
index = ai_api,ai_nginx

[redis]
host = 127.0.0.1
port = 6379
pwd =

[wechat]
qyurl = https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=0601b729-3f92-4486-8230-bb572fda3075

在这里插入图片描述

部署logmanager

vim /opt/go_build/log-analysis/logmanager/conf/app.conf

# 服务器基础配置
# 应用程序名称
appname = logManager
# 服务端口
httpport = 8083
# 运行模式 dev/prod
runmode = prod
# 是否启用session
sessionon = true

# mysql相关配置信息
mysql_host = 172.19.12.60
mysql_port = 3306
mysql_user = logmanager
mysql_pass = LPY5mjjTB4iEAP6E
mysql_db   = logmanager

# redis相关配置
redis_host = 172.19.12.60
redis_port = 6379
redis_db   = 0
redis_password =

# etcd相关配置
etcd_host = 172.19.12.60
etcd_port = 2379

#kibana
kibana_host = 172.19.12.60:5601

在这里插入图片描述

使用说明
  • 日志收集
    通过把需要收集的日志文件或者日志文件通配符配置到etcd,logAgent会实时自动收集好需要收集的日志。
    [
    {“path”:“/data/wwwlogs/preapi_maxengine_cn_access_nginx.log”,“topic”:“ai_nginx”},
    {“path”:“/data/wwwroot/maxengine/storage/logs/lumen-Y-M-D.log”,“topic”:“ai_api”}
    ]
  • api调用
    通过调用 http://msgapi.c4eee.cn/send 这个接口可以实时把日志写入分析系统当中
    事例:curl -X POST “http://msgapi.c4eee.cn/send” -H “Content-Type: application/x-www-form-urlencoded” -d “topic=ai_api&data=你的日志内容”
  1. 登录
    演示地址 服务器配置2核4G 轻量应用 大家手下留情拜托🙏🏻

http://manage.c4eee.cn/
账号:admin
密码:admin在这里插入图片描述
2. 配置收集
在这里插入图片描述

  1. 分析查询
    在这里插入图片描述

  2. 告警
    在这里插入图片描述

必读系列

一款比ELK更强大,更好用的日志收集分析告警系统

备注

下载好安装程序,按照文档部署好,即可使用了,如遇问题可留言评论,我会解答,也可直接联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值