ELK部署

背景

很多公司还是在单体项目中苦苦挣扎,没有必要上elk系统,大家都懂的一个原则系统的技术栈越多系统越复杂,维护起来也越麻烦,在没有大流量高并发的情况下我们就用单体服务挺舒服。我们行业的特殊性做的都是BTB的项目,并发更是少的可怜,唯一出问题的可能性就是联表太多效率低了下来,做的和erp系统一样的臃肿。在追求微服务多节点部署的情况下这时就有必要使用ELK系统去查问题的可能性。不同服务之间的业务调用日志打印在不同目录下,这样就提高的查问题的效率,同时也提高了日志分析的方便性提高了效率。

我用的版本都是 6.7.2 很久之前pull下来的镜像,现在镜像加速好像失效了,去找个加速换下重启就能用了 需要尝试,不知道什么时候就又失效了

logstash             7.6.2     fa5b3b1e9757   4 years ago   813MB
kibana               7.6.2     f70986bc5191   4 years ago   1.01GB
elasticsearch        7.6.2     f29a1ee41030   4 years ago   791MB

大家可以看到是4年前pull的版本了

docker镜像加速

在linux系统上看下是否在目录下存在文件

[root@localhost ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://qoe0omj6.mirror.aliyuncs.com"]
}

有修改registry-mirrors  可以多添加几个,有能使用的我这个是不能使用。

然后重启docker 验证能否pull镜像

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

docker获取镜像

[root@localhost ~]# docker pull elasticsearch   不加版本默认最新版本
[root@localhost ~]# docker pull elasticsearch:6.7.2  指定下载最新版本   

其他两组件也是这样获取,注意使用版本一致的中间件不然会有兼容的问题

镜像启动

elasticsearch启动

mkdir -p /home/elasticsearch/config    创建文件夹后面启动容器使用mkdir -p /home/elasticsearch/dataecho "http.host: 0.0.0.0" >/home/elasticsearch/config/elasticsearch.yml   创建配置文件写入 可以用标准的配置文件  现在简单创建写下docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2

-p: 选项用于将容器的端口映射到主机的端口。

--name elasticsearch:  这为容器指定了一个名称(elasticsearch),便于后续管理和访问。您可以使用这个名称来停止、启动或删除容器。

-e: 选项用于设置环境变量

-v 选项用于挂载卷,将主机目录或文件挂载到容器内。

-d: 该选项表示以分离模式(detached mode)运行容器,即在后台运行容器,而不是在前台显示容器的日志。

-p 9200:9200 -p 9300:9300

9200 是 Elasticsearch 的 HTTP 端口,通常用于发送 REST 请求。
9300 是 Elasticsearch 的传输端口,通常用于节点间的通信。

这行命令将容器的 9200 和 9300 端口分别映射到主机的 9200 和 9300 端口。
       

-e "discovery.type=single-node" 设置 discovery.type 为 single-node,指示 Elasticsearch 以单节点模式运行,适合开发和测试环境。

-e "cluster.name=elasticsearch": 这一行设置了集群的名称为 elasticsearch。集群名称用于标识和管理多个节点的集群。

elasticsearch:7.6.2:这是要运行的 Docker 镜像的名称和标签。这里指定使用 elasticsearch 镜像的 7.6.2 版本。

直接ip:9200 如果出现页面部署成功

kibana启动

创建配置文件

