ELK 企业级日志分析系统(理论加实战部署详解)

2023-11-07

ELK 企业级日志分析系统(理论加实战部署详解)


安装包: ELK安装包

一、ELK 概述

ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。
●ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。
Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。

●Logstash:主要用于日志收集,同时可以对数据处理,并输出给 Elasticsearch。
Logstash 由JRuby 语言编写,运行在Java虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。 Logstash 具有强大的插件功能,常用于日志处理。

●Kiabana:是基于Node.js开发的展示工具,可以为Logstash和ElasticSearch提供图形化的日志分析Web界面,可以汇总、分析和搜索重要数据日志。

1.1 ELK 的工作原理

(1)在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。
(2)Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
(3)Elasticsearch 对格式化后的数据进行索引和存储。
(4)Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

二、部署详解

Node1节点:node1/192.168.126.10					Elasticsearch   Kibana
Node2节点:node2/192.168.126.20					Elasticsearch
Apache节点:apache/192.168.126.30				Logstash Apache
systemctl stop firewalld
setenforce 0

(一)、ELK Elasticsearch 集群部署(在Node1、Node2节点上操作)

1、环境准备

更改主机名、配置域名解析、查看Java环境

Node1节点:hostnamectl set-hostname node1
Node2节点:hostnamectl set-hostname node2
vim /etc/hosts              #两台机子都要做

192.168.126.10  node1
192.168.126.20  node2
java -version										#如果没有安装,yum -y install java
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

2、部署 Elasticsearch 软件

1)安装elasticsearch—rpm包
#上传elasticsearch-5.5.0.rpm到/opt目录下
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 
2)加载系统服务
systemctl daemon-reload    
systemctl enable elasticsearch.service
3)修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
grep -v "^#" /etc/elasticsearch/elasticsearch.yml

在这里插入图片描述

4)创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
5)启动elasticsearch是否成功开启
systemctl start elasticsearch.service
netstat -antp | grep 9200

在这里插入图片描述

6)查看节点信息
浏览器访问  http://192.168.126.10:9200  、 http://192.168.126.20:9200 查看节点 Node1、Node2 的信息。

在这里插入图片描述

浏览器访问 http://192.168.126.10:9200/_cluster/health?pretty 、 http://192.168.126.20:9200/_cluster/health?pretty查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行

在这里插入图片描述

浏览器访问 http://192.168.126.10:9200/_cluster/state?pretty  检查群集状态信息。

在这里插入图片描述

使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集。

3.安装 Elasticsearch-head 插件

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。

(1)编译安装node组件依赖包##耗时比较长 30分钟

上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y

cd /opt
tar zxvf node-v8.2.1.tar.gz

cd node-v8.2.1/
./configure
make -j3 && make install

(2)安装phantomjs####前端框架

上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

(3)安装 Elasticsearch-head 数据可视化工具

上传软件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

4)修改 Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml
......
--末尾添加以下内容--
http.cors.enabled: true				#开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"			#指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch

(5)启动 elasticsearch-head 服务

必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /usr/local/src/elasticsearch-head/
npm run start &

> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100

在这里插入图片描述

(6)通过 Elasticsearch-head 查看 Elasticsearch 信息
通过浏览器访问 http://192.168.126.10:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。

(7)插入索引
通过命令插入一个测试索引,索引为 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"}'

//输出结果如下:

{
"_index" : "index-demo",
"_type" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}

在这里插入图片描述

浏览器访问 http://192.168.126.10:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

在这里插入图片描述

(二)、 ELK Logstash 部署(在 Apache 节点上操作)

Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。

1.更改主机名

hostnamectl set-hostname apache
su

2.安装Apahce服务(httpd)

yum -y install httpd
systemctl start httpd

3.安装Java环境

yum -y install java
java -version

4.安装logstash

上传软件包 logstash-5.5.1.rpm 到/opt目录下

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

5.测试 Logstash

Logstash 命令常用选项:
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。
定义输入和输出流:
输入采用标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'
......
www.baidu.com										#键入内容(标准输入)
2020-12-22T03:58:47.799Z node1 www.baidu.com		#输出结果(标准输出)
www.sina.com.cn										#键入内容(标准输入)
2017-12-22T03:59:02.908Z node1 www.sina.com.cn		#输出结果(标准输出)

执行 ctrl+c 退出

在这里插入图片描述

使用 rubydebug 输出详细格式显示,codec 为一种编解码器

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
......
www.baidu.com										#键入内容(标准输入)
{
    "@timestamp" => 2020-12-22T02:15:39.136Z,		#输出结果(处理后的结果)
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}

在这里插入图片描述

使用 Logstash 将信息写入 Elasticsearch 中

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.126.10:9200"] } }'
			 输入				输出			对接
......
www.baidu.com										#键入内容(标准输入)
www.sina.com.cn										#键入内容(标准输入)
www.google.com										#键入内容(标准输入)

