ELK日志分析系统部署文档

news2024/9/21 13:26:48

一、ELK说明

ELK是Elasticsearch(ES) + Logstash + Kibana 这三个开源工具组成,官方网站: The Elastic Search AI Platform — Drive real-time insights | Elastic

简单的ELK架构

ES: 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。

Kibana: 可以对 Elasticsearch 进行可视化,还可以在 Elastic Stack 中进行导航,这样便可以进行各种操作了,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。

Logstash: 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。一般用在日志的搜集、分析、过滤,支持大量的数据获取方式。

Filebeat:收集文件数据。

二、基础环境

1. 准备以下几台机器:

主机

服务器角色

主机系统

软件版本

es-node1

Elasticsearch(搜索引擎)

Centos7

Elasticsearch:7.15.5

es-node2

Elasticsearch(搜索引擎)

Centos7

Elasticsearch:7.15.5

es-node3

Elasticsearch(搜索引擎)

Centos7

Elasticsearch:7.15.5

kibana

Kibana(界面展示)

Centos7

Kibana:7.15.5

logstash

Logstash(日志处理)

Centos7

Logstash:7.15.5

filebeat

Filebeat(日志收集)

Centos7

Filebeat:7.15.5

2. 关闭selinux

3.主机之间同步时间

三、Elasticsearch集群部署

3.1 前提准备

3.1.1 安装包下载

https://www.elastic.co/cn/downloads/past-releases#elasticsearch 进行下载相应的产品版本,点击“Download”后选择需要的方式包进行下载,本文以linux 二进制方式进行部署

3.1.2 创建用户及授权(注:每个节点都需要操作)

ElasticSerach要求以非root身份启动,在每个节点创建用户及用户组

1

2

groupadd elasticsearch

useradd elasticsearch -g elasticsearch

解压安装包并附所属权

tar -xvzf elasticsearch-7.17.5-linux-x86_64.tar.gz -C /home/elasticsearch

chown -R elasticsearch:elasticsearch /home/elasticsearch/elasticsearch-7.17.5

在每个节点上创建数据data和logs目录:

1

2

mkdir -p /data/elasticsearch/{data,logs}

3.1.3 java环境

配置环境变量

## 在/etc/profile 下添加

## set java environment

JAVA_HOME=/home/elasticsearch/elasticsearch-7.17.5/jdk

CLASSPATH=$JAVA_HOME/lib/

PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

使环境变量生效并验证

1

2

source /etc/profile

java -version

3.1.4 内存不能锁定问题(可选)

1

2

3

4

## 在配置 ElasticSearch 服务过程中,我们一般要设置 bootstrap.memory_lock 为 true,避免内存数据被交换到 SWAP 分区中。

cat /etc/systemd/system.conf |grep DefaultLimitMEMLOCK

## 需要修改为:

DefaultLimitMEMLOCK=infinity

注:需要重启机器

3.1.5 修改vm.max_map_count

修改一个进程可以拥有的VMA(虚拟内存区域)的数量

vim /etc/sysctl.conf 调整:

vm.max_map_count=262144

执行:sysctl -p 生效

3.2 配置

3.2.1 修改elasticsearch配置文件

配置elasticsearch.yml文件说明:

node.name: node-1 #每个节点不一样
 
#节点是否具有成为主节点的资格
node.master: true
 
#节点是否存储数据
node.data: true
 
#ES 数据保存目录
path.data: /data/elasticsearch/data
 
#ES 日志保存目
path.logs: /data/elasticsearch/logs
 
#服务启动的时候锁定足够的内存,防止数据写入
swapbootstrap.memory_lock: true
 
#监听 
IPnetwork.host: 0.0.0.0
 
#监听端口
http.port: 9200
 
#集群中 node 节点发现列表
discovery.seed_hosts: ["10.10.100.110", "10.10.100.111","10.10.100.112"]
 
#集群初始化那些节点可以被选举为 
mastercluster.initial_master_nodes: ["10.10.100.110", "10.10.100.111","10.10.100.112"]
 
#一个集群中的 N 个节点启动后,才允许进行数据恢复处理,默认是 1
gateway.recover_after_nodes: 2
 
####设置是否可以通过正则或者_all 删除或者关闭索引库,
####默认 true 表示必须需要显式指定索引库名称,
####生产环境建议设置为 true,
####删除索引库的时候必须指定,否则可能会误删索引库中的索引库。
action.destructive_requires_name: true

