ELK日志系统

(一)ELK

1、elk:是一套完整的日志集中处理方案,由三个开源的软件简称组成

2、E:ElasticSearch(ES),是一个开源的,分布式的存储检索引擎(索引型的非关系型数据库),日志存储

(1)Java代码开发的,基于lucene结构开发的一套全文索引引擎,拥有一个web接口,用户可以通过浏览器的形式和ES组件进行通信
(2)作用:存储允许全文搜索,结构化搜索(索引点),索引点可支持大容量的日志数据,也可以搜索所有不同类型的文档

3、L:Logstash,数据搜索引擎,支持动态的(实时)从各种服务应用收集日志资源,还可以收集到日志数据进行过滤、分析、丰富、统一格式等等操作,然后把操作同步到ES存储引擎

4、K:Kiabana,图形化界面,可以更好的分析存储在ES上的日志数据,提供了一个图形化的界面,来浏览ES上的日志数据,汇总、分析、搜索

5、工具

(1)RUBY语言编写的,运行在Java虚拟机上的一个强大的数据处理工具,数据传输,格式化处理,格式化输出,主要用来处理日志
(2)数据收集工具:
①filebeat:轻量级的开源的,日志收集统计、收集的速度比较快、但是没有数据分析和过滤的能力,但是一般结合logstash一块使用
②kafka:中间件消息列队
③RabbitMQ:中间件消息列队

(二)ELK的数据流向

(三)ELK的作用

1、当我们管理一个大集群时,需要分析和定位的日志就会很多,每一台服务器分别去分析,将会耗时耗力,所以应运而生了一个集中的日志管理和分析系统,极大的提高了定位问题的效率

(四)日志系统的特征

1、收集,可以收集基本市面上常用的软件日志
2、传输,收集到的日志需要发送到ES上
3、存储,ES负责存储数据
4、UI:图形化界面(kiabana)

(五)实验架构

1、三台主机:三台组件,最少2/4G
es1:20.0.0.10(2/4G)
es2:20.0.0.20(2/4G)
logstash kiabana:20.0.0.30(4/8G)

主机名

服务器

IP地址

组件

硬件

(最少)

test2

es1

20.0.0.20

ES+node+phantomjs+elasticsearch-head-master组件

2核4G

test3

es2

20.0.0.30

ES+node+phantomjs+elasticsearch-head-master组件

2核4G

test1

logstash+kibana

20.0.0.10

logstash+kibana

4核8G

(六)部署ELK集群

1、修改配置文件

 grep -v "^#" /etc/elasticsearch/elasticsearch.yml

2、es的性能调整

(1)修改打开的最大文件数:vim /etc/security/limits.conf(重启生效)

(2)优化内核文件:vim /etc/systemd/system.conf (重启生效)

DefaultLimitNOFILE=65536

一个用户会话的默认最大文件描述符的限制量

文件描述符:用于标记打开文件或者I/O资源限制的整数

DefaultLimitNPROC=32000

一个用户可以打开的最大进程数量的限制:32000,一个用户的终端可以运行多少个进程

DefaultLimitMEMLOCK=infinity

一个用户的终端默认锁定内存的限制,infinity不限制

(3)内核优化:vim /etc/sysctl.conf
①ES是基于lucene架构,实现的一款索引型数据库,lucene可以利用操作系统的内存来缓存ES的索引数据,提供更快的查询速度,在工作中我们会把系统的一半内存留给lucene
②若机器内存小于64G,50%给es,50%给操作系统(lucene)
②若机器内存大于64G,es分配4-32G,其他都给操作系统(lucene)

vm.max_map_count=262144

一个进程可以拥有的最大内存映射区参数

内存映射:将文件或者其他设备映射进程地址空间的方法,允许进程直接读取或写入文件,无需常规的I/O方式。映射空间越大,ES和lucene的速度越快

2g/2621444g/41943048g/8388608

(七)部署node环境

yum install gcc gcc-c++ make -y
tar zxvf node-v8.2.1.tar.gz
./configure
make && make install     make -j2 && make install

1、安装phantomjs组件

【WebKit插件。PhantomJS是一种没有图形用户界面的网络浏览器】
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd /opt/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

2、安装 Elasticsearch-head 数据可视化工具

unzip elasticsearch-head-master.zip
cd elasticsearch-head-master/
npm install安装依赖

(1)修改Elasticsearch主配置文件:vim /etc/elasticsearch/elasticsearch.yml