结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.126.10:9100/ 查看索引信息和数据浏览。

在这里插入图片描述

6.定义 logstash配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)。

格式如下:

input {...}
filter {...}
output {...}

在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

input {
	file { path =>"/var/log/messages" type =>"syslog"}
	file { path =>"/var/log/apache/access.log" type =>"apache"}
}

例:

logstash -e ‘input { file { path =>"/var/log/messages" type =>“syslog”} file { path =>"/var/log/apache/access.log" type =>“apache”} } output { elasticsearch { hosts=>[“192.168.126.10:9200”] } }’

在这里插入图片描述

修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。

chmod o+r /var/log/messages		#让 Logstash 可以读取日志
vim /etc/logstash/conf.d/system.conf
input {
	file{
		path =>"/var/log/messages"						#指定要收集的日志的位置
		type =>"system"									#自定义日志类型标识
		start_position =>"beginning"					#表示从开始处收集
	}
}
output {
	elasticsearch {										#输出到 elasticsearch
		hosts => ["192.168.126.10:9200"]					#指定 elasticsearch 服务器的地址和端口
		index =>"system-%{+YYYY.MM.dd}"					#指定输出的索引格式
	}
}
systemctl restart logstash 

浏览器访问 http://192.168.126.10:9100/ 查看索引信息

在这里插入图片描述

(三)、 ELK Kiabana 部署(在 Node1 节点上操作)

1.安装 Kiabana

上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

2.设置 Kibana 的主配置文件

vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.126.10:9200" 
--30--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"

3.启动 Kibana 服务

systemctl start kibana.service
systemctl enable kibana.service

netstat -natp | grep 5601

4.验证 Kibana
浏览器访问 http://192.168.126.10:5601
第一次登录需要添加一个 Elasticsearch 索引:
Index name or pattern
//输入:system-* #在索引名中输入之前配置的 Output 前缀“system”

在这里插入图片描述

单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果

在这里插入图片描述

在这里插入图片描述

5.在客户端 将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

vim /etc/logstash/conf.d/apache_log.conf
input {
	file{
		path => "/etc/httpd/logs/access_log"
		type => "access"
		start_position => "beginning"
    }
    file{
		path => "/etc/httpd/logs/error_log"
		type => "error"
		start_position => "beginning"
    }
}
output {
	if [type] == "access" {
		elasticsearch {
			hosts => ["192.168.126.10:9200"]
			index => "apache_access-%{+YYYY.MM.dd}"
		}
	}
	if [type] == "error" {
		elasticsearch {
			hosts => ["192.168.126.10:9200"]
			index => "apache_error-%{+YYYY.MM.dd}"
		}
	}
}
cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf

浏览器访问 http://192.168.126.10:9100 查看索引是否创建

在这里插入图片描述

浏览器访问 http://192.168.126.10:5601 登录 Kibana,单击“Create Index Pattern”按钮添加索引,在索引名中输入之前配置的 Output 前缀“apache_access”,并单击“Create”按钮。在用相同的方法添加 apache_error-索引。
选择“Discover”选项卡,在中间下拉列表中选择刚添加的 apache_access-
、apache_error-* 索引, 可以查看相应的图表及日志信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK 企业级日志分析系统(理论加实战部署详解) 的相关文章

  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 如何使用 xterm.js 创建基于 Web 的终端以 ssh 进入本地网络上的系统

    我偶然发现了这个很棒的图书馆xterm js https xtermjs org 这也是 Visual Studio Code 终端的基础 我有一个非常普遍的问题 我想通过基于网络的终端 不在网络中 可能位于 aws 服务器上 访问本地网络
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific

