IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ELK从零搭建(filebeat+kafka+logstash+es+kibana) -> 正文阅读

[系统运维]ELK从零搭建(filebeat+kafka+logstash+es+kibana)

当系统规模比较大,模块非常多时,或者一些重要日志需要归档时,就需要有个日志统一管理平台。本人所在公司有个需求,边缘端的日志需要统一上传管理,方便后续问题定位。方案是边缘端定时打包日志上传到fastdfs,然后把url推送到业务端,业务根据url从fastdfs上获取到日志,解压缩到指定目录,filebeat获取到日志发生变化,然后解析发送到kafka,logstash监听kafka把日志存储到es里面,然后业务系统可以在界面查询。本文主要介绍EKL搭建,对于业务系统ES操作封装后续有时间介绍。

环境:filebeat(8.0.0)+logstash(8.0.0)+kafka(2.8.0)+es(7.14.0)+kibana(7.14.2)

一、filebeat搭建

1、从官网下载Download Filebeat ? Lightweight Log Analysis | Elastic,上传到服务器,进入上传目录,执行命令:tar -zxvf filebeat-8.0.0-linux-x86_64.tar.gz

2、修改配置文件filebeat.yml,只要配置文件路径和输出kafka

?

output.kafka:

? enabled: true

? hosts: ["127.0.0.1:9092"]

? topic: 'filebeat-logs'

? partition.round_robin:

??? reachable_only: false

? required_acks: 1

? compression: gzip

? max_message_bytes: 1000000

? username: demo

? password: demo@123

? sasl.mechanism: PLAIN

? client_id: filebeat202

说明:本人配置了kafka服务端连接需要登录验证,需要配置username/password/sasl.mechanism,如kafka不需要登录验证,则不需要配置这三个选项

3、启动filebeat,执行nohup ./filebeat -e -c filebeat.yml &

二、kafka搭建?

可参照前期写的kafka搭建

kafka服务端设置用户和密码登录及springboot访问实现_guaotianxia的博客-CSDN博客_登陆kafka

三、logstash搭建?

1、下载logstash (https://www.elastic.co/cn/downloads/logstash)上传到指定目录,并执行命令:tar -zxvf?logstash-8.0.0-linux-x86_64.tar.gz

2、创建logstash.conf文件,?可以cp logstash-sample.conf logstash.conf,添加如下内容

?

input {

#连接kafka,从kafka获取日志内容

? kafka {

??? bootstrap_servers => "127.0.0.1:9092"

??? group_id => "logstash_log_202"

??? client_id => "logstash1"

??? auto_offset_reset => "latest"

??? topics => ["filebeat-logs"]

??? #add_field => {"logs_type" => "grandhonor_log"}

??? codec => json { charset => "UTF-8" }

??? sasl_mechanism => "PLAIN"

??? security_protocol => "SASL_PLAINTEXT"

?sasl_jaas_config => "org.apache.kafka.common.security.plain.PlainLoginModule required username='hehe'? password='123456';"

? }

}

filter {

? ?#格式化@timestamp时间为年月,并赋值为indexmonth变量

???? ruby {

???????code => 'event.set("indexmonth", event.get("@timestamp").time.localtime.strftime("%Y%m"))'

???? }

??? grok {

? ? ? ?#解析日志内容,可匹配多种日志内容,获取日志时间、模块名、日志级别和内容。具体写法参照截屏图片,因为正则匹配csdn会无法显示,反斜杠都改为双反斜杠

??????? match => {

???????? "message" => "\\[%{TIMESTAMP_ISO8601:logTime}\\]\\s{0,}\\[%{DATA:moduleName}\\]\\s{0,}\\[%{LOGLEVEL:logLevel}\\]\\s{0,}%{GREEDYDATA:content}","\\[%{TIMESTAMP_ISO8601:logTime}\\]\\s{0,1}%{LOGLEVEL:logLevel}\\s{0,1}%{GREEDYDATA:content}"

??????? }

??? }

? #如果无法从日志内容解析到日志时间,则使用自带的时间戳

??? if ![logTime]{

?????? mutate {

???????? copy => { "@timestamp" => "logTime" }

????? }

??? }

? #如果获取到日志级别,格式化为小写

??? if [logLevel]{

?????? mutate {

???????? lowercase => ["logLevel"]

????? }

??? }

? #使用时间控件格式化时间,否则如es字段默认为text格式

??? date{

??????? match => ["logTime","yyyy-MM-dd HH:mm:ss.SSS","yyyy-MM-dd HH:mm:ss","ISO8601"]

??????? target => "logTime"

??????? locale => "cn"

?? }

??? grok {

? ? ? ?#解析日志路径,获取设备序列号

??????? match => {

???????? "log" => "%{GREEDYDATA}/%{WORD:deviceSn}-%{GREEDYDATA}\.log"

? ??????}

??? }

?? mutate {

? ? ? #添加临时字段,不会写入es

????? add_field => { "[@metadata][target_index]" => "logstash-log-%{+YYYY.MM}" }

? ? ?#重命名字段值

????? rename => ["@timestamp","reportTime"]

? ? #删除字段,不写入es

remove_field=> ["host","agent","ecs","tags","fields","@version","input","event","container","offset"]

?? }

}

output {

? elasticsearch {

??? hosts => ["http://192.168.103.202:9200"]

??? index => "logstash_log-%{indexmonth}"

??? #index => "%{[@metadata][target_index]}"

??? user => "elastic"

??? password => "123456"

? }

}

说明:在写grok,解析日志内容为结构化数据时,可以使用kibana的Dev tools进行测试,如下

四.es搭建

参照前期写的es搭建

linux环境skywalking搭建及项目应用_guaotianxia的博客-CSDN博客_linux安装部署skywalking

五、kibana搭建

1、从官网下载(Download Kibana Free | Get Started Now | Elastic),执行tar -zxvf ?kibana-7.14.2-linux-x86_64.tar.gz

2、进入config目录,修改kibana.yml配置文件

3、启动,执行命令:nohup ./kibana > /dev/null 2>&1 &

4、浏览器输入:http://192.168.103.202:5601,输入用户名和密码

?六、验证

使用kibana的dev tools,查询是否有日志写入

GET logstash_log-202204/_search
{?
? "size": 20,?
? "query": {
? ? "match_all": {}
? }
}

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:46:32  更:2022-04-15 00:48:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:32:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码