(2)启动elasticsearch-head服务
cd /opt/elasticsearch-head-master
后台打开可视化界面服务npm run start &

3、通过Elasticsearch-head查看Elasticsearch 信息

9100

可视化工具的访问端口

9200

ES数据库对外访问的端口

9300

ES数据库内部访问的端口

查询集群ES:http://20.0.0.20:9100

4、插入索引:通过命令插入一个测试索引,索引为 index-demo,类型为 test。
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"hyde","mesg":"hello world"}'

(七)另一台服务器上部署Logstash组件:(用于收集服务器的日志信息并发送到ES)

1、logstash:一般部署在需要监控其日志的服务器上。

2、安装Java环境

yum -y install java
java -version

3、安装logstash

rpm -ivh logstash-6.7.2.rpm                          
systemctl start logstash.service                      
systemctl enable logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

4、Logstash的命名常用选项

-f

通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。

-e

测试,从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。

-t

测试配置文件是否正确,然后退出。

5、测试logsstash

logstash -e 'input { stdin{} } output { stdout{} }'

logstash -e 'input { stdin{} } output { stdout{} }'

所有的键盘命令输出,转成标准输出

input从哪里来

stdin从键盘来

output到哪里去

所有的键盘命令行输出转化成标准输出(rubydebug模式),6.0后,logstash的默认输出格式就是rubydebug格式的标准输出

6、使用 Logstash 将信息写入Elasticsearch中

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.20:9200","20.0.0.30:9200"] } }' --path.data /opt/test
/opt/test:指定工作时数据运行的文件

7、安装kibana组件(图形化界面)

rpm -ivh kibana-6.7.2-x86_64.rpm

(2)创建日志文件,启动 Kibana 服务
touch /var/log/kibana.log
赋权:chown kibana:kibana /var/log/kibana.log
systemctl start kibana.service

(3)测试Kibana:浏览器访问 http://20.0.0.10:5601

7、测试发送数据到ES服务器上

(1)将message收集的日志文件发送到system.conf中

创建vim system.conf

logstash -f system.conf --path.data /opt/test1 &

重启elasticsearch.service,测试test1是否收到test2的日志数据

8、ELK收集nginx的json格式日志

logstash -f nginx.conf --path.data /opt/test3 &

访问nginx,收集日志

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

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

相关文章

后端整合Swagger+Knife4j接口文档

后端整合SwaggerKnife4j接口文档 接口文档介绍 什么是接口文档:写接口信息的文档,条接口包括: 请求参数响应参数 错误码 接口地址接口名称请求类型请求格式备注 为什么需要接口文档 who用?后端提供,前后端都需要使用…

ESXi 添加虚拟闪存 无可选设备问题排查

虚拟内存是计算机系统中的一种技术,它可以将计算机硬盘的一部分空间作为临时存储器来使用。当计算机的物理内存(RAM)不足时,操作系统可以将部分数据从内存移至硬盘的虚拟内存空间中,以释放内存供其他程序使用。虚拟内存…

uniapp基础-教程之HBuilderX配置篇-01

uniapp教程之HBuilderX配置篇-01 为什么要做这个教程的梳理,主要用于自己学习和总结,利于增加自己的积累和记忆。首先下载HBuilderX,并保证你的软件在C盘进行运行,最好使用英文或者拼音,这个操作是为了保证软件的稳定…

羊大师提示,别让坏习惯影响生活

羊大师提示,别让坏习惯影响生活 拖延是人们常常会遇到的一种坏习惯,它不仅浪费时间,还会对生活、工作和学习造成负面影响。为了改变这种坏习惯,我们需要采取一系列的措施,从根本上改变自己的生活方式。下面小编羊大师…

bat脚本执行py文件

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

你知道如何使用队列实现栈吗?(C语言)

这时一道非常经典的题型,因为栈和队列的性质是相反的,队列的数据是先入先出,栈的数据是后入先出,那么怎样使用两个队列实现栈呢? 225. 用队列实现栈https://leetcode.cn/problems/implement-stack-using-queues/ 这是…

安卓开发学习---kotlin版---笔记(一)

Hello word 前言:上次学习安卓,学了Java开发,简单的搭了几个安卓界面。这次要学习Kotlin语言,然后开发安卓,趁着还年轻,学点新东西,坚持~ 未来的你会感谢现在努力的你~ 主要学习资料&#xff1a…

leetcode算法之字符串

目录 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 最长公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//法一&#xff1a;两两比较string ret strs[0];for(int i1;i<strs.size();i){ret f…

