elk stack部署自动化日志收集分析平台

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: elk stack部署自动化日志收集分析平台

流程说明


  • 应用APP生产日志,用来记录用户的操作
  • 通过Filebeat读取日志文件中的内容,并且将内容发送给Logstash,原因是需要对内容做处理
  • Logstash接收到内容后,进行处理,如分割操作,然后将内容发送到Elasticsearch中
  • Kibana会读取Elasticsearch中的数据,并且在Kibana中进行设计Dashboard,最后进行展示


Docker 部署 elk

先决条件

修改系统内存内核参数

vim /etc/sysctl.conf
vm.max_map_count=262144

运行内存要大于4G


pull + run

docker pull sebp/elk
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -itd --name elk sebp/elk

修改logstash配置文件

 1、进入elk容器
docker exec -it elk /bin/bash
 2、修改配置文件 改为如下
vi /etc/logstash/conf.d/02-beats-input.conf

这里的logstash接收到filebeat发来的日志,将message切割等数据处理操作,之后再将处理好的数据发送给elasticsearch

input {
        beats {
                port => "5044"
        }
}
filter {
        mutate {
                split => {"message"=>"|"}
        }
        mutate {
                add_field => {
                "userId" => "%{[message][1]}"
                "visit" => "%{[message][2]}"
                "date" => "%{[message][3]}"
                }
        }
        mutate {
                convert => {
                "userId" => "integer"
                "visit" => "string"
                "date" => "string"
                }
        }
}
output {
  elasticsearch {
    hosts => [ "192.168.135.10:9200"]
    index => ["logstash-wxf-demo-shopping"]
  }
}

仅保留02-beats-input.conf,别的要么改名要么删除,我这里是改名

root@6643ff42f735:/etc/logstash/conf.d# ls
02-beats-input.conf  10-syslog.conf.bak  11-nginx.conf.bak  30-output.conf.bak

退出容器

exit


开启服务

编写服务

我这里用go编写的一个程序模拟

package main
import (
  "fmt"
  "math/rand"
  "os"
  "strconv"
  "time"
)
func main() {
  for i := 0; i < 5; i++ {
    go LogCal()
    time.Sleep(time.Second)
  }
  select {}
}
func LogCal() {
  for {
    businessList := []string{"浏览页面", "评论商品", "加入收藏", "加入购物车", "提交订单", "使用优惠券", "领取优惠券", "搜索", "查看订单"}
    t := time.Now()
    rand.Seed(time.Now().UnixNano())
    userId := rand.Intn(9000000) + 1000000
    visit := businessList[rand.Intn(9)]
    date := fmt.Sprintf("%d-%d-%d %d:%d:%d", t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second())
    time.Sleep(time.Second * time.Duration(rand.Intn(5)+5))
    result := "DAU|" + strconv.Itoa(userId) + "|" + visit + "|" + date + "\n"
    LogInfo(result)
  }
}
func LogInfo(result string) {
  t := time.Now()
  orderTime := fmt.Sprintf("%d-%d-%d %d:%d:%d", t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second())
  pre := "[INFO] " + orderTime + " [Demo] - "
  result = pre + result
  filePath := "/usr/local/Demo/abc.log"
  file, err := os.OpenFile(filePath, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0666)
  if err != nil {
    fmt.Printf("open file err=%v\n", err)
    return
  }
  defer file.Close()
  file.WriteString(result)
}

配置filebeat的yml文件

vi Demo.yml


填写如下内容,将收集到的日志发送给logstash

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/Demo/*.log
  fields:
    form: Demo-Shopping
  fields_under_root: true
setup.template.settings:
  index.number_of_shards: 1
  index.number_of_replica: 0
output.logstash:
  hosts: ["192.168.135.10:5044"]

运行顺序

docker restart elk
go run main.go
./filebeat -e -c Demo.yml


进入Elasticsearch-head查看数据

没有Elasticsearch-head去下载这个插件即可

可以看到我们想要的date,visit,userid都收集到了


进入Kibana创建数据看板

http://192.168.135.10:5601/

创建索引



创建柱形图

下面那个,上面的是饼图


选择数据源



创建饼图

选择数据源



右上角Save

创建数据表格


右上角Save

制作Dashboard仪表盘



最后保存即可

效果展示



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
30天前
|
运维 监控 数据挖掘
应用研发平台EMAS产品常见问题之将阿里后台的日志落到我们后台失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
2月前
|
并行计算 Linux 计算机视觉
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
71 0
|
2月前
|
资源调度 测试技术 Linux
一款接口自动化神器—开源接口测试平台Lim(Less is More)
一款接口自动化神器—开源接口测试平台Lim(Less is More)
126 2
|
2月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
223 0
|
3月前
|
人工智能 自然语言处理 安全
【AI 现况分析】AI 如何帮助开发者完成自动化测试
【1月更文挑战第27天】【AI 现况分析】AI 如何帮助开发者完成自动化测试
|
2月前
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
234 1
|
9天前
|
消息中间件 存储 运维
更优性能与性价比,从自建 ELK 迁移到 SLS 开始
本文介绍了 SLS 基本能力,并和开源自建 ELK 做了对比,可以看到 SLS 相比开源 ELK 有较大优势。
54276 5
|
1月前
|
监控 Shell 持续交付
利用Shell脚本自动化员工电脑监管软件的部署流程
在企业管理中,对员工的电脑活动进行监管是一项重要任务。而为了实现这一目标,部署监管软件是必不可少的。本文将介绍如何利用Shell脚本来自动化部署员工电脑监管软件的流程。我们将演示如何使用Shell脚本来自动下载、安装和配置监管软件,并且在部署完成后自动启动服务。
131 4
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
2月前
|
机器学习/深度学习 人工智能 DataWorks
人工智能平台PAI问题之日志报错误如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
53 0
人工智能平台PAI问题之日志报错误如何解决