vi /home/kibana/config/kibana.yml配置文件内容server.name: kibana
server.host: "0"
#elasticsearch.hosts: [ "http://elasticsearch:9200" ]
elasticsearch.hosts: [ "http://elasticsearch的IP:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
#设置kibana中文显示
i18n.locale: zh-CN

启动kibana

docker run --name kibana -p 5601:5601 \
-v /home/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-d kibana:7.6.2

 直接ip:5601 如果出现页面部署成功

logstash启动

创建些目录

mkdir -p /home/logstash/conf.d
mkdir -p /home/logstash/config
mkdir -p /home/logstash/logs在config下创建logstash.yml配置内容
http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: "http://192.168.42.117:9200" # es地址
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs可能出现的问题
xpack.monitoring.elasticsearch.hosts: "http://127.0.0.1:9200" # es地址 能是虚拟机配置问题我需要用本机ip才能访问  用http://127.0.0.1 本地不能访问到 es/home/logstash/conf.d 目录下的文件 *.conf 配置的是服务日志传给logstash的一些配置input{tcp {mode => "server"host => "0.0.0.0"port => 4560 # 这个端口随意,要配置到springboot项目中codec => json_lines}
}
output{elasticsearch{hosts=>["192.168.42.117:9200"]index => "gzllogstash-%{+YYYY.MM.dd}"}stdout { codec=> rubydebug }
}我用到的文件名字是log_to_es.conf  这个文件的内容就是上面的配置

启动

docker run -p 9600:9600 -p 4560:4560 --name=logstash \--restart=always --privileged=true\-e ES_JAVA_OPTS="-Xms1g -Xmx2g" \-v /home/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \-v /home/logstash/conf.d:/usr/share/logstash/config/conf.d \-v /home/logstash/logs:/usr/share/logstash/logs  \-d logstash:7.6.2

springboot 传日志到logstash

添加依赖 注意选择对应springboot的版本

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version>
</dependency>

配置logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="30 seconds"><!--  彩色日志依赖  --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/><conversionRule conversionWord="wex"converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/><conversionRule conversionWord="wEx"converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/><!--  日志文件储存地址, 通过application配置文件传入  --><!--    <springProperty scope="context" name="LOG_PATH" source="logback.logDir" />--><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--><property name="LOG_PATH" value="./logs"/><springProperty scope="context" name="appName" source="spring.application.name"/><!--  控制台彩色日志格式  --><property name="CONSOLE_LOG_PATTERN"value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!--  日志文件日志格式  --><property name="FILE_LOG_PATTERN"value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- 控制台输出 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 按照每天及大小生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_PATH}/${appName}.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件最大大小--><maxFileSize>100MB</maxFileSize><!--日志文件保留天数--><maxHistory>30</maxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><!-- 过滤级别,如果想分类生成日志文件的话(分成debug、info、error等三个日志文件, 每个文件只记录自己级别的日志),1. 直接把这个 <appender> 复制三分改一下 FileNamePattern 和 name.2. 把 <filter> 注释去掉改一下 level 就可以了--><!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">--><!--            <level>info</level>--><!--            <onMatch>ACCEPT</onMatch>--><!--            <onMismatch>DENY</onMismatch>--><!--        </filter>--></appender><!--输出到 logstash的 appender--><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--远程logstash ip:port,port应该是logstash默认为4560,你启动的是配置的端口 配置文件中的端口--><destination>192.168.42.117:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender><!--配置异步日志--><appender name="FILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender"><!--不丢失日志,默认的,如果队列的80%已满 则会丢弃TRACT,DEBUG,INFO级别的日志--><discardingThreshold>0</discardingThreshold><!--更改默认的队列的深度,改值会影响性能,默认值是256--><queueSize>512</queueSize><!--添加附加的appender,最多只能添加一个--><appender-ref ref="FILE"/></appender><!-- 日志输出级别如果使用springProfile, 就需要在application配置文件中通过 spring.profiles.active=dev 来指定环境,也可以直接去掉 <springProfile> 这个标签或者把它整个注释掉--><springProfile name="gzl,prod"><root level="INFO"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/><appender-ref ref="logstash"/></root><!--项目包的路径--><logger name="com.gzl.gateway" level="INFO" additivity="false"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/><appender-ref ref="logstash"/></logger><!--包--><!--<logger name="com.gzl.base.mapper" level="OFF"></logger>--><!--类--><!--<logger name="com.gzl.base.mapper.UserMapper." level="OFF"></logger>--><!--方法--><!--<logger name="com.gzl.base.controller.UserController.selectUserRoleAuthority" level="OFF"></logger>--><!--不打印某个类下的日志--><!--        <logger name="com.gzl.base.mapper.ProductInfoMapper" level="OFF"/>--></springProfile></configuration>

