云端技术驾驭DAY04——Logstash安装部署及插件模块

往期回顾:
云端技术驾驭DAY01——云计算底层技术奥秘、云服务器磁盘技术、虚拟化管理、公有云概述
云端技术驾驭DAY02——华为云管理、云主机管理、跳板机配置、制作私有镜像模板
云端技术驾驭DAY03——云主机网站部署、web集群部署、Elasticsearch安装

日志分析系统ELK

  • 实验准备
主机名IP配置
logstash192.168.1.274vCPUs 8GiB内存
  • 项目架构图
    在这里插入图片描述

Logstash概述及安装

Logstash概述
  • 什么是Logstash
    – 是一个数据采集、加工处理以及传输的工具
  • Logstash特点
    – 所有类型的数据集中处理
    – 不同模式和格式数据的正常化
    – 自定义日志格式的迅速扩展
    – 为自定义数据源轻松添加插件
  • Logstash结构原理
    在这里插入图片描述
结构解释
input负责收集数据
filter负责处理数据
output负责输出数据
  • Logstash支持的数据类型
    – 布尔、字节、字符串、数值、数组、键值对
  • Logstash支持的判断方法
判断方法解释
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于
=~正则匹配
!~判断一个字符串是否不匹配给定的正则表达式
  • Logstash支持的逻辑判断
    – in、notin、and、or、nand、xor
安装Logstash
  • Logstash安装需要注意什么?
    – Logstash没有默认配置文件,需要手动配置
    – Logstash安装位置在/usr/share/logstash目录
    – Logstash配置文件安装在/etc/logstash目录下,由于程序找不到配置文件路径,需要在/usr/share/logstash目录下创建一个名为config的/etc/logstash的软连接
  • 安装部署
[root@logstash ~]# vim /etc/hosts
... ...
192.168.1.21    es-0001
192.168.1.22    es-0002
192.168.1.23    es-0003
192.168.1.24    es-0004
192.168.1.25    es-0005
192.168.1.27    logstash
[root@logstash ~]# dnf -y install logstash
[root@logstash ~]# ln -s /etc/logstash /usr/share/logstash/config

Logstash配置管理

配置文件管理
  • 最简单的配置文件写法
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
input { 
  stdin {}
}

filter{ 

}

output{ 
  stdout{}
}
[root@logstash ~]# /usr/share/logstash/bin/logstash   // 启动logstash,logstash会占用终端,可以输入数据
  • 验证配置
    – 用json格式输出数据
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
input { 
  stdin { codec => "json" }
}

filter{ 

}

output{ 
  stdout{ codec => "rubydebug" }
}
[root@logstash ~]# /usr/share/logstash/bin/logstash
... ...
 {"a":"1", "b":"2", "c":"3"}   // 输入

// 输出内容
 {
             "a" => "1",
    "@timestamp" => 2024-02-16T12:21:47.330Z,
      "@version" => "1",
          "host" => "logstash",
             "c" => "3",
             "b" => "2"
}

插件管理

  • 使用插件
    – Logstash对数据的处理依赖插件,上面的配置文件使用了logstash-input-stdin和logstash-output-stdout两个插件
  • 管理命令 /usr/share/logstash/bin/logstash-plugin
命令解释
list查看插件
install安装插件
uninstall删除插件
Input模块
  • file插件
    – file插件是应用最广泛的插件之一,主要用途是从本地文件中获取数据,并实时监控文件的变化
  • file插件语法格式
input {
  file { 参数 => "参数值" }
}
  • 使用案例:使用file插件监控文件变化
[root@logstash ~]# touch /tmp/{a,b}.log
[root@logstash ~]# echo 'string 01' >>/tmp/a.log
[root@logstash ~]# echo 'string 02' >>/tmp/a.log
[root@logstash ~]# echo 'string 03' >>/tmp/a.log
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
input {
  file {
    path => ["/tmp/a.log", "/tmp/b.log"]
  }
}

filter{
}

output{
  stdout{ codec => "rubydebug" }
}

// 启动程序,等待数据输出
[root@logstash ~]# /usr/share/logstash/bin/logstash

// 在另一个终端模拟写入日志
[root@logstash ~]# echo 'string 04' >>/tmp/b.log
[root@logstash ~]# echo 'string 05' >>/tmp/a.log
  • 高级使用案例:
// 删除默认书签文件
[root@logstash ~]# rm -rf /var/lib/logstash/plugins/inputs/file/.sincedb_*
[root@logstash ~]# cat /tmp/{a.log,b.log} >/tmp/c.log
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
input {
  file{
    path => ["/tmp/c.log"]   // 指定需要监控的文件路径
    start_position => "beginning"   // 第一次读取文件位置【begining|end】
    sincedb_path => "/var/lib/logstash/sincedb"   // 记录读取文件的位置,以便在重启Logstash时可以从上次停止的地方继续读取
  }
}

filter{

}

output{
  stdout{ codec => "rubydebug" }
}

[root@logstash ~]# /usr/share/logstash/bin/logstash
Filter模块
  • grok插件
    – 解析各种非结构化的日志数据插件
    – grok使用正则表达式把非结构化的数据结构化再分组匹配
  1. 准备测试数据
// 从 web 服务器查找一条日志写入到日志文件
[root@logstash ~]# echo '60.26.217.109 - admin [13/Jan/2023:14:31:52 +0800] "GET /es/ HTTP/1.1" 200 148209 "http://127.70.79.1/es/" "curl/7.61.1"' >/tmp/c.log

// 调试技巧:设置路径为 /dev/null 可以多次反复测试
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
input {
  file {
    path => ["/tmp/c.log"]
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
// filter { 不做任何修改 }
// output { 不做任何修改 }

[root@logstash ~]# /usr/share/logstash/bin/logstash
  1. 匹配IP地址测试
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
// input { 不做任何修改 }

filter {
  grok {
    match => { "message" => "(?<userIP>((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d))" }
  }
  grok {
    match => { "message" => "%{IP:clientIP}" }
  }
}

// output { 不做任何修改 }

[root@logstash ~]# /usr/share/logstash/bin/logstash
  1. 使用宏格式化日志
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
// input { 不做任何修改 }

filter{ 
  grok {
    match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    remove_field => ["message"]
  }
}

// output { 不做任何修改 }

[root@logstash ~]# /usr/share/logstash/bin/logstash
Output模块
  • elasticsearch 插件
[root@logstash ~]# vim /etc/logstash/conf.d/my.conf
# input { 不做任何修改 }
# filter { 不做任何修改 }

output{ 
  stdout{ codec => "rubydebug" }
  elasticsearch {
    hosts => ["es-0002:9200","es-0003:9200"]   // elasticsearch节点的地址
    index => "weblog-%{+YYYY.MM.dd}"   // 存储数据索引的名称,按日期生成索引
  }
}

[root@logstash ~]# /usr/share/logstash/bin/logstash   // 看到终端有数据可以读取出来
  • 通过head插件查询验证
    – 浏览器访问DAY03配置的elasticsearch页面,验证数据写入 Elasticsearch 成功
  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值