Ricardo的博客

我本逍遥一散人

ELK 日志分析系统的搭建与基础使用

1. 概述

服务端

日志分析平台ELK是由Elasticsearch、Logstash和Kibana三个服务组成,Elasticsearch负责日志存储并提供搜索功能,Logstash负责日志收集,Kibana提供Web查询操作界面。

客户端

ELK日志推送客户端这里我们采用Filebeat,Filebeat通过ELK提供的api自动创建索引与数据流,然后推送日志数据到服务端。

接下来本门将介绍服务端和推送客户端的安装和配置。

2. 搭建ELK

使用docker compose进行安装ELK组件,在github上搜索docker-elk,选择第一个项目
wei xin jie tu 20220810203604 - ELK 日志分析系统的搭建与基础使用
选择main分支复制链接通过git下载(推荐),也可以通过wget下载压缩包,链接:https://github.com/deviantony/docker-elk.git

git clone https://github.com/deviantony/docker-elk.git

下载后进入目录

elasticsearch文件夹是elasticsearch配置文件
kibana文件夹是kibana配置文件
logstash文件夹是logstash配置文件
setup文件用于初始化.env中配置的elasticsearch用户名信息
.env文件为elasticsearch用户名信息

先修改配置文件,修改语言为中文。

cd docker-elk
vim kibana/config/kibana.yml

##修改kibana语言,编辑配置i18n.locale,或者在末尾新增
i18n.locale: "zh-CN"
##创建持久性密钥
xpack.encryptedSavedObjects.encryptionKey: '32位秘钥'

接下来在docker-compose.yml文件目录下执行以下命令

docker-compose build
docker-compose up

等待上述步骤完成之后在浏览器输入 http://服务器ip:5601

注意

这里需要提前打开几个端口,5601、9200、5044、9300

端口开放之后应该是可以正常访问的,如下图

wei xin jie tu 201220810203604 - ELK 日志分析系统的搭建与基础使用

初始默认账号密码为 elastic changeme

余下的后面再回来配置,接下来将介绍下载和配置Filebeat客户端

2. 搭建Filebeat

安装

从elastic官网下载最新的Filebeat rpm包,官网链接:https://www.elastic.co/cn/downloads/beats/filebeat
复制最新版下载链接,我这里是8.3.3,开始安装
代码

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.3.3-x86_64.rpm
rpm -ivh filebeat-8.3.3-x86_64.rpm

安装完成后查询安装目录

rpm -qc filebeat

如下图
wei xin jie tu 20220810211137 - ELK 日志分析系统的搭建与基础使用
编辑Filebeat配置文件

vim /etc/filebeat/filebeat.yml

配置input

为了手动配置Filebeat(代替用模块),你可以在filebeat.yml中的filebeat.inputs区域下指定一个inputs列表。

列表时一个YMAL数组,并且你可以指定多个inputs,相同input类型也可以指定多个。例如:

filebeat.inputs:
- type: log
  enabled: true
  paths: #文件读取路径,一个input可以有多个
    - /www/wwwroot/dev/project/runtime/*/*/*/*.log
    - /var/log/*
  # 配置input识别字段
  fields:
    index: dev
  # 用于控制Filebeat如何扩多行处理日志消息
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after
- type: log
  enabled: true
  paths:
    - /www/wwwroot/project/runtime/*/*/*/*.log
  fields:
    index: test
  multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after

配置项

paths

例如:/var/log//.log 将会抓取/var/log子目录目录下所有.log文件。它不会从/var/log本身目录下的日志文件。如果你应用recursive_glob设置的话,它将递归地抓取所有子目录下的所有.log文件。

recursive_glob.enabled

允许将扩展为递归glob模式。启用这个特性后,每个路径中最右边的被扩展为固定数量的glob模式。例如:/foo/*扩展到/foo, /foo/, /foo/,等等。如果启用,它将单个扩展为8级深度*模式。这个特性默认是启用的,设置recursive_glob.enabled为false可以禁用它。

然后配置索引模板

在filebeat.yml配置文件的setup.template区域指定索引模板,用来设置在Elasticsearch中的映射。如果模板加载是启用的(默认的),Filebeat在成功连接到Elasticsearch后自动加载索引模板。

# 自定义索引必须要配置的一个参数,索引生命周期管理ilm默认开启,开启时默认索引名只能为filebeat-*;
setup.ilm.enabled: false

#模板的名字。默认是filebeat。Filebeat的版本总是跟在名字后面,所以最终的名字是 filebeat-%{[beat.version]}
setup.template.name: "xjd-dev-log"
# 模板的模式。默认模式是filebeat-*
setup.template.pattern: "xjd-*"
# 覆盖存在的模板
setup.template.overwrite: true
# 启用模板加载
setup.template.enabled: true

配置output

指定Elasticsearch作为output,让Filebeat通过Elasticsearch提供的HTTP API向其发送数据。

其中

index

索引名字。(PS:意思是要发到哪个索引中去)。默认是"filebeat-%{[beat.version]}-%{+yyyy.MM.dd}"(例如,"filebeat-6.3.2-2017.04.26")。如果你想改变这个设置,你需要配置 setup.template.name 和 setup.template.pattern 选项。如果你用内置的Kibana dashboards,你也需要设置setup.dashboards.index选项。

indices

索引选择器规则数组,支持条件、基于格式字符串的字段访问和名称映射。如果索引缺失或没有匹配规则,将使用index字段,如下

output.elasticsearch:
  # ES服务端ip,可以同时向多个服务端推送
  hosts: ["elk服务端ip:9200"]
  # ES的账号和密码
  username: "elastic"
  password: "cahngeme"
  index: "xjd-%{[fields.index]}-*"
  indices:
    - index: "xjd-dev-%{+yyyy-MM-dd}"
      when.equals:
        fields:
          index: "dev"
    - index: "xjd-test-%{+yyyy-MM-dd}"
      when.equals:
        # 和inputs里面的配置对应
        fields:
          index: "test"

配置Kibana端点

setup.kibana:
  host: "elk服务端ip:5601"

至此独立索引配置编辑成功,更多配置请参考文章:https://www.cnblogs.com/hanease/p/16029992.html

配置好以后,执行下面的命令

# 命令加载 Kibana 仪表板。如果仪表板已设置,请省略此命令。
sudo filebeat setup

如下图

wei xin jie tu 20220810215011 - ELK 日志分析系统的搭建与基础使用

# 启动 filebeat 服务
sudo service filebeat start

然后,在kibana的管理页面中就可以看到我们创建的索引和索引模板了。

首页 - 管理 - Stack Management - 数据 - 索引管理

wei xin jie tu 20220810215156 - ELK 日志分析系统的搭建与基础使用

3. 配置数据面板

创建索引模式

wei xin jie tu 20220810215449 - ELK 日志分析系统的搭建与基础使用

创建完成之后可以创建对应的查询和可视化面板了

wei xin jie tu 20220810215156 1 - ELK 日志分析系统的搭建与基础使用

至此ELK系统就完成部署了,可以设计自己的自定义可视化

wei xin tu pian 20220810220947 - ELK 日志分析系统的搭建与基础使用

jenkins 安装踩坑记录

上一篇

每日一句优化sql之慢sql查询

下一篇
评论
发表评论 说点什么
还没有评论
215
0