ELK日志存储+日志采集+日志展示

 

ELK分别是

                E是ElasticSearch日志存储

                L是Logstash日志收集处理

                K是Kibana可视化管理

环境准备

软件包下载地址

Index of /elasticstack/yum/elastic-7.x/7.8.1/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.8.1/

共使用三个虚拟机

e11975071b73cf96539cd668e971b446.png

三台机子都需要进行

d7b550f4770a117320696e88bc1de6d8.png

[root@es01 ~]# cat system.sh 
#!/bin/bash

rm -rf anaconda-ks.cfg
echo ">>>>>>>>永久关闭防火墙<<<<<<<<"
systemctl stop firewalld && systemctl disable firewalld &> /dev/null

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

echo ">>>>>>>>>>更改阿里源<<<<<<<<<<<"
curl -o /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
yum makecache &> /dev/null

echo ">>>>>>>>>安装相关工具<<<<<<<<<<"
yum install -y vim net-tools wget unzip lrzsz &> /dev/null

echo ">>>>>>>>>>时间同步<<<<<<<<<<<<"
yum install -y ntp &> /dev/null
systemctl start ntpd && systemctl enable ntpd &> /dev/null
ntpd -gq
date
sleep 8
date

 

一、安装elasticsearch日志存储

8037e304f35b937be7a74a5b5c056fe8.png

89bfbb7d631789ddcaf3ef64278e531b.png

 

 关闭防火墙,修改配置文件4a65afef4b9cb008bee16e30392551a7.png

ed5f6622ceb7ffd9d1ab352dc1a9d82d.png

 

开启服务

adfd8481fe0df9d79e49998a82b17c04.png

9200端口是浏览器访问的

9300是内部的数据同步

7ba4d9cba65c45db4a1d8e7e98263eb4.png

9be46388b9356eb3bd92b8c6aefbd83b.png

 fbe4eaed9d07e067734741571bf9f268.png

 


 

二、安装Kibana日志展示(可视化)

0164003a532e4b9d9a8382f5af9886ec.png

c7d8735d42b05192e0dee6bde910306a.png

96288b5a19e826f7508adce6c29e4a2b.png

7db5f8c394f1d808395433b3c89dc477.png

 

开启服务

f90cabef686fbfdfcc455757eeced509.png

端口启动比较慢,使用netstat -ntpl查看的时候可能不会显示,需要等一会

6c180d9d5de2369791056f2f4d6d446b.png

浏览器访问

646f0ec78b9c2abba35641af9f326ba4.png

163d8efa25601813d6603042da96e671.png

946482a08ef600058e45db288fdb0cbc.png

9205b65be77d38c40bf79eef95c6bd02.png

成功效果显示

52e7b4a041bf69de25b898c39c48f8dc.png


 

三、安装Logstach日志过滤

共开启三个会话45bda69e69106af63e79e19f0a2f1358.png

需要用的日志是用 python 生成的

import datetime
import random

# 生成不同的随机数字后缀和随机字符串后缀
suffixes = [str(i) for i in range(1000)]
strings = ['apple', 'banana', 'cherry', 'date', 'eggplant']

# 打开一个文件
with open('test.log', 'w', newline='') as file:
    for i in range(20000):
        # 生成2024年1月1日到2024年3月29日内的随机时间
        start_date = datetime.datetime(2024, 1, 1)
        end_date = datetime.datetime(2024, 3, 29)
        random_timestamp = start_date + (end_date - start_date) * random.random()

        timestamp = random_timestamp.strftime("%Y-%m-%d %H:%M:%S")
        random_num_suffix = random.choice(suffixes)
        log = f"[INFO]{timestamp} [cn.test,dashboard.Main]- DAU|{random_num_suffix}|SKY|{timestamp}\n"
        file.write(log)

 后面日志过滤操作截图里面的时间不对后面多了个\r,对时间修改的时候会出问题

上面生成日志代码已经更改了

安装

安装jdk

139aeffa02198e55cfe19571971603a9.png

 安装logstash

777bfa6eb476c4377cfb2c4a145767de.png

b4be4a5c3f9200ffe8d3b281ffe4b066.png

46a1268bdcc087a54f5400f9e38769b9.png

找到 logstash 程序,并软链接到/usr/bin,这样启动就不用写绝对路径了

dac4f49cd70e29093935670e0f349cf7.png

先别启动服务

 

开始测试

官方插件地址 

Input plugins | Logstash Reference [8.13] | Elastichttps://www.elastic.co/guide/en/logstash/current/input-plugins.html

6d8ac2ac15ce0a385f637ef020232297.png

 插件内容都写进/etc/logstash/conf.d/app.log里面

读取日志  -- 插件

(就是将官方的内容复制进去,并修改成自己需要的配置)

ee58134fab0f41516150a1f88146b674.png

49cd8ec43404a8eed5dacb3965ef1838.png

内容都是从官网看的,然后修改的

 

输出日志 -- 插件