node1节点

1

grep -Ev "^$|^[#;]"  elasticsearch.yml

node2节点

grep -Ev "^$|^[#;]"  elasticsearch.yml

node3节点

1

grep -Ev "^$|^[#;]"  elasticsearch.yml

3.2.2 修改JVM内存限制

1

2

3

4

在vm.options 中调整:

-Xms2g

-Xmx2g #最小和最大内存限制

#官方配置文档最大建议 30G 以内,默认是1G,根据实际情况进行调整

3.2.3 开启跨域访问支持(可选)

1

2

3

4

5

在elasticsearch.yml文件中配置一下2个参数:

#开启支持跨域访问

http.cors.enabled: true

#指定允许访问范围

http.cors.allow-origin: "*"

3.3 启动并验证

1

2

3

## 启动:

su - elasticsearch

./elasticsearch-7.17.5/bin/elasticsearch -d

查看监听端口,分别是9200和9300:

netstat -ant|grep 9200

netstat -ant|grep 9300

浏览器访问查看:

查看集群健康状态:http://IP:9200/_cluster/health?pretty

查看集群详细信息:http://IP:9200/_cluster/state?pretty

查看索引列表:http://IP:9200/_cat/indices?v

四、Kibana部署

本文复用ES的一台机器进行部署,实际环境可以单独部署一台。

4.1 前提准备

4.1.1 安装包下载

在https://www.elastic.co/cn/downloads/past-releases#kibana 进行下载相应的软件版本

4.1.2 创建用户及授权

1

2

groupadd kibana

useradd kibana -g kibana

4.1.3 解压安装包并附所属权

1

tar -xzvf kibana-7.17.5-linux-x86_64.tar.gz -C /home/kibana

chown -R kibana:kibana /home/kibana/kibana-7.17.5-linux-x86_64

4.1.4 创建日志目录并附所属权

1

2

mkdir -p /data/kibana/logs/

chown -R kibana:kibana /data/kibana

4.2 配置

1

grep -Ev "^$|^[#;]" kibana.yml

4.3 启动并验证

使用kibana账号启动

4.3.1 启动

1

2

su - kibana

./kibana-7.17.5-linux-x86_64/bin/kibana --allow-root > /data/kibana/logs/kibana.log &

停止:

kill -9 `lsof -i :5601 -t`

4.3.2 验证

1

2

## 端口验证:

netstat -ant|grep 5601

浏览器验证:http:IP:5601

五、Logstash部署

5.1 准备

5.1.1 安装包下载

通过官网下载链接: https://www.elastic.co/cn/downloads/past-releases#logstash 选择对应的版本

5.1.2 创建数据和日志目录

1

mkdir -p /data/logstash/{logs,data}

5.2 配置

5.2.1 修改logstash配置文件(可以不修改)

1

grep -Ev "^$|^[#;]" logstash.yml

5.2.2 创建监控日志的配置文件

Logstash可以直接采集日志文件;本文采用filebeat收集日志,logstash处理日志
input {
  beats {
    port => 5044
    codec => plain{ charset => "GB2312" }
  }
}
filter{
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:logdate}" }
  }
  date {
    match => [ "logdate","ISO8601"]
    target => "@timestamp"
  }
  mutate{
    remove_field => "logdate"
  }
}
output {
  elasticsearch {
    hosts => ["10.211.55.5:9200"]  # 定义es服务器的ip
    index => "emqx-%{+YYYY.MM.dd}" # 定义索引
  }
}

grep -Ev "^$|^[#;]" logstash.conf

5.3 启动

## 默认端口:9600,执行命令后需要等一会儿启动成功。

./bin/logstash -f config/logstash.conf &

5.4 验证

六、Filebeat部署

6.1准备

官网下载安装包链接:https://www.elastic.co/cn/downloads/past-releases#filebeat ,选择对应版本

6.2 配置

