ELK日志分析系统部署文档

一、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 => 5044codec => 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服务器的ipindex => "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.*.txtencoding: GB2312####fields 自定义字段与值,这个在检索日志时使用,###会给每条日志增加此key与value,能够标识出日志来源。fields:ip: 10.211.55.5# fields_under_root如果为false,则fields下的key会挂到fields下,true的话fields_under_root: truemultiline:type: patternpattern: '^\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: truematch: 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.mzph.cn/pingmian/47848.shtml

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

相关文章

前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口

文章目录 跳转方式微信小程序(我以uniapp为例)pc api接入说明关于签名计算成功示例 跳转方式 没有任何开发成本,直接一键接入 可以直接看官方文档 https://www.kuaidi100.com/openapi/api_wxmp.shtml 微信小程序(我以uniapp为例…

Python求均值,方差,标准差

参考链接:变异系数(Coefficient of Variation,COV)和协方差(Covariance, Cov)-CSDN博客 参考链接:pandas中std和numpy的np.std区别_numpy pandas std-CSDN博客 在计算蛋白质谱数据中的每个蛋白对应的变异…

C++内存管理(区别C语言)深度对比

欢迎来到我的Blog,点击关注哦💕 前言 前面已经介绍了类和对象,对C面向对象编程已经有了全面认识,接下来要学习对语言学习比较重要的是对内存的管理。 一、内存的分区 代码区:存放程序的机器指令,通常是可…

从操作系统层面认识Linux

描述进程-PCB Linux操作系统下的PCB是: task_struct https://www.cnblogs.com/tongyan2/p/5544887.htmlhttps://www.cnblogs.com/tongyan2/p/5544887.html校招必背操作系统面试题-什么是 PCB(进程控制块) ?_哔哩哔哩_bilibili校招必背操作系…

WSL-Ubuntu20.04环境使用YOLOv8 TensorRT推理加速

在阅读本章内容之前,需要把部署环境以及训练环境都安装好。 1.TensorRTX下载 这里使用Wang-xinyu大佬维护的TensorRTX库来对YOLOv8进行推理加速的演示,顺便也验证一下前面环境配置的成果。 github地址:GitHub - wang-xinyu/tensorrtx,下载后放到wsl的路径下,我这里放在/h…

transformer论文讲解

1.标题 作者 Transformer 开创了继 MLP 、CNN和 RN 之后的第四大类模型。200页综述(来自评论区: https://arxiv.org/pdf/2108.07258.pdf )建议将Transformer作为基础模型。 标题:XXX is all you need. 头条标题。 Attention i…

Docker部署内网穿透服务

前提 首先!市面上的可下载的内网穿透是不是都非常的不好用,本地开发测试用起来都不方便。免费版本的各有限制。从无条件免费到后面维护的越来越复杂。无脑人(我)只需要下面这个。 一个是随机域名不定期会更换,一个是隧…

【数据结构】链表(LinkedList)详解

文章目录 [toc] 前言1. 链表的介绍1.1 链表的定义1.2 链表的结构种类 2. 单向链表的模拟实现2.1 创建链表2.2 打印链表2.3 求链表长度 3. 单向链表常见方法的模拟实现3.1 头插法3.2 尾插法3.3 指定位置插入3.4 查找值 key 的节点是否在链表中3.5 删除值为 key 的节点3.6 删除所…

栈(用C语言实现)

1. 栈 1.1 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进行插入和删除元素操作。进行数据插入和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出 LIFO(Last In First Out)的原则。 压…

Richteck立锜科技电源管理芯片简介及器件选择指南

一、电源管理简介 电源管理组件的选择和应用本身的电源输入和输出条件是高度关联的。 输入电源是交流或直流?需求的输出电压比输入电压高或是低?负载电流多大?系统是否对噪讯非常敏感?也许系统需要的是恒流而不是稳压 (例如 LED…

【产品那些事】固件安全-关于OTA升级包分析

文章目录 前言什么是OTA?升级包(固件)的类型和架构案例tp-link路由器升级包怎么解包分析?binwalk安装及使用ubi_reader安装及使用unsquashfs安装及使用某车企OTA升级包通用Android OTA解包相关分区第二层解包前言 什么是OTA? OTA(Over-the-Air)是一种通过无线通信网络(…

adb查看网卡信息,并修改网卡mac地址

这种方法修改mac后,关机后会失效! 文章结尾有永久修改mac地址的方法! 1. 查看网卡的信息,以及mac地址,ip地址,子网掩码等 //查看所有网卡信息adb shell ifconfig//MAC地址: HWaddr 5e:2c:e9:58:3e:4f //IP地址&a…

小试牛刀-Telebot区块链游戏机器人

目录 1.编写目的 2.实现功能 2.1 Wallet功能 2.2 游戏功能 2.3 提出功能 2.4 辅助功能 3.功能实现详解 3.1 wallet功能 3.2 游戏功能 3.3 提出功能 3.4 辅助功能 4.测试视频 Welcome to Code Blocks blog 本篇文章主要介绍了 [Telebot区块链游戏机器人] ❤博主…

专业PDF编辑工具:Acrobat Pro DC 2024.002.20933绿色版,提升你的工作效率!

软件介绍 Adobe Acrobat Pro DC 2024绿色便携版是一款功能强大的PDF编辑和转换软件,由Adobe公司推出。它是Acrobat XI系列的后续产品,提供了全新的用户界面和增强功能。用户可以借助这款软件将纸质文件转换为可编辑的电子文件,便于传输、签署…

Python项目打包与依赖管理指南

在Python开发中,python文件需要在安装有python解释器的计算机的电脑上才能运行,但是在工作时,我们需要给客户介绍演示项目功能时并不一定可以条件安装解释器,而且这样做非常不方便。这时候我们可以打包项目,用于给客户…

数据结构课程设计:源代码(C)客房信息管理系统

main.c #include <unistd.h> #include "SeqList.h" #include "User.h"int main() {SL user;SLInit(&user);char ans 0;printf("是否需要导入昨日续住客人的数据&#xff1a;y/n\n");scanf(" %c", &ans);if (ans y){L…

vscode使用及调试方式和技巧

常用快捷键 ctrl ~ 显示隐藏终端面板 Ctrl\ 快速拆分文件编辑 Alt ↑↓ 移动当前代码行的位置 CtrlD 选中当前匹配项 CtrlB 切换侧边栏 alt 单机左键 或 长按鼠标滚轮鼠标左键下拉 添加多处光标 Ctrlp 快捷键设置 vscode调试 2022年了&#xff0c;该学会用VSC…

无人驾驶概览(1)

主要部分包括&#xff1a;高精度地图HD MAPS&#xff0c;定位Localization&#xff0c; 感知perception&#xff0c;预测 perdicition 规划 plan 控制 control 高精度地图HD MAPS中&#xff0c;几乎支持软件栈所有其他模块&#xff0c;包括定位感知预测和规划 定位Localizati…

Redis常用的5大数据类型

Reids字符串&#xff08;String&#xff09; 设置相同的key&#xff0c;之前内容会覆盖掉 Redis列表&#xff08;List&#xff09; 常用命令 从左往右放值 数据结构 Redis集合&#xff08;set&#xff09; sadd<key><value1><value2>...... 数据结构 Set数据…

Servlet运行过程

Servlet运行过程 Servlet程序是由WEB服务器调用&#xff0c;web服务器收到客户端的Servlet访问请求后&#xff1a; ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是&#xff0c;则直接执行第④步&#xff0c;否则执行第②步。 ②装载并创建该Servlet的…