随机推荐

  • Linux下tty驱动框架

    在Linux下编写串口驱动程序 需要使用Linux提供的tty和serial驱动模块 以下是一个简单的tty串口驱动程序示例 使用C语言编写 include
  • 生成子集——位向量法

    生成0 n序列的子集 对于0 n的每一个值在集合中都有存在和不存在两种状态 所以递归每个值的存在状态即可生成子集 include
  • pyspark环境搭建,连接hive

    pyspark环境搭建 连接hive 一 环境搭建 1 1环境 1 1 1 集群环境 1 1 2 系统环境配置 1 1 3 host文件配置 1 1 4hive hadoop的配置文件 1 1 5 pyspark安装 2 1环境测试 二 项
  • 从windows下切换到Linux

    想从windows下切换到Linux 感觉好难 虽然早有这个想法 但是真正做起来后感觉还是有点难度 主要是命令行的界面感觉不习惯 感觉没有了鼠标就什么都不会干了 尤其是在vi下的时候 连上下左右都不会了 但是换了vim tiny后感觉我又会
  • ML算法基础——分类模型评估与调参

    文章目录 一 分类模型评估 1 准确率 2 精确率和召回率 2 1 混淆矩阵 2 2 精确率 Precision 与召回率 Recall 2 3 分类模型评估API 2 4 贝叶斯模型评估实例 二 模型的选择与调优 1 交叉验证 2 网格搜
  • SLVS-EC接口学习

    SLVS summarize 一 概述 SLVS EC高速串行接口技术 在CIS和DSP 数字信号处理器 之间实现了高帧率的宽带像素数据传输 SLVS EC引入了一个优化的数据包格式和控制协议 几乎没有冗余 而且结构简单 仅由两层组成 LI
  • Windows下部署Appium教程(Android App自动化测试框架搭建)

    摘要 1 appium是开源的移动端自动化测试框架 2 appium可以测试原生的 混合的 以及移动端的web项目 3 appium可以测试ios android firefox os 4 appium是跨平台的 可以用在osx windo
  • 【SpringCloudAlibaba学习 01】创建父工程项目

    文章目录 SpringBoot SpringCloud SpringCloudAlibaba版本对应关系 第一步 创建父工程 第二步 配置父工程Maven依赖 第三步 本地项目上传Git仓库 这一步可不做 1 登录自己的Git 2 进入个人
  • 详解深度语义匹配模型DSSM

    所谓语义匹配 就是在语义上衡量文本的相似度 在产业界有很多的应用需求 例如 在FAQ场景中需要计算用户输入与标问之间的相似度来寻找合适的答案 本文介绍一种经典的语义匹配技术 DSSM 主要用于语料的召回和粗排 作者 编辑 小Dream哥 1
  • ZooKeeper-Curator-InterProcessMutex分布式锁源码

    这里写自定义目录标题 InterProcessMutex 可重入互斥锁 ConnectionStateListener 注意 临时节点下不能创建临时子节点 InterProcessMutex 可重入互斥锁 具体流程图 入口1 Overrid
  • 在vue3中如何使用百度地图API(详细步骤+demo示例)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 注册账号 申请成为开发者 二 申请密钥AK 三 在vue3 0中使用百度地图API 提示 以下是本篇文章正文内容 下面案例可供参考 一 注册账号 申请成为开发者
  • linux VM与容器的存储IO性能测试

    linux VM与容器的存储IO测试 测试由KVM vmwarm virtualbox生产的VM和docker容器的存储IO性能 测试过程 1 分别在同一台物理机安装kvm和virtualbox的hypervisor 生产kvm virtu
  • 网络网段分类

    A类网段 0 0 0 0 127 255 255 255 B类网段 128 0 0 0 191 255 255 255 C类网段 192 0 0 0 223 255 255 255 D类网段 224 0 0 0 239 255 255 25
  • python多变量赋值和三元表达式出错(求解答)

    直接给出问题吧 以后只在定义是进行多变量同时赋值算了 希望有大神能够解答 定义变量 minL 0 a 0 b 1 subL 2 print minL a b subL 0 0 1 2 方法一 minL a subL b if subL lt
  • STM32双串口

    STM32双串口的使用 最近老是需要stm32通过串口去跟WiFi模块 蓝牙模块 openmv进行数据交互 然后需要用到stm32的串口调试 就把这个程序整理成一个工程 方便调试 实验目的 外设模块 WiFi模块 蓝牙模块 openmv 发
  • 神经网络调参:loss 问题汇总(震荡/剧烈抖动,loss不收敛/不下降)

    目录 1 模型不收敛主要原因 1 1 learning rate设大了会带来跑飞 loss突然一直很大 的问题 1 2 数据库太小一般不会带来不收敛的问题 1 3 尽量用小模型 2 模型loss 不下降 2 Loss 函数不收敛 2 1 l
  • electron 应用优雅的配置 about 信息

    使用 electron 的 dialog tray 托盘栏菜单优雅简单的配置 about 关于本应用的信息 效果下图所示 项目依赖 electron 24 4 1 electron builder 23 6 0 electron build
  • 库默尔定理学习小记

    A组又出现了逆天的数竞定理 随便口胡一下 定理 有两个正整数n m p是质数 Cnn m C n m n含 的幂次等于 在 进制下的进位数 简略证明 Cnn m C n m n含 的幂次 i 1 n mpi i 1 npi i 1 mpi
  • Oracle入门笔记(九)——视图、序列、索引、同义词和权限等

    视图和索引 1 视图 2 序列 3 索引 4 同义词 5 数据控制语言 DCL 6 执行计划 1 视图 视图是 基于数据表或者另外一个视图的逻辑表 类似于一个数据表或者数据表间组合之后得到的数据窗口 通过窗口能够查看数据表或者表间组合时候得
  • ELK 企业级日志分析系统(理论加实战部署详解)

    ELK 企业级日志分析系统 理论加实战部署详解 文章目录 一 ELK 概述 1 1 ELK 的工作原理 二 部署详解 一 ELK Elasticsearch 集群部署 在Node1 Node2节点上操作 二 ELK Logstash 部署