配置文件和正常的日志文件一样注意添加logstash相关的关键在于

   <!--输出到 logstash的 appender--><appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--远程logstash ip:port,port应该是logstash默认为4560,你启动的是配置的端口 配置文件中的端口--><destination>192.168.42.117:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender>

后面还会更新配置输出日志的格式内容等问题

验证下是否日志传到logstash中了

 docker logs -fn 1000 logstash

你能看到传过去的日志新写

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

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

相关文章

Linux网络应用——高级IO

目录 1. I/O 的重新理解 2. 五种 I/O 模型 ① 阻塞 && 非阻塞 ② 同步 I/O && 异步 I/O 3. select 模型 ① 非阻塞 I/O ② select 接口介绍 ③ 代码实现 ④ select 模型的优缺点 4. poll 模型 ① poll 接口介绍 ② 代码实现 ③ 与 select 模型的…

Dcoker Redis哨兵模式集群介绍与搭建 故障转移 分布式 Java客户端连接

介绍 Redis 哨兵模式&#xff08;Sentinel&#xff09;是 Redis 集群的高可用解决方案&#xff0c;它主要用于监控 Redis 主从复制架构中的主节点和从节点的状态&#xff0c;并提供故障转移和通知功能。通过 Redis 哨兵模式&#xff0c;可以保证 Redis 服务的高可用性和自动故…

使用 Wireshark 和 Lua 脚本解析通讯报文

在复杂的网络环境中&#xff0c;Wireshark 凭借其强大的捕获和显示功能&#xff0c;成为协议分析不可或缺的工具。然而&#xff0c;面对众多未被内置支持的协议或需要扩展解析的场景&#xff0c;Lua 脚本的引入为Wireshark 提供了极大的灵活性和可扩展性。本文将详细介绍如何使…

宝塔SSL证书申请失败,报错:申请SSL证书错误 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘(已解决)

刚安装宝塔申请SSL就报错&#xff1a;申请SSL证书错误 module OpenSSL.crypto has no attribute sign 面板、插件版本&#xff1a;9.2.0 系统版本&#xff1a;Alibaba Cloud Linux 3.2104 LTS 问题&#xff1a;申请SSL证书错误 module OpenSSL.crypto has no attribute sign…

自动驾驶控制与规划——Project 2: 车辆横向控制

目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu&#xff0c;…

双内核架构 Xenomai 4 安装教程

Xenomai 4是一种双内核架构, 继承了Xenomai系列的特点&#xff0c;通过在Linux内核中嵌入一个辅助核心&#xff08;companion core&#xff09;&#xff0c;来提供实时能力。这个辅助核心专门处理那些需要极低且有界响应时间的任务。 本文将在官网教程(https://evlproject.org/…

MySQL学习之DML操作

目录 插入 删除 修改 数据库事务 事务的特征&#xff08;ACID原则&#xff09; 原子性 一致性 隔离性 持久性 事务隔离级别 读未提交 读已提交 可重复读 序列化 脏读 虚读 幻读 插入 insert into 表名 values(); 要求插入数据的数量&#xff0c;类型要和定义…

clearvoice 语音降噪、语音分离库

参看: https://github.com/modelscope/ClearerVoice-Studio/tree/main ClearVoice 提供了一个统一的推理平台,用于语音增强、语音分离以及视听目标说话人提取。 代码参看: https://github.com/modelscope/ClearerVoice-Studio/tree/main/clearvoice https://github.com/mode…

linux打包qt程序

Linux下Qt程序打包_linuxdeployqt下载-CSDN博客 Linux/Ubuntu arm64下使用linuxdeployqt打包Qt程序_linuxdeployqt arm-CSDN博客 本篇文章的系统环境是 : 虚拟机ubuntu18.04 用下面这个qmake路径 进行编译 在 ~/.bashrc 文件末尾&#xff0c;qmake目录配置到文件末尾 将上图中…

qt-C++笔记之自定义类继承自 `QObject` 与 `QWidget` 及开发方式详解

