前面做了关于ELK组件的各个实验,但是并没有真正的把各个组件结合起来做一个实验,现在使用一个脚本简单的生成日志,模拟生产不断产生日志的效果

一 流程说明

使用脚本产生日志,模拟用户的操作

日志的格式

[INFO]  -- :: [cn.success.dashboard.Main] -DAU||使用优惠卷|-- ::

日志的格式时"DAU" + userID + "|" + visit + "|"  +date

通过Filebeat读取日志文件的内容,并将内容发送给Logstash,,原因时需要对内容做处理

Logstash接收到内容后,进行处理,如分割操作,然后将内容发送到 Elasticsearch中

Kiana会读取 Elasticsearch中的数据,并且在 Kiana中进行设计 Dashboard,最后进行展示

后面的日志格式,图表,Dashboard都是自定义的

二 编一个日志的脚本

为了方便实验,脚本很简陋,只是一个输入工具,没有什么实际作用

2.1 日志内容如下

#!/bin/bash
visit_array=("浏览页面" "评论商品" "加入收藏" "加入购物车" "提交订单" "使用优惠卷" "领取优惠卷" "搜索" "查看订单")
visit_number=`head /dev/urandom | cksum | cut -c -`
id_number=`head /dev/urandom | cksum | cut -c -`
echo "[INFO] `date +%F` `date|awk '{print $4}'` [cn.success.dashboard.Main] - DAU|$id_number|${visit_array[$visit_number]}|`date +%F` `date|awk '{print $4}'`"

2.2 执行测试

简单执行一下,看一下效果

[root@node4 ~]# sh /opt/logs.sh
[INFO] -- :: [cn.success.dashboard.Main] - DAU||查看订单|-- ::
[root@node4 ~]# sh /opt/logs.sh
[INFO] -- :: [cn.success.dashboard.Main] - DAU||搜索|-- ::
[root@node4 ~]# sh /opt/logs.sh
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入收藏|-- ::
[root@node4 ~]# sh /opt/logs.sh
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入收藏|-- ::
[root@node4 ~]# sh /opt/logs.sh
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入购物车|-- ::

2.3 实际操作

然后写一个死循环,两秒执行一次,把这个输入一个日志文件里模拟

[root@node4 ~]# while
> :
> do
> sh /opt/logs.sh >> /var/log/elk-test.log
> sleep
> done

2.4 查看效果

[root@node4 ~]# tail -f /var/log/elk-test.log

[INFO] -- :: [cn.success.dashboard.Main] - DAU||评论商品|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入购物车|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入收藏|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入收藏|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入购物车|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入购物车|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入收藏|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||评论商品|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||提交订单|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||评论商品|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入收藏|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入购物车|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||评论商品|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU|||-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入购物车|-- ::
[INFO] -- :: [cn.success.dashboard.Main] - DAU||加入购物车|-- ::

基本达到一个日志的效果

三 配置filebeat

[root@node4 ~]# cd /usr/local/filebeat/

[root@node4 filebeat]# vi elk-test.yml

filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/elk-test.log
setup.template.settings:
index.number_of_shards:
output.logstash:
hosts: ["192.168.132.131:5044"]

四 配置logstash

4.1 初步配置

[root@node1 logstash]# vi elk-test.conf

input {
beats{
port => ""
}
}
filter{
mutate {
split => {"message" => "|"}
}
mutate {
add_field =>{
"UserId" => "%{[message][1]}"
"visit" => "%{[message][2]}"
"date" => "%{[message][3]}"
}
}
}
output {
stdout {codec => rubydebug}
}

先输出到控制台

[root@node1 logstash]# bin/logstash -f elk-test.conf

[--30T05::,][INFO ][org.logstash.beats.Server][main] Starting server on port:
[--30T05::,][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>}

root@node1 ~]# netstat -antlup|grep 5044

再启动filebeat

[root@node4 filebeat]# ./filebeat -e -c elk-test.yml

查看控制台的输出情况

4.2 把数据进行格式化配置

[root@node1 ~]# vim /usr/local/logstash/elk-test.conf

input {
beats{
port => ""
}
}
filter{
mutate {
split => {"message" => "|"}
}
mutate {
add_field =>{
"UserId" => "%{[message][1]}"
"visit" => "%{[message][2]}"
"DateTime" => "%{[message][3]}"
}
}
mutate{
convert => {
"UserId" => "integer"
"visit" => "string"
"DateTime" => "string"
}
}
}
output {
stdout {codec => rubydebug}
}

启动再看

数据处理完成

4.3 数据传到elasticsearch配置

[root@node1 logstash]# vim elk-test.conf

input {
beats{
port => ""
}
}
filter{
mutate {
split => {"message" => "|"}
}
mutate {
add_field =>{
"UserId" => "%{[message][1]}"
"visit" => "%{[message][2]}"
"DateTime" => "%{[message][3]}"
}
}
mutate{
convert => {
"UserId" => "integer"
"visit" => "string"
"DateTime" => "string"
}
}
}
output {
elasticsearch{
hosts => ["192.168.132.131:9200","192.168.132.132:9200","192.168.132.133:9200"]
}
}

启动

[root@node1 logstash]# bin/logstash -f elk-test.conf

使用elasticsearch head查看

4.4 ES查看原数据

这样就把所有数据收集到elasticsearch上

五  kibana配置

5.1 创建index patten

