ELK 分离式日志(1)
目录
一.ELK组件
ElasticSearch:
Kiabana:
Logstash:
可以添加的其它组件:
ELK 的工作原理:
二.部署ELK
节点都设置Java环境:
每台都可以部署 Elasticsearch 软件:
修改elasticsearch主配置文件:
性能调优参数:
修改内核参数文件:
访问页面查看节点信息及状态:
每台安装 Elasticsearch-head 插件:
安装 phantomjs:
安装 Elasticsearch-head 数据可视化工具(安装一个节点):
安装依赖包:
修改 Elasticsearch 主配置文件(10,20,30节点):
启动 elasticsearch-head 服务:
访问页面:
插入索引:
通过命令插入一个测试索引,索引为 index-demo,类型为 test:
浏览器访问 http://192.168.80.10:9100/ 查看索引信息:
ELK Logstash 部署(在 web 节点上操作):
安装logstash:
测试 Logstash:
使用 Logstash 将信息写入 Elasticsearch 中:
修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中:
创建目录:
切换到目录:
添加文件内容:
ELK Kiabana 部署(30节点上操作):
安装 Kiabana:
设置 Kibana 的主配置文件:
创建日志:
验证 Kibana:
创建索引:
将nginx服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示:
到kibana目录下添加文件内容:
检查文件是否成功:
添加索引:
一.ELK组件
ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。
ElasticSearch:
是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。
Kiabana:
Kibana 通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据。
Logstash:
作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给 Elasticsearch。
可以添加的其它组件:
Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中。
filebeat 结合 logstash 带来好处:
1)通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力
2)从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取
3)将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
4)使用条件数据流逻辑组成更复杂的处理管道
缓存/消息队列(redis、kafka、RabbitMQ等):可以对高并发日志数据进行流量削峰和缓冲,这样的缓冲可以一定程度的保护数据不丢失,还可以对整个架构进行应用解耦。
ELK 的工作原理:
Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
Elasticsearch 对格式化后的数据进行索引和存储。
Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。
总结:logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。
二.部署ELK
先准备三台服务器,192.168.233.(10..30),其中30为web网页服务器,
节点都设置Java环境:
如果没有安装则下载:yum -y install java。
每台都可以部署 Elasticsearch 软件:
修改elasticsearch主配置文件:
查看信息:
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
其他节点:
性能调优参数:
需重启生效:
修改内核参数文件:
启动elasticsearch是否成功开启:
访问页面查看节点信息及状态:
状态,查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行:
http://192.168.233.10:9200/_cluster/health?pretty
状态:
状态:
每台安装 Elasticsearch-head 插件:
上传软件包 node-v8.2.1.tar.gz 到/opt,并解压:
编译安装:
安装 phantomjs:
上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt,并解压:
将命令复制到环境变量下:
安装 Elasticsearch-head 数据可视化工具(安装一个节点):
上传软件包 elasticsearch-head-master.zip 到/opt:
unzip elasticsearch-head-master.zip
安装依赖包:
修改 Elasticsearch 主配置文件(10,20,30节点):
http.cors.enabled: true
http.cors.allow-origin: "*"
10节点:
20节点:
30节点:
重启:
启动 elasticsearch-head 服务:
必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
访问页面:
通过 Elasticsearch-head 查看 Elasticsearch 信息:看到群集健康值为 green 绿色,代表群集很健康。
插入索引:
通过命令插入一个测试索引,索引为 index-demo,类型为 test:
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
浏览器访问 http://192.168.80.10:9100/ 查看索引信息:
可以看见索引默认被分片5个,并且有一个副本。点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息:
ELK Logstash 部署(在 web 节点上操作):
Logstash 一般部署在需要监控其日志的服务器:
开启40节点安装nginx,并启动:
更改主机名:
hostnamectl set-hostname nginx
添加页面测试页面:
安装logstash:
上传软件包 logstash-6.7.2.rpm 到/opt目录下:
编译:
rpm -ivh logstash-6.7.2.rpm
让logstash能够补全:
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
设置自启:
测试 Logstash:
logstash -e 'input { stdin{} } output { stdout{} }'
键盘输入内容:
使用 Logstash 将信息写入 Elasticsearch 中:
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.233.10:9200"] } }'
看下10节点的数据:
在40节点上输入内容:
再看下10节点 :
修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中:
chmod +r /var/log/messages
cd /etc/logstash
创建目录:
创建日志文件:
touch log_progress
授用户权限:
chown logstash:logstash /etc/logstash/sincedb_path/log_progress
切换到目录:
cd /etc/logstash/conf.d/
关闭logstash服务:
添加文件内容:
vim system.conf
logstash -f system.conf
查看下esWeb页面:
ELK Kiabana 部署(30节点上操作):
安装 Kiabana:
上传软件包 kibana-6.7.2-x86_64.rpm 到/opt目录
rpm -ivh kibana-6.7.2-x86_64.rpm
设置 Kibana 的主配置文件:
vim /etc/kibana/kibana.yml
创建日志:
touch /var/log/kibana.log
授权:
chown kibana:kibana /var/log/kibana.log
开启服务:
验证 Kibana:
可以管理索引:
创建索引:
将nginx服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示:
到kibana目录下添加文件内容:
input {file{path => "/usr/local/nginx/logs/access.log"type => "access"start_position => "beginning"}file{path => "/usr/local/nginx/logs/error.log"type => "error"start_position => "beginning"}
}output {if [type] == "access" {elasticsearch {hosts => ["192.168.233.10:9200","192.168.233.30:9200"]index => "nginx_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["192.168.233.10:9200","192.168.233.30:9200"]index => "nginx_error-%{+YYYY.MM.dd}"}}
}
注意看看自己web应用的log文件路径
检查文件是否成功:
进行测试:
logstash -f system.conf
添加索引:
创建成功日志索引:
创建错误日志索引:
相关文章:

ELK 分离式日志(1)
目录 一.ELK组件 ElasticSearch: Kiabana: Logstash: 可以添加的其它组件: ELK 的工作原理: 二.部署ELK 节点都设置Java环境: 每台都可以部署 Elasticsearch 软件: 修改elasticsearch主配置文件&…...

<蓝桥杯软件赛>零基础备赛20周--第15周--快速幂+素数
报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周。 在QQ群上交流答疑&am…...

Opencv小项目——手势数字刷TIKTOK
写在前面: 很久没更新了,之前的实习的记录也算是烂尾了,但是好在自己的实习记录还是有的,最近也忙碌了很多,终于放假了,今天下午正好没事,闲来无事就随便做个小玩意吧。 思来想去ÿ…...

【优化技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路
针对Java对象压缩及序列化技术的探索之路 序列化和反序列化为何需要有序列化呢?Java实现序列化的方式二进制格式 指定语言层级二进制格式 跨语言层级JSON 格式化类JSON格式化:XML文件格式化 序列化的分类在速度的对比上一般有如下规律:Java…...

Spring+SprinMVC+MyBatis配置方式简易模板
SpringSprinMVCMyBatis配置方式简易模板代码Demo GitHub访问 ssm-tpl-cfg 一、SQL数据准备 创建数据库test,执行下方SQL创建表ssm-tpl-cfg /*Navicat Premium Data TransferSource Server : 127.0.0.1Source Server Type : MySQLSource Server Versio…...

Windows ssh登录eNSP交换机
目录 1. Cloud IO配置1.1 创建UDP端口1.2 创建本地连接1.3 端口映射设置 2. 交换机配置2.1 配置vlanif2.2 配置vty2.3 配置ssh用户2.4 配置aaa2.5 使用Xshell工具登录2.6 用户和密码2.7 登录成功 3. 使用cmd 登录报错提示3.1 手动指定加密算法,提示密码长度无效3.2 …...

SwiftUI 纯手工打造 100% 可定制的导航栏
功能需求 何曾几时,我们是否也厌倦了 SwiftUI 界面中刻板守旧的导航栏外观,而想要自己动手充分展示灵动炸裂的创造力呢? 如上图所示:我们在 SwiftUI 中通过纯手工打造了一款 100 在本篇博文中,您将学到以下内容 功能需求1. 导航栏基本结构2. 如何感知当前发生用户拖拽行为…...
npm install 太慢?解决方法
在使用npm进行包管理时,有时会遇到安装速度缓慢的问题。这可能是由于网络原因或npm官方镜像服务器的繁忙导致的。下面介绍几种常见的解决方法: 使用淘宝镜像 淘宝镜像是一个提供npm包镜像的国内源,其速度较快且稳定。您可以通过以下命令将npm…...

DevOps系列文章之 GitLab CI/CD
CICD是什么? 由于目前公司使用的gitlab,大部分项目使用的CICD是gitlab的CICD,少部分用的是jenkins,使用了gitlab-ci一段时间后感觉还不错,因此总结一下 介绍gitlab的CICD之前,可以先了解CICD是什么 我们的开发模式…...
【CompletableFuture任务编排】游戏服务器线程模型及其线程之间的交互(以排行榜线程和玩家线程的交互为例子)
需求: 1.我们希望玩家的业务在玩家线程执行,无需回调,因此是多线程处理。 2.匹配线程负责匹配逻辑,是单独一个线程。 3.排行榜线程负责玩家的上榜等。 4.从排行榜线程获取到排行榜列表后,需要给玩家发奖修改玩家数…...

什么是浏览器指纹?详解浏览器指纹识别技术,教你防止浏览器指纹识别
在数字时代,我们的在线活动几乎总是留下痕迹。其中,浏览器指纹就像我们的数字身份证,让网站能够识别和追踪用户。对于跨境电商行业来说,了解这种追踪技术尤其重要,因为它可能影响账号的管理和安全。本文将详细介绍浏览…...

canvas绘制六芒星
查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…...

全网最详细!!Python 爬虫快速入门
1. 背景 最近在工作中有需要使用到爬虫的地方,需要根据 Gitlab Python 实现一套定时爬取数据的工具,所以借此机会,针对 Python 爬虫方面的知识进行了学习,也算 Python 爬虫入门了。 需要了解的知识点: Python 基础语…...

gitgud.io+Sapphire注册账号教程
gitgud.io是一个仓库,地址 https://gitgud.io/,点进去之后会看到注册页面。 意思是需要通过注册这个Sapphire账户来登录。点击右边的Sapphire,就跳转到Sapphire的登陆页面,点击创建新账号,就进入注册页面。࿰…...

【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径
作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 广度优先搜索 状态压缩 LeetCode847 访问所有节点的最短路径 存在一个由 n 个节点组成的无向连通图,图中的节点按从 0 到 n - 1 编号。 给你一个数组 graph 表示这个图。其中,graph[i] 是一个列…...

python基础小知识:引用和赋值的区别
嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 1.引用 python中,赋值操作会产生相同对象的多个引用, 如果在原位置修改这个可变对象时,可能会影响程序其他位置对这个对象的…...

欧科云链与《警察技术》联合发布技术专题.pdf
欧科云链受《警察技术》邀请,于第201期期刊正式刊登“区块链生态安全与虚拟货币犯罪治理”技术专题。欧科云链作为该技术专题主要作者,直接参与本次期刊2篇文章撰写,同时为多篇文章提供欧科云链的最新数据和研究成果。 《警察技术》期刊创办于…...

【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、sqlite3介绍二、文件下载三、文件分析四、pro文件五、编译实践 一、sqlite3介绍 SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的&…...

websocket实现聊天室(vue2 + node)
通过websocket实现简单的聊天室功能 需求分析如图: 搭建的项目结构如图: 前端步骤: vue create socket_demo (创建项目)views下面建立Home , Login组件路由里面配置路径Home组件内部开启websocket连接 前端相关组件代码: Login…...

RabbitMQ-消息延迟
一、死信交换机 1、描述 一个队列接收到的消息有过期时间,消息过期之后,如果配置有死信队列,消息就会进去死信队列。 2、图解 3、过程 当生产者将消息发送到exchange1,然后交换机将消息路由到队列queue1,但是队列que…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...