前面做了关于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. LightOJ 1341 Aladdin and the Flying Carpet【整数分解】

    题目链接: http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1341 题意: 给定一个数,将其拆分成两个数的乘 ...

  2. Python 基础 --初识Python

    python的起源 python是一门 解释型弱类型编程语言. 特点: 简单.明确.优雅 python的解释器 CPython. 官方提供的. 内部使用c语言来实现 PyPy. 一次性把我们的代码解释 ...

  3. HZOJ 礼物

    其实是比较简单的一道期望状压dp,考试时一直在想数组表示概率,然而最后出的数总是小于一,于是无奈的把第一个点判掉放弃了其他点. 设f[i]为状态为i时到全部买到的期望次数,$f[i]=∑f[j]*p[ ...

  4. DECLARE

    -- 修正用プログラム DECLARE    CURSOR c_adv_fee_detail IS        SELECT adv_fee.fee_mgmt_num,                ...

  5. PageProxy分页的实现

    PageProxy是Ext.Net实现的一种分页方式,PageProxy通过实现OnReadData事件来完成分页. <ext:Store runat=" OnReadData=&qu ...

  6. 自然语言处理课程(二):Jieba分词的原理及实例操作

    上节课,我们学习了自然语言处理课程(一):自然语言处理在网文改编市场的应用,了解了相关的基础理论.接下来,我们将要了解一些具体的.可操作的技术方法. 作为小说爱好者的你,是否有设想过通过一些计算机工具 ...

  7. redux【react】

    首先介绍一下redux就是Flux的一种进阶实现.它是一个应用数据流框架,主要作用应用状态的管理 一.设计思想: (1).web应用就是一个状态机,视图和状态一一对应 (2).所有的状态保存在一个对象 ...

  8. Python--day24--复习

  9. Python--day27--设计模式

    设计模式:单例模式

  10. tf.nn.embedding_lookup()的用法

    函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...