7263396568f8742fdd5e0d7126e9d0f0.png

68576bf0f85f43a1766de7aa51d39e3d.png

6f5fe63d43e66a1066c45f34a5b8d58e.png

启动服务

 

指定刚才编写的文件路径

083aeeed673665df894131ba31a091cf.png

启动成功之后就是这样

ced512b2038912cea2731d2ccf76788f.png

4cb3acef43a13ec8164d8ac1bcccb9a8.png

 

45bda69e69106af63e79e19f0a2f1358.png

 写入一条日志到/var/log/test.log里面

3deee8a1667cd03d0a93d42ac4f173f1.png

101204d57f04ee5b223052a7e53aa0e1.png

 

过滤日志 -- 插件

9fda49de6fb14d7cb5f8e61149283ea9.png

6af04c8a5d322cd48a30a1342b2096cf.png

 切割字段

55fae959010b67db1086fe2519d73871.png

c4456ff29367f69fb68104f01d2816ee.png

34059ddcc3e1c57f101c156a499f3840.png

 修改字段

fdbead9ae515a96d39f85e8c83b115a4.png

39ec29e97cf41ad1f362c3e9c4a9f0d6.png

a83dce4c477c9d951d3b8e432759965a.png

删除字段

12a5dafc7bf7f5f95c353aa80d4fef3f.png

9239ef48c165417b99cec680290c83b2.png

3c1d43e847881b694d7a91845a24d22a.png

664cd91f21f90e5f88f0df300da3cc6b.png

再次删除字段

ba769f82fb424629033f89c3927b34e2.png

454eb1b800ac5af691d6579def9158b1.png

510b36490f497abde6b5d63ffabab85c.png

 

更改时间

因为之前的时间数据有问题(多了个\r),我到这里的时候修改了数据

5f98f2c76b2aecc2e3abe76409d9f675.png

4692e2d3e0657795538069433dca78af.png

7c9cd89fbe01167996ffd8127d13a0ef.png

83345ad3ebac93273b2acd92f3ef4d08.png

 


再次使用输出日志 -- 插件

将数据写入到elasticsearch中

36ddc2a15132aa2df065de6d3f6ab32c.png

996afa8b1b8c55c6d7203965586deb26.png

7f147dd43daa97cb1310194f34320580.png

 将配置文件保存之后,将logstash终止(ctl+c),然后放在后台运行

c00ae722ad56408edefc64e0e50b1840.png

使用以下命令看看有没有报错

149250b8969a1f6be11a79a9e5ff4507.png

 最后没有报错就ctr+c终止

173d4d72e5bd7be680696996029ac270.png

查看后台进程

c672fbd7c2458f951792180854ecc33e.png

 

再写入一条日志

a8e5177db1e88ac03844df2557a65e72.png

 

 

可视化显示

337e3fd7704a2d911055aa805ffee9ef.png

创建索引模式

ad974f2f063698dc529c47616301f9ac.png

844b1d30cac955d12a5a16eb26e09c8a.png

15475ed404de4732bf0107ff53c539a7.png

7fb17a8e483e60cc36faa26f93a7dad3.png

 

9bc44039e52cb54c2c4a7bc4dff99386.png

bcdfd02534d92e22b328bc2c89dc184c.png

e3a875b2283f71310be25cc0665192f9.png

ffe4de96a1a0765f7d188a837398cfa2.png

标签云图 

7558dc7fd2877dc38b6c7ce442617f99.png

 写入两条不同name进行测试

8189c80e5bbe78810c4f33567f878938.png

刷新网页

出现次数越多,图越大

67e207e32b19847d13cf799b6662c11c.png

进行保存

5a074101586694d01e61e7203c739c99.png

 饼图

ec16f614e4383fe979f236b2028692c3.png

1283118f78a4687c3161b348aa822ef6.png

数据表

1ac8966bba040aa3f712c4464c7f9469.png

仪表板

2309649eb6ca4bb0af07c64d195a5cc3.png 点击添加

3f5793e0348acfb722f565fdcefdb638.png

92e713ca9c2061ae07329acaa71c1800.png

到此就算结束了

 

建议从官网找,尽量别复制下面的,增加印象

[root@logstash conf.d]# cat app.log 
#读取日志
input {
  file {
    path => "/var/log/test.log"
    start_position => beginning
    stat_interval => 3
   }
}

#日志过滤
filter {
    mutate {
        split => { "message" => "|" }
        add_field => { "UserID" => "%{[message][1]}" }
        add_field => { "Name" => "%{[message][2]}" }
        add_field => { "Date" => "%{[message][3]}" }
        remove_field => [ "message","host","@version" ]
    }
    date {
        match => [ "Date", "yyyy-MM-dd HH:mm:ss" ]
        target => "@timestamp"
    }
}

#输出日志
output {
    elasticsearch {
        hosts => "192.168.200.10:9200"
        index => "test_log-%{+YYYY.MM.dd}"
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SKY慕雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值