5.2 实时显示数据

5.3 创建一个以时间间隔的柱状图

详细步骤可参考前面的自定义图表https://www.cnblogs.com/zyxnhr/p/11954663.html

创建结果

保存

5.4 各个操作的饼图分布

添加一个饼图,依然选择logstash

左侧过滤

添加一个lable

添加前后显示效果

依次添加所有动作

添加完后效果

设置选项

结果如下

保存

5.5 添加一个数据表格

这样显示

在数据探索中进行保存,将各个操作的数据以表格的形式展示出来

5.6 制作dashboard

创建新的dashboard

调正一下界面。就可以得到下面的界面

调整名字

5.7 最终结果

保存

整个的实验完成

参考: https://www.bilibili.com/video/av67957955?p=64

ELK学习实验013:ELK的一个完整的配置操作的更多相关文章

  1. ELK学习实验004:Elasticsearch的简单介绍和操作

    一 集群节点 Elstaicsearch的集群是由多个节点组成都,通过cluster.name设置集权名称,比能切用与区分其他的集群,每个节点通过node.name指定节点 在Elasticsearc ...

  2. ELK学习实验015:日志的自定义index配置

    前面使用json格式收集了nginx的日志,但是再index的显示是filebeat-*,现在使用自定义的index进行配置 但是再使用filebeat的7.4版本以后,有一个巨坑,就是按照网络的很多 ...

  3. ELK学习实验001:Elastic Stack简介

    1 背景介绍 在我们日常生活中,我们经常需要回顾以前发生的一些事情:或者,当出现了一些问题的时候,可以从某些地方去查找原因,寻找发生问题的痕迹.无可避免需要用到文字的.图像的等等不同形式的记录.用计算 ...

  4. ELK学习实验014:Nginx日志JSON格式收集

    1 Kibana的显示配置 https://demo.elastic.co/app/kibana#/dashboard/welcome_dashboard 环境先处理干净 安装nginx和httpd- ...

  5. ELK学习笔记之ELK架构与介绍

    0x00 为什么用到ELK 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太 ...

  6. ELK学习实验002:Elasticsearch介绍及单机安装

    一 简介 ElasticSearch是一个基于Luncene的搜索服务器.它提供了一个分布式多用户能力全文搜索引擎,基于RESTful web接口,ElsticSearch使用Java开发的,并作为A ...

  7. ELK学习实验005:beats的一些工具介绍

    一 背景需求 Nginx是一个非常优秀的web服务器,往往Nginx服务会作为项目的访问入口,那么,nginx的性能保障就会变得非常重要,如果nginx的运行出现了问题就会对项目有较大的影响,所以,我 ...

  8. ELK学习实验012:Logstash的安装和使用

    一 logstash安装 1.1下载包 [root@node1 ~]# cd /usr/local/src/ [root@node1 src]# wget https://artifacts.elas ...

  9. ELK学习实验008:Kibana的介绍

    一 简介 Kiana是一款开源的数据分析和可视化平台,它是 Elastic Stack成员之一,设计用于和 Elasticsearch协作.您可以使用 Kiana对 Elasticsearch索引中的 ...

随机推荐

  1. mybatis分页插件pageHelper简单实用

    工作的框架spring springmvc mybatis3 首先使用分页插件必须先引入maven依赖,在pom.xml中添加如下 <!-- 分页助手 --> <dependency ...

  2. 「BZOJ1005」[HNOI2008] 明明的烦恼

    「BZOJ1005」[HNOI2008] 明明的烦恼 先放几个prufer序列的结论: Prufer序列是一种对有标号无根树的编码,长度为节点数-2. 具体存在无根树转化为prufer序列和prufe ...

  3. android学习——android项目的的目录结构

       然后我们看一下Helloword的程序目录: 我们可以看到 大致有的文件: 1. MainHelloWorld.java文件 2. R.java文件 3. android.jar文件 4. RE ...

  4. 关于Java语言for循环内外变量定义的问题

    今天看书时,看到一个代码,一个在循环外面没有用的变量,后即有了我的问题,在后面: 我的问题: 变量循环内定义,例如:while(true){String splitStr = null;}这“些”个s ...

  5. 在VirtualBox下安装linux操作系统

    目标:在linux服务器上部署Java开发的网站 工具 VirtualBox-4.3.8:下载后安装. linux系统镜像: Centos国内镜像文件下载地址: http://centos.ustc. ...

  6. POJ2752 Seek the Name, Seek the Fame 题解 KMP算法

    题目链接:http://poj.org/problem?id=2752 题目大意:给你一个字符串 \(S\) ,如果它的一个前缀同时也是它的后缀,则输出这个前缀(后缀)的长度. 题目分析:next函数 ...

  7. 谈谈数据库的 ACID(转)

    一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. 二.ACI ...

  8. JavaScript 字符串转为数字

    js中字符串转为数字主要4种,分别为转换函数,强制转换,js变量弱类型转换,正则表达式. 1.转换函数 JS中提供了两个转换函数parseInt()和parseFloat(),parseInt()将值 ...

  9. window10+python3.7安装tensorflow--gpu tensorflow 安装

    能安装GPU的前提是:1.显卡支持CUDA (1)右击我的电脑–属性 (2)打开设备管理器   (3)显示适配器 我的电脑是支持CUDA的 2.pip 版本 >= 8.1查看pip版本 :pip ...

  10. PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

    PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...