NocoBase企业级低代码开发平台有什么优势?

企业级低代码开发平台&#xff0c;作为一种新兴的技术解决方案&#xff0c;正逐渐在企业中受到越来越多的关注和青睐。它以其高效、灵活的特性&#xff0c;为企业的创新提供了更快速、更可持续的支持和推动。 低代码开发平台是一种以图形化界面为基础&#xff0c;结合拖拽式编…

Qt右键菜单+动作+qss案例

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//设置界面颜色样式this->setStyleSheet("background-color:rgb(54,54,54)");//创建文件菜单QMenu *fileMenuItems new QMenu;//菜单添加iconfileMenuItems->se…

如何根据接口文档,轻松快速的模拟接口服务?

什么是WireMock? WireMock 是一个Http 模拟服务,其核心也是一个web服务,WireMock主要是为特定请求提供固定的返回值。 WireMock可以作为单独进程启动,模拟一个WEB服务器,提供一些API访问,并返回特定的返回值。也可以作为第三方库在项目中使用。 如何使用 standalone方…

2161根据数字划分数组

给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列&#xff0c;使得以下条件均成立&#xff1a; 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 pivot 的元素之…

allure修改logo 自定义

无论pytest还是httprunner都适用allure生成报告。那我们就有必要对allure报告进行一些定制。我们先修改logo&#xff1a; 1、给allure.yml插件custom-logo-plugin 找到allure安装的位置&#xff0c;在config文件夹下有一个allure.yml的配置文件。打开它&#xff0c;在最后添加…

Python接口自动化测试 ---Allure报告使用详解

这一节主要是记录allure的内容以及用法&#xff0c;怎么让他生成一个完整的想要的报告。 allure生成的报告和其他五花八门的报告对比了一下&#xff0c;它的可读性是最好、最直观的。这不仅仅是我想要的效果&#xff0c;也是很多小伙伴想要的结果&#xff0c;毕竟这是给领导看…

扩散模型DDPM学习笔记

扩散模型DDPM 文章目录 扩散模型DDPM如何运作基本概念训练过程推理过程&#xff1a; 目标损失函数推导评估标准 论文地址&#xff1a; Denoising Diffusion Probabilistic Models (DDPM) 如何运作 ​ 从guassian distribution进行采样得到一个噪声的图片&#xff0c;图片大小…

为什么我不能给shopify的图片添加alt

首先我们要明白是什么ALT标签&#xff0c;为什么要添加这个标签&#xff0c;这个标签有什么用 ALT标签是什么 ALT属性是HTML的一部分&#xff0c;它为那些无法查看图像的用户提供替代的文本描述。 ALT标签有什么用 使用ALT属性还可以帮助搜索引擎爬虫更好地理解您的网站内容。有…

学习知识回顾随笔(远程连接MySQL|远程访问Django|HTTP协议|Web框架)

文章目录 如何远程连接MySQL数据库1.创建用户来运行&#xff0c;此用户从任何主机连接到mysql数据库2.使用IP地址来访问MySQL数据库 如何远程访问Django项目Web应用什么是Web应用应用程序的两种模式Web应用程序的优缺点 HTTP协议&#xff08;超文本传输协议&#xff09;简介HTT…

Airtest自动化测试工具实战演练

一开始知道Airtest大概是在年初的时候&#xff0c;当时&#xff0c;看了一下官方的文档&#xff0c;大概是类似Sikuli的一个工具&#xff0c;主要用来做游戏自动化的&#xff0c;通过截图的方式用来解决游戏自动化测试的难题。最近&#xff0c;移动端测试的同事尝试用它的poco库…

LCM-LoRA模型推理简明教程

潜在一致性模型 (LCM) 通常可以通过 2-4 个步骤生成高质量图像&#xff0c;从而可以在几乎实时的设置中使用扩散模型。 来自官方网站&#xff1a; LCM 只需 4,000 个训练步骤&#xff08;约 32 个 A100 GPU 小时&#xff09;即可从任何预训练的稳定扩散 (SD) 中提取出来&#…

sed文本 免交互

目录 什么是sed 概念 格式 基本用法 命令的选项 打印第三行 打印日志文件 打印奇数行 打印偶数行 第三行退出 删除第三行 sed在不打开文件的情况下修改文件内容 在后面添加 选项a 在字符中间添加 \n 实现追加换行 全部追加 在前面插入 选项i 替换 选项c …