filebeat安装后,只需要配置好监控的日志。包含input和output 等。
filebeat.inputs:
# 第一个输入
- type: log
#是否启用
  enabled: true
  # 自定义标签
  tags: ["qgzhdc-px-data-node"]
  # 收集日志的文件路径,可以使用通配附*等
  paths:
    - /home/bagpipes/emqx/log/emqx.log.*
    - /home/bagpipes/emqx/log/abc.*.txt
  encoding: GB2312
  ####fields 自定义字段与值,这个在检索日志时使用,
  ###会给每条日志增加此key与value,能够标识出日志来源。
  fields:
    ip: 10.211.55.5
  # fields_under_root如果为false,则fields下的key会挂到fields下,true的话
  fields_under_root: true
  multiline:
    type: pattern
    pattern: '^\d{4}-\d{1,2}-\d{1,2}T\d{1,2}:\d{1,2}:\d{1,2}.\d{6}\+\d{1,2}:\d{1,2}'
    negate: true
    match: after
output.logstash:
  hosts: ["10.211.55.5:5044"]

6.3 启动

1

2

## 后台启动:

nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &

6.4 验证

进程启动验证:

七、完整应用验证

首先所有服务都正常启动。

7.1 Filebeat验证

如何通过filebeat数据正常处理完成并输出符合预期的内容,可以采用输出到控制台进行调试验证,在filebeat.yml配置文件中调整输出为控制台方式:

7.2 Logstash验证

如何通过logstash数据正常处理完成并输出符合预期的内容,可以采用输出到控制台进行调试验证,在logstash.conf 配置文件中调整输出为控制台方式:

7.3 ES验证

通过地址api查看是否有相应的索引自动创建并占用存储:http://IP:9200/_cat/indices?v

7.4 Kibana验证

7.4.1 创建索引模版

按照截图中,进入management 中,选择“stack management”

7.4.2 查看索引

点击“Discover”

进入日志查询界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

适用于618/7xx芯片平台 AT开发 远程FOTA升级指南教程

简介 AT版本的远程升级主要是对AT固件版本进行升级,实际方式为通过合宙官方IOT平台升级或者使用自己搭建的服务器进行升级服务。 该文档教程流程适用于 618/716S/718P 芯片平台的Cat.1模块 合宙IOT平台配置 升级日志 —— 如何查看 升级日志 —— 响应码列表 响应…

算法之判断对称二叉树

94. 二叉树的中序遍历101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:fa…

国产大模型速度测评,第一名竟然是它。。。

原文首发:国产大模型速度测评,第一名竟然是它。。。经过一段时间调研,我选择了一些国内比较知名的大模型进行速度测评,按照模型参数量及API调用价格,分为了三个档次,分别对应经济型、高性价比型、旗舰型。h…

【Django】网上蛋糕商城后台-商品管理

1.商品管理功能 当管理员点击商品管理时,发送服务器请求 path(admin/goods_list/, viewsAdmin.goods_list), # 处理商品列表请求 def goods_list(request):try:type request.GET["type"]except:type 0try:ym request.GET["ym"]except:ym …

【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列预测|附代码数据

全文链接:https://tecdat.cn/?p37019 分析师:Haopeng Li 随着我国股票市场规模的不断扩大、制度的不断完善,它在金融市场中也成为了越来越不可或缺的一部分。 【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列…

Haproy服务

目录 一.haproxy介绍 1.主要特点和功能 2.haproxy 调度算法 3.haproxy 与nginx 和lvs的区别 二.安装 haproxy 服务 1. yum安装 2.第三方rpm 安装 3.编译安装haproxy 三.配置文件详解 1.官方地址配置文件官方帮助文档 2.HAProxy 的配置文件haproxy.cfg由两大部分组成&…

【MQTT(3)】开发一个客户端,QT-Android安卓手机版本

手机版本更加方便 生成安卓库 参考了这个代码 在编译Mosquitto以支持安卓平台时,主要涉及到使用Android NDK(Native Development Kit)进行交叉编译。环境的准备参考之前的博客【QT开发(17)】2023-QT 5.14.2实现Andr…

jenkins添加ssh证书

1、生成ssh密匙:windows生成ssh密匙-CSDN博客 2、添加添加ssh凭证:jenkins路由地址为:/manage/credentials/store/system/domain/_/ 点击添加凭证 选择第二个,将生成的私匙 id_rsa 里边的内容赋值到密钥,id留空自动…

使用小波分析实现文字种类自动识别

文章目录 数据简介开始实验小波分解得出结果结果分析误差分析 数据简介 各找一篇中文,日文,韩文,英文,俄文较长的学术论文。将论文转化为JPG格式。拆分每张JPG生成更多小的JPG。最终获得很多5个不同语言的JPG并且自带标签。数据链…

