ELK分别是
E是ElasticSearch日志存储
L是Logstash日志收集处理
K是Kibana可视化管理
环境准备
软件包下载地址
共使用三个虚拟机
三台机子都需要进行
[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日志存储
关闭防火墙,修改配置文件
开启服务
9200端口是浏览器访问的
9300是内部的数据同步
二、安装Kibana日志展示(可视化)
开启服务
端口启动比较慢,使用netstat -ntpl查看的时候可能不会显示,需要等一会
浏览器访问
成功效果显示
三、安装Logstach日志过滤
共开启三个会话
需要用的日志是用 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
安装logstash
找到 logstash 程序,并软链接到/usr/bin,这样启动就不用写绝对路径了
先别启动服务
开始测试
官方插件地址
插件内容都写进/etc/logstash/conf.d/app.log里面
读取日志 -- 插件
(就是将官方的内容复制进去,并修改成自己需要的配置)
内容都是从官网看的,然后修改的
输出日志 -- 插件
启动服务
指定刚才编写的文件路径
启动成功之后就是这样
写入一条日志到/var/log/test.log里面
过滤日志 -- 插件
切割字段
修改字段
删除字段
再次删除字段
更改时间
因为之前的时间数据有问题(多了个\r),我到这里的时候修改了数据
再次使用输出日志 -- 插件
将数据写入到elasticsearch中
将配置文件保存之后,将logstash终止(ctl+c),然后放在后台运行
使用以下命令看看有没有报错
最后没有报错就ctr+c终止
查看后台进程
再写入一条日志
可视化显示
创建索引模式
标签云图
写入两条不同name进行测试
刷新网页
出现次数越多,图越大
进行保存
饼图
数据表
仪表板
点击添加
到此就算结束了
建议从官网找,尽量别复制下面的,增加印象
[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}"
}
}