qt-C笔记之自定义类继承自 QObject 与 QWidget 及开发方式详解 code review! 参考笔记 1.qt-C笔记之父类窗口、父类控件、对象树的关系 2.qt-C笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理 3.qt-C笔记之自定义类继承自 QObject 与 QW…

教师工作量管理系统

源代码地址&#xff1a;31、教师工作量管理系统 目录 1系统概述 1.1 研究背景 1.2研究目的 1.3系统设计思想 2相关技术 2.1 MYSQL数据库 2.2 B/S结构 2.3 Spring Boot框架简介 3系统分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2系统性…

LiveData源码研究

LiveData 源码分析 前言 用过MVVM的大概知道LiveData可以感知组件的生命周期&#xff0c;当页面活跃时&#xff0c;更新页面数据&#xff0c; 当页面处于非活跃状态&#xff0c;它又会暂停更新&#xff0c;还能自动注册和注销观测者&#xff0c;能有效避免内存泄漏和不必要的…

vscode+msys2+clang+xmake c++开发环境搭建

转载请标明出处&#xff1a;小帆的帆的专栏 安装msys2 下载msys2安装包&#xff1a;清华源下载地址安装msys2&#xff1a;安装目录&#xff0c;C:\Softwares\msys64 安装cling工具链&#xff0c;xmake &#xff01;&#xff01;&#xff01;在开始菜单中启动MSYS2 CLANG64,…

VMware ubuntu16.04怎么设置静态IP联网

1.将VMware桥接到当前电脑使用的网络上面&#xff1b; 2.点击网络符号&#xff0c;编辑连接&#xff1b; 3.双击有线连接1&#xff1b; 4.选择IPv4设置&#xff0c;将地址&#xff0c;子网掩码&#xff0c;网关&#xff0c;DNS服务器设置好&#xff0c;保存&#xff1b; 5.在终…

金蝶云苍穹踩过的坑(慢慢更新)

IDEA不能用最新版&#xff0c;不然搜不到金蝶的插件。 我用的是2024.1.7/2023.1.7 IDEA里增加金蝶插件库的地址也变了&#xff0c;现在是 https://tool.kingdee.com/kddt/idea-updatePlugins.xml 金蝶云苍穹部署在服务器 MAC本地IDEA调试的时候&#xff0c;登录N次能成功一次…

【人工智能学习之HDGCN训练自己的数据集】

【人工智能学习之HDGCN训练自己的数据集】 HD-GCN准备事项项目代码开源数据集第一行&#xff1a;帧数第二行&#xff1a;body数第三行&#xff1a;关节附加信息第四行&#xff1a;关节数5-29行&#xff1a;每个关节的数据之后的帧总结&#xff1a; 自定义2D数据集模型移植与修改…

Trimble天宝三维激光扫描仪在建筑工程竣工测量中的应用【沪敖3D】

竣工测量是建筑项目竣工阶段的一个至关重要的环节&#xff0c;它为建筑工程的质量验收和成果核查提供了核心的参考依据。传统的竣工测量方法&#xff0c;如全站仪测量&#xff0c;主要依赖于现场人工操作&#xff0c;存在一些明显的局限性&#xff0c;例如作业时间长、工作量大…

Unity A*算法实现+演示

注意&#xff1a; 本文是对基于下方文章链接的理论&#xff0c;并最终代码实现&#xff0c;感谢作者大大的描述&#xff0c;非常详细&#xff0c;流程稍微做了些改动&#xff0c;文末有工程网盘链接&#xff0c;感兴趣的可以下载。 A*算法详解(个人认为最详细,最通俗易懂的一…

MoonBit 核心编译器正式开源!

由 IDEA研究院基础软件中心打造的 MoonBit &#xff08;月兔&#xff09;AI 原生开发平台&#xff0c;今日宣布正式开源其核心的编译器 WebAssembly&#xff08;简称“Wasm”&#xff09; 后端。开发者现在可以利用 MoonBit 的能力做性能优化&#xff0c;且直接参与 MoonBit 的…

JS使用random随机数实现简单的四则算数验证

1.效果图 2.代码实现 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</ti…