网安速查引擎(厂商设备大全)

速查引擎 斯元的速查引擎以其全面、精准的信息整合和便捷的搜索功能,大大缩短了用户查找相关厂商和产品信息的时间,从而提高了工作效率和决策质量。用户可以轻松查阅到各个赛道中的领先厂商和最新技术,帮助企业快速找到适合的合作伙伴和解决方…

逆向案例二十五——webpack所需模块函数很多,某翼云登录参数逆向。

解决步骤: 网址:aHR0cHM6Ly9tLmN0eXVuLmNuL3dhcC9tYWluL2F1dGgvbG9naW4 不说废话,密码有加密,直接搜索找到疑似加密位置打上断点。 再控制台打印,分析加密函数 有三个处理过程,b[g]得到的是用户名,b[f] 对…

HiFi-GAN——基于 GAN 的声码器,能在单 GPU 上生成 22 KHz 音频

拟议的 HiFiGAN 可从中间表征生成原始波形 源码地址:https://github.com/NVIDIA/DeepLearningExamples 论文地址:https://arxiv.org/pdf/2010.05646.pdf 研究要点包括 **挑战:**基于 GAN 的语音波形生成方法在质量上不及自回归模型和基于流…

Linux部署Prometheus+Grafana

【Linux】PrometheusGrafana 一、Prometheus(普罗米修斯)1、Prometheus简述2、Prometheus特点3、Prometheus生态组件4、Prometheus工作原理 二、部署Prometheus1、系统架构2、部署Prometheus3、修改配置文件4、配置系统启动文件 三、部署 Node Exporter …

Spring MVC-什么是Spring MVC?

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 1.MVC定义2. Spring MVC 官方对于Spring Web MVC的描述这样的: Spring Web MVC is the original web framework built on the Servlet APl and has been includedin the Spring Frame…

P1-AI产品经理--九五小庞

产品经理的定位 AI基于现有业务挖掘AI应用场景,服务提供商选择及算法定制等,配合已有产品完成整体产品工工资基于从事医疗行业的考虑,我们走的应该是AI产品经理(软件型) AI产品经理(行业型) AI…

JavaEE:Lombok工具包的使用以及EditStarter插件的安装

Lombok是一个Java工具库&#xff0c;通过添加注解的方式&#xff0c;简化Java的开发。 目录 1、引入依赖 2、使用 3、原理解释 4、更多使用 5、更快捷的引入依赖 1、引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lomb…

STM32全栈嵌入式人脸识别考勤系统:融合OpenCV、Qt和SQLite的解决方案

1. 项目概述 本项目旨在设计并实现一个基于STM32的全栈人脸识别考勤系统。该系统结合了嵌入式开发、计算机视觉和数据库技术&#xff0c;实现了自动人脸检测、识别和考勤记录功能。 主要特点: 使用STM32F4系列微控制器作为主控制器采用OpenCV进行人脸检测和识别Qt开发跨平台…

高性能、安全、低碳绿色的趋势下,锐捷网络发布三擎云办公解决方案 3.0

桌面虚拟化作为云时代的主流和热门技术&#xff0c;已经取得了广泛应用。随着生成式 AI 爆炸式发展&#xff0c;CSDN 看到&#xff0c;人工智能正在引发计算、开发、交互三大范式的全面升级&#xff0c;技术开发或将迎来一次全新的科技变革周期&#xff0c;因此 VDI 云桌面随之…

亚马逊自发货erp,虚拟自动化发货功能以及1688订单采购

亚马逊自发货erp自动化功能&#xff0c;自动同步订单&#xff0c;1688订单同步。 大家好&#xff0c;今天分享一个非常实用并且节省时间的功能&#xff1a;自动化发货以及1688同步订单。 首先来看下自动化发货功能怎么操作。 →要在商品信息里面添加商品信息&#xff0c;上传…

C#语法基础详解(万字总结)

文章目录 **参考书籍&#xff1a;C#7.0 核心技术指南**类型类字段解构器对象初始化器属性表达式属性(只读属性才可以)自动属性属性初始化器 索引器静态构造器nameof运算符 继承类型转换和引用转换as运算符is运算符is与模式变量 虚函数成员抽象类和抽象成员new和重写base关键字构…