互联网开网站怎么做/促销方法100种

互联网开网站怎么做,促销方法100种,香港做电商网站,人人装修网我们在开发中经常会写日志,所以需要有个日志可视化界面管理,使用ELK可以实现高效集中化的日志管理与分析,提升性能稳定性,满足安全合规要求,支持开发运维工作。 下述是我在搭建ELK时遇到的许许多多的坑,希望…

我们在开发中经常会写日志,所以需要有个日志可视化界面管理,使用ELK可以实现高效集中化的日志管理与分析,提升性能稳定性,满足安全合规要求,支持开发运维工作。

下述是我在搭建ELK时遇到的许许多多的坑,希望能替大家避开.

1. 环境准备

  • Elasticsearch: 用于存储和检索日志数据。

  • Logstash: 用于收集、处理和转发日志数据。

  • Kibana: 用于可视化和分析日志数据。

2. 安装 ELK 组件

你可以通过 Docker 快速安装 ELK 组件:

# 拉取 ELK 镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.0
docker pull docker.elastic.co/logstash/logstash:7.10.0
docker pull docker.elastic.co/kibana/kibana:7.10.0# 启动 Elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0# 启动 Logstash
docker run -d --name logstash -p 5044:5044 docker.elastic.co/logstash/logstash:7.10.0# 启动 Kibana
docker run -d --name kibana -p 5601:5601 --link elasticsearch:elasticsearch docker.elastic.co/kibana/kibana:7.10.0

若不通过Docker,可直接官网下载,如下:

2.1 下载Elasticsearch

       - 访问 Elasticsearch 下载页面,选择适合的版本(如 8.17.3)。

        - 解压下载的文件

        - 启动 Elasticsearch:

                默认情况下,Elasticsearch 会监听 9200 端口。

                访问 http://localhost:9200,确认 Elasticsearch 是否正常运行。

       

        避坑点1:

       在启动时,发现老是报错,查了很久都没有结果,最终终于排查出来是环境变量配置的问题.

        我们可以看下述它自带的配置文件,文件中说明了若配置了ES_JAVA_HOME,则会使用此配置指向的JDK,但是此处JAVA_HOME和CLASS_PATH的环境变量会影响启动,所以如果想要直接使用它自带的JDK,需要将JAVA_HOME和CLASS_PATH的环境变量暂时注释掉.

set SCRIPT=%0rem determine Elasticsearch home; to do this, we strip from the path until we
rem find bin, and then strip bin (there is an assumption here that there is no
rem nested directory under bin also named bin)
for %%I in (%SCRIPT%) do set ES_HOME=%%~dpI:es_home_loop
for %%I in ("%ES_HOME:~1,-1%") do set DIRNAME=%%~nxI
if not "%DIRNAME%" == "bin" (for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfIgoto es_home_loop
)
for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfIrem now set the classpath
set ES_CLASSPATH=!ES_HOME!\lib\*
set ES_MODULEPATH=!ES_HOME!\lib
set LAUNCHERS_CLASSPATH=!ES_CLASSPATH!;!ES_HOME!\lib\launchers\*;!ES_HOME!\lib\java-version-checker\*
set SERVER_CLI_CLASSPATH=!ES_CLASSPATH!;!ES_HOME!\lib\tools\server-cli\*set HOSTNAME=%COMPUTERNAME%if not defined ES_PATH_CONF (set ES_PATH_CONF=!ES_HOME!\config
)rem now make ES_PATH_CONF absolute
for %%I in ("%ES_PATH_CONF%..") do set ES_PATH_CONF=%%~dpfIset ES_DISTRIBUTION_TYPE=zipcd /d "%ES_HOME%"rem now set the path to java, pass "nojava" arg to skip setting ES_JAVA_HOME and JAVA
if "%1" == "nojava" (exit /b
)rem comparing to empty string makes this equivalent to bash -v check on env var
rem and allows to effectively force use of the bundled jdk when launching ES
rem by setting ES_JAVA_HOME=
if defined ES_JAVA_HOME (set JAVA="%ES_JAVA_HOME%\bin\java.exe"set JAVA_TYPE=ES_JAVA_HOMEif not exist !JAVA! (echo "could not find java in !JAVA_TYPE! at !JAVA!" >&2exit /b 1)rem check the user supplied jdk version!JAVA! -cp "%ES_HOME%\lib\java-version-checker\*" "org.elasticsearch.tools.java_version_checker.JavaVersionChecker" || exit /b 1
) else (rem use the bundled JDK (default)set JAVA="%ES_HOME%\jdk\bin\java.exe"set "ES_JAVA_HOME=%ES_HOME%\jdk"set JAVA_TYPE=bundled JDK
)rem do not let JAVA_TOOL_OPTIONS slip in (as the JVM does by default)
if defined JAVA_TOOL_OPTIONS (echo warning: ignoring JAVA_TOOL_OPTIONS=%JAVA_TOOL_OPTIONS%set JAVA_TOOL_OPTIONS=
)rem warn that we are not observing the value of $JAVA_HOME
if defined JAVA_HOME (echo warning: ignoring JAVA_HOME=%JAVA_HOME%; using %JAVA_TYPE% >&2
)rem JAVA_OPTS is not a built-in JVM mechanism but some people think it is so we
rem warn them that we are not observing the value of %JAVA_OPTS%
if defined JAVA_OPTS ((echo|set /p=warning: ignoring JAVA_OPTS=%JAVA_OPTS%; )echo pass JVM parameters via ES_JAVA_OPTS
)cd %ES_HOME%

