当前位置: 首页 > article >正文

ELK--收集日志demo

ELK--收集日志demo

    • 安装ELK
    • 日志收集配置
    • 启动容器
    • springboot配置
    • 测试

之前项目多实例部署的时候,由于请求被负载到任意节点,所以查看日志是开多个终端窗口。后来做了简单处理,将同一项目的多实例日志存入同一个文件,由于存在文件锁的竞争,日志内容混乱,性能差且效果也不好。后来使用tail 命令仅在查看日志文件时汇总显示(后来改为multitail)。一直想试试ELK来着,简单做了下集成的demo。

安装ELK

这里简单提一下:

  • logstash:收集日志数据
  • elasticsearch:存取日志数据
  • kibana:数据展示
    这里使用docker compose安装,简单方便。为了方便服务调用,我直接关掉了elasticsearch的安全设置
# 定义网络
networks:
  es-network:
    driver: bridge
# 定义数据卷
volumes:
  es-data:
  kibana-data:
# 定义服务
services:
  # es设置
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.15.2
    container_name: es01
    logging:
      driver: json-file
    ports:
      - "9200:9200"
    networks:
      - es-network
    volumes:
      - es-data:/usr/share/elasticsearch
    environment:
      - ELASTIC_PASSWORD=thisIsPWD # 自定义密码
      - xpack.security.enabled=false # 禁用安全设置
    deploy:
      resources:
        limits:
          memory: 1GB
  kibana:
    image: docker.elastic.co/kibana/kibana:8.15.2
    container_name: kibana01
    logging:
      driver: json-file
    ports:
      - "5601:5601"
    networks:
      - es-network
    volumes:
      - kibana-data:/usr/share/kibana
    depends_on:
      - es01
    environment:
      - ELASTICSEARCH_HOSTS=http://es01:9200  # es host
      - ELASTICSEARCH_BASIC_AUTH_USER=elastic
      - ELASTICSEARCH_BASIC_AUTH_PASSWORD=thisIsPWD  # 密码
  logstash:
    image: docker.elastic.co/logstash/logstash:8.15.2
    container_name: logstash
    networks:
      - es-network
    ports:
      - "5044:5044"
    volumes:
      - /Users/mars/docker_data/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
      - /Users/mars/docker_data/logstash/pipeline/:/usr/share/logstash/pipeline/ #挂载管道配置
    depends_on:
      - es01

日志收集配置

compose配置文件中,logstash挂载了外部配置文件夹。
不用来源的数据可以单独定义一个管道配置来收集和处理日志数据。这里定义了两个测试用例,一个用来收集docker日志,一个用来收集Springboot日志

# docker-log.conf
input {
	file {
		path => "/var/lib/docker/containers/*/*.log"
		start_position => "end"
		sincedb_path => "/dev/null"
	}
}
output {
	elasticsearch {
		hosts => ["http://es01:9200"]
		index => "docker-logs-%{+YYYY.MM.dd}"
	}
}

# springboot-log.conf
input {
  tcp {
    port => 5044
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => ["http://es01:9200"]
    index => "springboot-logs-%{+YYYY.MM.dd}"
  }
}

启动容器

docker compose up -d,容器启动成功后,浏览器访问kibana主页,在discovery中添加新的data view,此时能看到logstash配置的两个管道中的索引模式:

  • docker-logs-%{+YYYY.MM.dd}
  • springboot-logs-%{+YYYY.MM.dd}
    分别创建对应的data view即可。

springboot配置

  1. 添加依赖
  2. 配置日志
<dependency>
	<groupId>net.logstash.logback</groupId>
	<artifactId>logstash-logback-encoder</artifactId>
	<version>8.0</version>
</dependency>

<!-- 日志配置-->
<configuration>
	<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
		<destination>localhost:5044</destination><!-- logstash监听端口-->
		<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
			<providers>
				<timestamp />
				<logger />
				<threadName />
				<level />
				<message />
				<logstashMarkers />
				<arguments />
				<stackTrace />
			</providers>
		</encoder>
	</appender>

	<root level="INFO">
		<appender-ref ref="LOGSTASH" />
	</root>
</configuration>

测试

Springboot中调用接口,kibana中通过切换不同的命名空间进行快速的日志查询定位
在这里插入图片描述


http://www.kler.cn/news/327782.html

相关文章:

  • 清美项目 vue总结
  • PPT 快捷键使用、技巧
  • 卷积神经网络(CNN)的计算量和参数怎么准确估计?
  • 独立样本t检验及其案例分析
  • 代码训练营 day17|LeetCode 235,LeetCode 701,LeetCode 450
  • 线性方程组的迭代方法
  • IP协议讲解
  • 唱响红色志愿,赞歌献给祖国——杭州建德市庆祝中华人民共和国成立75周年联欢盛宴纪实
  • 等保测评中的密码学应用分析
  • Artec Leo 3D扫描助力Illumaesthetic公司加速汽车定制
  • DCIM系统的作用
  • 【Power Query】M函数-List.Sum
  • OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用
  • css 边框流光效果
  • 算法刷题笔记 约数个数(详细注释的C++实现)
  • 钉钉如何请求webhook发送信息
  • 基于JAVA+SpringBoot+Vue的校园商铺管理系统
  • Java之线程篇七
  • 解读 Story Protocol:IP 与区块链的潜力与障碍
  • 从零开始Ubuntu24.04上Docker构建自动化部署(四)Docker安装gitlab
  • 微信小程序转化为uni-app项目
  • 这个科技工厂藏着拼多多的「数字田园梦」
  • OpenHarmony(鸿蒙南向)——平台驱动指南【PWM】
  • 学Java还是c++好?
  • 如何在字节跳动的marscode上部署AI API,却意外地将功能搞废了?——分享踩坑经历
  • SpringCloud源码:服务端分析(二)- EurekaServer分析
  • 滚雪球学Oracle[1.1讲]:Oracle数据库基础概念
  • RabbitMQ高级特性-发送方确认
  • 使用scroll-behavior属性实现页面平滑滚动的几个问题
  • 力扣经典笔试题 最小K个数 小根堆 大根堆 快速排序 一题多解