成功启动后,访问地址效果:

2.2 安装 Logstash

  1. 下载 Logstash:
    • 访问 Logstash 下载页面,选择适合的版本(如 8.17.3)。

    • 解压下载的文件

  使用 -e 参数进行简单测试

bin/logstash -e 'input { stdin {} } output { stdout { codec => rubydebug } }'

若启动成功,可访问http://localhost:9600/看是否有json数据返回即可.

到此处,说明下载的Logstash没问题.

        

        2. 配置文件编写

        Logstash 的配置文件分为两类:主配置文件(logstash.conf)和管道配置文件(pipelines.yml)。

        

        1)logstash.conf 配置文件

logstash.conf 是 Logstash 的核心配置文件,定义了数据的输入、过滤和输出。它通常位于 Logstash 安装目录的 config 文件夹中。

  • 输入(Input):定义数据源,例如日志文件、网络端口等。
    示例:

    input {file {path => "/var/log/*.log"start_position => "beginning"}
    }
  • 过滤(Filter):对数据进行解析和处理,例如使用 Grok 插件解析日志。
    示例:

    filter {grok {match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request}" }}
    }
  • 输出(Output):定义数据的输出目标,例如 Elasticsearch、文件或控制台。
    示例:

  • output {elasticsearch {hosts => ["http://localhost:9200"]index => "logstash-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
    }

        (2)pipelines.yml 配置文件

pipelines.yml 文件用于定义管道的配置,包括管道的名称和配置文件路径。它通常位于 Logstash 安装目录的 config 文件夹中。

- pipeline.id: mainpath.config: "config/logstash-sample.conf"

避坑点2:

此处不知道怎么配置都会显示 No configuration found in the configured sources. 一直没找出原因

重新从配置的信息中找原因,最终发现是conf配置文件的问题.

logstash-sample.conf  示例如下:

input {# 示例3:HTTP 接收数据http {port => 8080codec => "json"}
}output {# 示例1:输出到 Elasticsearch(带安全认证)elasticsearch {hosts => ["http://localhost:9200"]index => "logs-%{+YYYY.MM.dd}"user => "elastic"password => "password"ssl => false}
}

 logstash.yml  此文件需要配置上去,否则会一直报错,很多教程中没有指这一点!!!


# 节点名称(用于集群标识)
node.name: "my-logstash-node"# 管道配置路径(可指定多个管道)
path.config: "config/pipelines/*.conf"# 数据存储路径(队列和持久化数据)
path.data: "data/"# 日志路径
path.logs: "logs/"# HTTP API 配置(用于监控和管理)
api.http.host: "0.0.0.0"
api.http.port: 9600# 性能调优(根据硬件调整线程和批处理大小)
pipeline.workers: 2          # 工作线程数(建议等于CPU核心数)
pipeline.batch.size: 125     # 每批处理事件数

上述坑点避开后,基本上都能启动了。效果如下:

2.3 安装 Kibana

  1. 下载 Kibana:

    • 访问 Kibana 下载页面,选择适合的版本(如 8.17.3)。

    • 解压下载的文件

  2. 配置 Kibana:
    编辑 config/kibana.yml 文件,设置 Elasticsearch 的地址:

    elasticsearch.hosts: ["http://localhost:9200"]
    server.host: "0.0.0.0"
  3. 启动 Kibana:

    ./bin/kibana
    • Kibana 会监听 5601 端口。

    • 访问 http://localhost:5601,确认 Kibana 是否正常运行。

首次启动时,报了下述错误:

 从日志上看起来应该是配置问题,依旧先检查配置文件 config/kibana.yml

原来是按上述的配置文件内容是不足够的,所以我又添加了一些配置信息(Elastic连接信息、Kibana安全参数等)

# 配置Kibana服务运行的主机地址,允许远程访问时可设置为"0.0.0.0"
server.host: "localhost"# 配置Kibana服务运行的端口
server.port: 5601# 配置Elasticsearch的地址,如果有多个节点,可以像下面这样列出
elasticsearch.hosts:- "http://localhost:9200"# 启用Kibana的安全功能
xpack.security.enabled: true# 配置Elasticsearch的用户名和密码
elasticsearch.username: "elastic"
elasticsearch.password: "your_password"

按上述配置文件重启后,依旧报错:

原因:kibana连接Elasticsearch不允许直接使用超级账号elastics,需要按照下述方式创建专用账号

使用elasticsearch-service-tokens CLI工具
  1. 打开终端或命令提示符。

  2. 运行以下命令来创建服务账号令牌:

    bash复制

    elasticsearch-service-tokens create elastic/kibana <token_name>

    其中elastic/kibana是Kibana的服务账号,<token_name>是你为这个令牌指定的名称,例如kibana-token

  3. 该命令会在$ES_HOME/config/service_tokens文件中保存新的服务令牌,并在终端输出Bearer令牌。

# 配置Kibana服务运行的主机地址,允许远程访问时可设置为"0.0.0.0"
server.host: "localhost"# 配置Kibana服务运行的端口
server.port: 5601# 配置Elasticsearch的地址,如果有多个节点,可以像下面这样列出
elasticsearch.hosts:- "http://localhost:9200"elasticsearch.serviceAccountToken: "AAEAAWVsYXN0aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1NldHZlZjdm9B"

根据生成的TOKEN,按上述最终的配置信息,重启服务即可,访问localhost:5601,出现下述界面说明成功了!

3. 集成项目

上述三个服务全部安装完成之后,我们就可以开始对接项目了.

Spring Boot 项目配置

3.1 添加依赖

在 pom.xml 中添加依赖:

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version>
</dependency>
3.2 添加配置

在 src/main/resources 目录下创建 logback-spring.xml 文件(此处需注意,若已存在logback相关xml文件,则不需要重新创建):

<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml"/><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>localhost:5044</destination><encoder class="net.logstash.logback.encoder.LogstashEncoder"/></appender><root level="INFO"><appender-ref ref="LOGSTASH"/><appender-ref ref="console"/></root>
</configuration>

添加上述配置,注意root节点不能重复,重复的话会以最后一个root节点为主.

3.3 测试:

在你的项目中将日志打印出来

logger.info("用户列表日志记录!!!");

若上述有问题,则需要检查是否已经创建了索引,先检查logstash的配置文件:

input {tcp {port => 5044codec => json_lines}
}output {# 示例1:输出到 Elasticsearch(带安全认证)elasticsearch {hosts => ["http://localhost:9200"]index => "springboot-logs-%{+YYYY.MM.dd}"user => "elastic"password => "XXX"ssl => false}
}

此处的tcp监听是监听springboot配置文件中对应的端口.

3.4 查看索引

output中的index则是elastic的索引名称,访问此路径确认索引是否创建成功:http://localhost:9200/_cat/indices?v

若创建成功,在下图中就能看到了

3.5 查看日志

有了索引,我们就可以在kibana中查看了,如下图:

Stack Management  -> Data views -> Create data view

Discover 中搜索并查看,如下图:

这样我们整个过程就结束了,也成功使用ELK查看到日志了!

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

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

相关文章

AI编程: 一个案例对比CPU和GPU在深度学习方面的性能差异

背景 字节跳动正式发布中国首个AI原生集成开发环境工具&#xff08;AI IDE&#xff09;——AI编程工具Trae国内版。 该工具模型搭载doubao-1.5-pro&#xff0c;支持切换满血版DeepSeek R1&V3&#xff0c; 可以帮助各阶段开发者与AI流畅协作&#xff0c;更快、更高质量地完…

手机屏幕摔不显示了,如何用其他屏幕临时显示,用来导出资料或者清理手机

首先准备一个拓展坞 然后 插入一个外接的U盘 插入鼠标 插入有数字小键盘区的键盘 然后准备一根高清线&#xff0c;一端链接电脑显示器,一端插入拓展坞 把拓展坞的连接线&#xff0c;插入手机充电口&#xff08;可能会需要转接头&#xff09; 然后确保手机开机 按下键盘…

第八届蓝桥杯单片机省赛

什么&#xff1f;你把最近几届省赛真题做完已经无题可做了&#xff0c;那不妨来看看老古董第八届省赛的题目吧&#xff01; 附件&#xff1a;第八届蓝桥杯单片机省赛 一、数码管 1.页面流转 以上的页面流转功能可以用下图总结&#xff1a; #mermaid-svg-38fdQpdydbMy5CyP {fo…

win10电脑鼠标速度突然变的很慢?

电脑鼠标突然变很慢&#xff0c;杀毒检测后没问题&#xff0c;鼠标设置也没变&#xff0c;最后发现可能是误触鼠标的“DPI”调节键。 DPI调节键在鼠标滚轮下方&#xff0c;再次点击即可恢复正常鼠标速度。 如果有和-的按键&#xff0c;速度变快&#xff0c;-速度变慢。 图源&…

【解决哈希冲突】

哈希冲突 如果两个不同的 key 通过哈希函数得到了相同的索引&#xff0c;这种情况就叫做「哈希冲突」。 哈希冲突不可能避免&#xff0c;只能在算法层面妥善处理出现哈希冲突的情况。 哈希冲突是一定会出现的&#xff0c;因为这个 hash 函数相当于是把一个无穷大的空间映射到…

文件操作详解(万字长文)

C语言文件操作 一、为什么使用文件&#xff1f;二、文件分类三、文件的打开和关闭四、文件的顺序读写4.1fputc4.2fgetc4.3fputs4.4fgets4.5 fprintf4.6 fscanf4.7 fwrite4.8 fread 五、文件的随机读写5.1 fseek5.2 ftell和rewind六、文件读取结束的判定七、文件缓冲区 一、为什…

基于 JDBC 的后端与 MySQL 数据库交互 javaweb

一、了解JDBC 二、添加MySQL的JDBC驱动包 三、使用JDBC连接数据库应用&#x1f517; 3.1创建一个包 3.2 查找实例 3.3 修改添加删除实例 四、封装 &#x1f4e6; DBConnection.java MysqlUtil.java 测试使用一下 测试1 测试2 在后端开发中&#xff0c;与数据库进行交…

贪心算法--

1.柠檬水找零 link:860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; code class Solution { public:bool lemonadeChange(vector<int>& bills) {// 贪心算法&#xff0c; 优先花出大面额bill&#xff0c; 尽可能保护小面额billint five 0, ten 0;// 不…

基于YOLO11深度学习的电瓶车进电梯检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

github生成badges的方法

在Github页面上生成类似下面这样的badge的方法 你可以通过以下步骤在GitHub个人主页的README中创建类似的技术栈徽章&#xff1a; 一、使用 Shields.io 生成徽章 Shields.io 是一个开源徽章生成工具&#xff0c;支持自定义文本、颜色、图标等参数。 1. 基础模板 https://…

vue3 二次封装uni-ui中的组件,并且组件中有 v-model 的解决方法

在使用uniappvue3开发中&#xff0c; 使用了uni-ui的组件&#xff0c;但是我们也需要自定义组件&#xff0c;比如我要自定一个picker 的组件&#xff0c; 是在 uni-data-picker 组件的基础上进行封装的 父组件中的代码 <classesselect :selectclass"selectclass"…

爬虫案例七Python协程爬取视频

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Python协程爬取视频 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 爬虫案例七协程爬取视频 提示&#xff1a;以下是本篇文章正文…

Python 爬虫实战案例 - 获取拉勾网招聘职位信息

引言 拉勾网&#xff0c;作为互联网招聘领域的佼佼者&#xff0c;汇聚了海量且多样的职位招聘信息。这些信息涵盖了从新兴科技领域到传统行业转型所需的各类岗位&#xff0c;无论是初出茅庐的应届生&#xff0c;还是经验丰富的职场老手&#xff0c;都能在其中探寻到机遇。 对…

LM Studio 替换源的方式解决huggingface.co无法访问的问题

安装软件完成之后&#xff0c;不要打开&#xff0c;打开了就直接关闭 在安装目录下&#xff0c;比如我安装在E:\Program Files\LM Studio 下面三个文件中的huggingface.co全部替换为hf-mirror.com然后再打开即可。 E:\Program Files\LM Studio\resources\app\.webpack\rende…

【模拟CMOS集成电路设计】带隙基准(Bandgap)设计与仿真(基于运放的电流模BGR)

【模拟CMOS集成电路设计】带隙基准&#xff08;Bandgap&#xff09;设计与仿真 前言工程文件&部分参数计算过程&#xff0c;私聊~ 一、 设计指标指标分析&#xff1a; 二、 电路分析三、 仿真3.1仿真电路图3.2仿真结果(1)运放增益(2)基准温度系数仿真(3)瞬态启动仿真(4)静态…

微服务拆分-远程调用

我们在查询购物车列表的时候&#xff0c;它有一个需求&#xff0c;就是不仅仅要查出购物车当中的这些商品信息&#xff0c;同时还要去查到购物车当中这些商品的最新的价格和状态信息&#xff0c;跟购物车当中的快照进行一个对比&#xff0c;从而去提醒用户。 现在我们已经做了服…

P2P中NAT穿越方案(UDP/TCP)(转)

转自&#xff1a;P2P中NAT穿越方案&#xff08;UDP/TCP&#xff09;_udp反向链接-CSDN博客 同&#xff1a;P2P中NAT穿越方案&#xff08;UDP/TCP&#xff09; - 知乎 (zhihu.com) 本文介绍了传统基于udp的打洞方式&#xff0c;更进一步阐述了tcp打洞的原理&#xff0c;是对于…

算法 之 树形dp 树的中心、重心

文章目录 重心实践题目小红的陡峭值 在树的算法中&#xff0c;求解树的中心和重心是一类十分重要的算法 求解树的重心 树的重心的定义&#xff1a;重心是树中的一个节点&#xff0c;如果将这个点删除后&#xff0c;剩余各个连通块中点数的最大值最小&#xff0c;那么这个节点…

游戏引擎学习第146天

音高变化使得对齐读取变得不可能&#xff0c;我们可以支持循环声音了。 我们今天的目标是完成之前一段时间所做的音频代码。这个项目并不依赖任何引擎或库&#xff0c;而是一个教育项目&#xff0c;目的是展示从头到尾运行一个游戏所需要的全部代码。无论你对什么方面感兴趣&a…

深入理解MySQL主从原理

导读 高鹏&#xff08;网名八怪&#xff09;&#xff0c;《深入理解MySQL主从原理》系列文的作者。 本系列通过GTID、Event、主库、从库、案例分析&#xff0c;五大块来详细讲解主从原理。 这篇文章重在学习笔记整理&#xff01; 在学习《深入理解MySQL主从原理》一书时&…