SpringBoot监控

news2024/12/26 15:38:26

文章目录

  • 一、Prometheus+Grafana监控Springboot
    • 1、简介
    • 2、SpringBoot应用镜像搭建
      • 2.1 springboot应用创建
      • 2.2 镜像创建
    • 3、Prometheus
      • 3.1 概述
      • 3.2 Prometheus创建
    • 4、Grafana可视化监控
      • 4.1 可视化
      • 4.2 告警设置
  • 二、轻量级日志系统Loki
    • 1、简介
      • 1.1 介绍
      • 1.2 与ELK差异
    • 2、grafana loki日志系统基本使用
      • 2.1 本机日志收集
      • 2.2 docker日志容器查看
      • 2.3 grafana可视化
    • 3、grafana+prometheus+loki 监控docker容器收集服务日志
      • 3.1 创建grafana,prometheus文件夹及配置文件
      • 3.2 创建loki 文件夹及配置文件
      • 3.3 创建compose文件
      • 3.4 收集日志
      • 3.5 测试与模板

一、Prometheus+Grafana监控Springboot

1、简介

任何一个系统上线,运维监控都太重要了。关于Springboot微服务的监控,之前写过Spring Boot Admin服务监控,这个方案可以实时监控并提供告警提醒功能,但不能记录历史数据,无法查看过去1小时或过去1天等运维情况。本文介绍Prometheus + Grafana的方法监控Springboot 2.X,实现美观漂亮的数据可视化。

2、SpringBoot应用镜像搭建

2.1 springboot应用创建

引入依赖,springboot选用2.x,jdk8

<dependencies>
    <!-- Exposition servlet -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!-- prometheus -->
    <!-- Hotspot JVM metrics-->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
</dependencies>

创建测试Controller,提供1000个线程方法

@RestController
@RequestMapping("/test")
public class TestController {

  private static final Logger logger = LoggerFactory.getLogger(TestController.class);

  /**
   * 创建线程
   * 
   * @return
   */
  @RequestMapping("")
  public String test() {
    for (int i = 0; i < 1000; i++) {
      new Thread(() -> {
        logger.info(Thread.currentThread().getName());
      }).start();
    }
    return "success";
  }

}

在resources目录下创建application.yml配置文件,endpoints可以参考:SpringBoot生产监控

server: 
  port: 8888
  
spring: 
  application: 
    name: monitor-demo
  security: 
    user: 
      name: admin
      password: 123456 
 
management: 
  endpoints:
    web:
      exposure:
        include: "*"

2.2 镜像创建

上传服务器创建Dockerfile

# 基于java镜像创建新镜像
FROM java:8
# 作者
MAINTAINER shawn
# 将jar包添加到容器中并更名为app.jar
ADD  ./visualization.jar /visualization.jar
# 运行jar包
ENTRYPOINT ["nohup","java","-jar","/visualization.jar","&"]

打包与运行

docker build -t demo01 .
docker run -d -p 8888:8888 --name demo01 demo01
docker ps -a
docker logs demo01
# 浏览器访问,输入用户名密码:admin/123456
http://192.168.31.98:8888/actuator/prometheus

3、Prometheus

3.1 概述

Prometheus是一个开源的服务监控系统时间序列数据库,通过Http请求拉取被监控的服务暴露的端点公开的度量列表和值,然后存放到时序数据库中,在现在最常见的Kubernetes容器管理系统中。最好再通过 Grafana的Dashboard进行图表展示分析和告警

3.2 Prometheus创建

mkdir -p visual/prometheus
cd visual

docker pull prom/prometheus
docker images
# 注意这里先创建好配置文件,配置文件见下面


# 开始启动运行,注意修改路径
docker run --name=prometheus --privileged=true \
-p 9090:9090 -m 500M \
--restart=on-failure:3 \
-v /home/shawn/visual/prometheus.yml:/prometheus.yml \
-v /home/shawn/visual/prometheus/data:/data -d prom/prometheus \
--config.file=/prometheus.yml

docker ps

# 然后就可以打开网页查看
http://192.168.31.98:9090/targets

准备配置文件prometheus.yml

scrape_configs: 
  # 可随意指定,默认保存15天
  - job_name: monitor-demo
    # 多久采集一次数据
    scrape_interval: 5s
    # 采集时的超时时间
    scrape_timeout: 5s
    # 采集的路径
    metrics_path: /actuator/prometheus
    scheme: http
    basic_auth:
      username: admin
      password: 123456
    # 采集服务的地址,设置成Springboot应用所在服务器的具体地址
    static_configs:
      # 可以多个地址- targets: ['hostname:9000','hostname:8080']
      - targets:
        - 192.168.31.98:8888

结果页面
在这里插入图片描述

4、Grafana可视化监控

4.1 可视化

Docker部署Grafana,注意镜像源的修改

docker pull grafana/grafana
docker images

# 启动 
docker run --name=grafana -p 3000:3000 --restart=always -d grafana/grafana

浏览器访问:http://192.168.31.98:3000,输入用户名密码:admin/admin。成功登录后首先导入数据源,Settings-->Data Sources-->选择Prometheus -->url填写http://192.168.31.98:9090(刚才Prometheus 的地址)-->保存

然后导入可视化面板:点击+号 --> Import --> 输入模板链接或ID --> 点击Load

# 这里推荐一个模板id:10280
# 模板官网:https://grafana.com/grafana/dashboards

当然各个面板可以自定义,不过要注意的是,面板的数据需要在http://192.168.31.98:9090/graph查得到才行,可以点击Explore→Metrics browser查看
在这里插入图片描述

4.2 告警设置

docker run --name=grafana -p 3000:3000 \
-v /home/shawn/visual/custom.ini:/usr/grafana/conf/custom.ini \
--restart=always -d grafana/grafana \
--config /usr/grafana/conf/custom.ini

custom.ini

#第522行修改smtp配置,所有修改配置前 ; 注释符号需要取消,将对应行,改为以下内容:
[smtp]
#启用smtp
enabled = true                 
#qq smtp服务地址
host = smtp.qq.com:465        
#qq邮箱用户名
user = 86251xxx@qq.com   
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = xxxxx     #授权密码
#邮件From地址,和登录用户一致即可。
from_address = 86251xxx@qq.com  
#修改完邮件配置后修改domain信息,邮件内容中包含Grafana的访问地址,默认地址为localhost

二、轻量级日志系统Loki

Loki官网:https://grafana.com/oss/loki/

1、简介

1.1 介绍

Loki是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。 开发语言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为索引,而不是对全文进行检索,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据签,极大地降低了日志索引的存储。系统架构十分简单,由以下3个部分组成 :

  • Loki 是主服务器,负责存储日志和处理查询 。
  • promtail 是代理,负责收集日志并将其发送给 loki 。
  • Grafana 用于 UI 展示。

只要在应用程序服务器上安装promtail来收集日志然后发送给Loki存储,就可以在Grafana UI界面通过添加Loki为数据源进行日志查询(如果Loki服务器性能不够,可以部署多个Loki进行存储及查询)。作为一个日志系统不关只有查询分析日志的能力,还能对日志进行监控和报警

1.2 与ELK差异

  • ELK虽然功能丰富,但规模复杂,资源占用高,操作苦难,很多功能往往用不上,有点杀鸡用牛刀的感觉。
  • 不对日志进行全文索引。通过存储压缩非结构化日志和仅索引元数据,Loki 操作起来会更简单,更省成本。
  • 通过使用与 Prometheus 相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。
  • 安装部署简单快速,且受 Grafana 原生支持

2、grafana loki日志系统基本使用

高版本可以参考:https://grafana.com/docs/loki/latest/installation/docker/

2.1 本机日志收集

这里直接使用docker-compose进行安装了,docker-compose -f docker-compose.yaml up -d

version: "3"
networks:
  loki:
services:
  loki:
    image: grafana/loki:1.5.0
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - LANG=zh_CN.UTF-8
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml
    networks:
      - loki

  promtail:
    image: grafana/promtail:1.5.0
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - LANG=zh_CN.UTF-8
    # 日志映射路径自己修改
    volumes:
      - /var/log/:/var/log/
    command: -config.file=/etc/promtail/docker-config.yaml
    networks:
      - loki

  grafana:
    image: grafana/grafana:latest
    restart: always
    environment:
      - TZ=Asia/Shanghai
      - LANG=zh_CN.UTF-8
    ports:
      - "3000:3000"
    networks:
      - loki

2.2 docker日志容器查看

promtail只能收集本机的日志文件,如果要收集docker容器日志文件,需要在安装一个docker插件loki-docker-driver

# 安装插件
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
# 当有新版本时, 更新plugins
docker plugin disable loki --force
docker plugin upgrade loki grafana/loki-docker-driver:latest --grant-all-permissions
docker plugin enable loki
systemctl restart docker

对于loki的docker plugin有两种使用方式。

  • 配置daemon.json,收集此后创建的所有容器的日志(注意,是配置daemon.json后重启docker服务后创建的容器才会把日志输出到loki
  • 新建容器时指定logging类型为loki,这样只有指定了logging的容器才会输出到loki

全局收集配置

编辑daemon.json,linux下默认路径是/etc/docker/daemon.json (需要sudo), windows则默认是%userprofile%\.docker\daemon.json

{
  # 加速地址
  "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
  "log-driver": "loki",
  "log-opts": {
    # 配置的loki服务器地址
    "loki-url": "http://192.168.1.1:3100/loki/api/v1/push",
    # "loki-pipeline-stages": "- multiline:\n      firstline: '^\[\d{2}:\d{2}:\d{2} \w{4}\]'\n",
    "max-size": "50m",
    "max-file": "10"
  }
}

  • max-size表示日志文件最大大小
  • max-file表示最多10个日志文件,都是对单个容器来说的,
  • multiline是配置多行识别(默认最多128行),转为单行,firstline表示单条日志的首行正则表达式。例如 [03:00:32 INFO] 开头这种格式,所以对应正则是^\[\d{2}:\d{2}:\d{2} \w{4}\] 按照你自己的日志开头编写对应正则替换即可

最后重启docker,sudo systemctl restart docker,在此之后创建的容器默认都会把日志发送到loki

docker run配置日志输出到loki

通过docker run启动容器,可以通过–log-driver来指定为loki,进行特定的容器日志收集

docker run -d -p 8888:8888 --rm --name=demo01 \
--log-driver=loki --log-opt loki-url="http://YOUR_IP:3100/loki/api/v1/push" \
--log-opt max-size=50m --log-opt max-file=10 \
demo01

  • –log-driver=loki指定日志驱动器为loki
  • –log-opt loki-url则指定了loki的url
  • –log-opt max-size日志最大大小
  • –log-opt max-file日志文件最大数量

docker-compose 配置日志输出到loki

docker-compose 小于3.4可以对需要日志输出的配置添加配置如下,注意:max-size和max-file这里需要加引号

logging:
  driver: loki
  options:
    loki-url: "http://YOUR_IP:3100/loki/api/v1/push"
    max-size: "50m"
    max-file: "10"
    loki-pipeline-stages: |
      - multiline:
          firstline: '^\[\d{2}:\d{2}:\d{2} \w{4}\]'

对于3.4及其以上版本可以通过定义模板来减少代码量

version: "3.4"

x-logging:
  &loki-logging
  driver: loki
  options:
    loki-url: "http://YOUR_IP:3100/loki/api/v1/push"
    max-size: "50m"
    max-file: "10"
    loki-pipeline-stages: |
      - multiline:
          firstline: '^\[\d{2}:\d{2}:\d{2} \w{4}\]'


services:
  host:
    container_name: grafana
    image: grafana/grafana
    environment:
    - TZ=Asia/Shanghai
    - LANG=zh_CN.UTF-8
    logging: *loki-logging

2.3 grafana可视化

打开grafana,http://192.168.1.1:3000(换成自己的ip),账户密码为admin/admin,进入后首先配置配置Data sources,选择Loki数据源,url填写http://192.168.1.1:3100(换成自己的ip),保存后点击Explore即可成功查看

在这里插入图片描述

3、grafana+prometheus+loki 监控docker容器收集服务日志

3.1 创建grafana,prometheus文件夹及配置文件

cd ~
# 创建grafana文件夹
mkdir -p grafana/grafana
mkdir -p grafana/grafana/data

# 创建prometheus文件夹
mkdir -p grafana/prometheus
mkdir -p grafana/prometheus/data
mkdir -p grafana/prometheus/log

# 创建prometheus配置文件
vim grafana/prometheus/prometheus.yml

注意ip和路径的修改

global:
  scrape_interval:     15s
  evaluation_interval: 15s

# 报警暂时不需要,后续可以添加
#alerting:
#  alertmanagers:
#  - static_configs:
#    - targets:
#      - alertmanager:9093

rule_files:
  - "*rules.yml"

scrape_configs:
  # prometheus
  - job_name: 'prometheus'
    static_configs:
    - targets: ['192.168.249.149:9090']
  # 主机监控
  - job_name: 'node'
    static_configs:
    - targets: ['192.168.249.149:9100']
    
  # docker资源监控
  - job_name: 'cadvisor'
    static_configs:
    - targets: ['192.168.249.149:8080']
    
# springboot 项目监控
# springboot 监控需要项目中集成prometheus
  - job_name: monitor-demo
    # 多久采集一次数据
    scrape_interval: 5s
    # 采集时的超时时间
    scrape_timeout: 5s
    # 采集的路径
    metrics_path: /actuator/prometheus
    scheme: http
    basic_auth:
      username: admin
      password: 123456
    # 采集服务的地址,设置成Springboot应用所在服务器的具体地址
    static_configs:
      # 可以多个地址- targets: ['hostname:9000','hostname:8080']
      - targets:
        - localhost:8888
 #  - job_name: 'alertmanager'
#    static_configs:
#    - targets: ['alertmanager:9093']


3.2 创建loki 文件夹及配置文件

mkdir -p grafana/loki
mkdir -p grafana/loki/chunks
mkdir -p grafana/loki/rules

vim grafana/loki/local-config.yaml
auth_enabled: false

server:
  http_listen_port: 3100

common:
  path_prefix: /loki
  storage:
    filesystem:
      chunks_directory: /loki/chunks
      rules_directory: /loki/rules
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

## 日志保存时长配置 12小时的倍数
table_manager: 
  retention_deletes_enabled: true 
  retention_period: 480h 

ruler:
  alertmanager_url: http://localhost:9093

3.3 创建compose文件

vim grafana/docker-compose.yml

version: "2" 
 
networks: 
  prom: 
 
services: 
  prometheus: 
    image: prom/prometheus:latest 
    container_name: prometheus 
    hostname: prometheus 
    restart: always 
    user: root
    volumes: 
      # 挂载prometheus配置文件
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml 
      - ./prometheus/data:/prometheus 
      - ./prometheus/log:/var/log/
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=7d'
    ports: 
      - "9090:9090" 
    networks: 
      - prom 
  grafana: 
    image: grafana/grafana:latest 
    container_name: grafana 
    hostname: grafana 
    restart: always
    user: root
    volumes: 
      - ./grafana/data:/var/lib/grafana 
    ports: 
      - "3000:3000" 
    networks: 
      - prom 
  node-exporter: 
    image: prom/node-exporter:latest 
    container_name: node-exporter 
    hostname: exporter 
    restart: always 
    ports: 
      - "9100:9100" 
    networks: 
      - prom 
  cadvisor: 
    image: google/cadvisor:latest 
    container_name: cadvisor 
    hostname: cadvisor 
    restart: always 
    volumes: 
      # 挂载docker目录,为了监控docker使用情况,必须
      - /:/rootfs:ro 
      - /var/run:/var/run:rw 
      - /sys:/sys:ro 
      - /var/lib/docker/:/var/lib/docker:ro 
    ports: 
      - "8080:8080" 
    networks: 
      - prom 
  loki: 
    image: grafana/loki:latest 
    container_name: loki 
    hostname: loki
    restart: always
    user: root
    volumes: 
      # 挂载chunks文件夹及配置文件,loki收集到日志后会存储到chunks中
      - ./loki/chunks:/loki/chunks 
      - ./loki/rules:/loki/rules 
      - ./loki/local-config.yaml:/etc/loki/local-config.yaml 
    ports: 
      - "3100:3100" 
    networks: 
      - prom

启动命令,注意命令和路径,实在grafana目录中启动

cd grafana
# docker-compose up -d
docker-compose -f docker-compose.yml up -d

3.4 收集日志

使用loki-docker-driver,docker 安装loki驱动收集日志

docker plugin install  grafana/loki-docker-driver:latest --alias loki --grant-all-permissions

# 日志收集,或者全部容器都收集方法见上面
docker run -d -p 8888:8888 --rm --name=demo01 \
--log-driver=loki --log-opt \
loki-url="http://192.168.249.149:3100/loki/api/v1/push" --log-opt max-size=50m \
--log-opt max-file=10 demo01

需要使用loki记录日志的docker-compose文件中替换日志收集驱动

logging:
  driver: loki
  options:
    loki-url: "http://192.168.249.149:3100/api/prom/push"
    loki-retries: "5"
    loki-batch-size: "400"

使用promtail收集日志文件

cd ~
vim grafana/promatil/config.yml
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /var/log-position/positions.yaml # 记录日志上传的行号

# loki服务地址
client:
  url: http://192.168.249.149:3100/loki/api/v1/push

scrape_configs:
- job_name: my-service
  static_configs:
  - targets:
      - localhost
    labels:
      job: test-service
      __path__: /var/log/*.log

vim grafana/promatil/promtail.yml

version: "2"

services:
  grafana_promtail:
    container_name: promtail2
    image: grafana/promtail:2.4.0
    restart: always
    user: root
    volumes:
      - /var/log:/var/log
      - ./promatil/config.yml:/etc/promtail/config.yml

最后启动

cd grafana
# docker-compose up -d
docker-compose -f promtail.yml up -d
# 如果改了配置文件
docker-compose -f promtail.yml rebuild
# 如果修改了编排文件,就需要down后up

3.5 测试与模板

# 好用的grafana模板下载
# https://grafana.com/dashboards

Spring Boot 2.1 Statistics: 10280
Spring Boot Statistics: 6756
1 Node Exporter for Prometheus Dashboard EN 20201010: 11074
Docker and system monitoring: 893
Docker Container & Host Metrics: 10619

在这里插入图片描述


docker-compose安装loki套件(loki+grafana)

docker-compose安装grafana+prometheus+loki 监控docker容器收集服务日志

k8s学习(三十二)K8s部署Loki日志收集

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

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

相关文章

linux宝塔安装和部署node全栈项目

使用服务器:阿里云ECS系列 服务器操作系统: Alibaba Cloud Linux 2.1903 LTS 64位 连接服务器方式: Workbench远程连接 使用公网IP登录 Workbench远程桌面&#xff0c;使用命令安装linux宝塔面板操作服务器: 1.登录linux宝塔面板&#xff0c;使用终端命令安装linux宝塔 yum i…

【操作系统】计算机系统概述

文章目录操作系统的概念、功能和目标熟悉的操作系统计算机系统的层次结构操作系统的概念操作系统的功能和目标作为系统资源的管理者作为用户和计算机之间的接口作为最接近硬件的层次操作系统的四个特征并发共享并发和共享的关系虚拟异步操作系统的发展和分类手工操作阶段单道批…

1207. 大臣的旅费/树的直径【AcWing】

1207. 大臣的旅费 很久以前&#xff0c;T王国空前繁荣。 为了更好地管理国家&#xff0c;王国修建了大量的快速路&#xff0c;用于连接首都和王国内的各大城市。 为节省经费&#xff0c;T国的大臣们经过思考&#xff0c;制定了一套优秀的修建方案&#xff0c;使得任何一个大…

使用Docker-Compose搭建Redis集群

1. 集群配置3主3从由于仅用于测试&#xff0c;故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…

Python 使用 pip 安装 matplotlib 模块(秒解版)

长话短说&#xff1a;本人下载 matplotlib 花了大概三个半小时屡屡碰壁&#xff0c;险些暴走。为了不让新来的小伙伴走我的弯路&#xff0c;特意创作本片文章指明方向。 1.首先需要下载 python 我直接是在电脑自带的软件商店里下载的&#xff0c;图方便&#xff0c;当然在官网下…

操作系统 四(设备管理)

I/O系统功能 隐藏I/O设备的细节&#xff1b;保证设备无关性&#xff1b;提高处理机和I/O设备的利用率&#xff1b;对I/O设备进行控制&#xff1b;确保对设备的正确共享&#xff1b;处理错误。中断、通道、DMA概念 中断&#xff1a;CPU对I/O设备发来的中断信号的一种响应DMA&am…

【配电网优化】基于串行和并行ADMM算法的配电网优化研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

超详细讲解文件函数

超详细讲解文件函数&#xff01;&#xff01;&#xff01;&#xff01;字符输入/输出函数fgetcfputc文本行输入/输出函数fgetsfputs格式化输入/输出函数fscanffprintf二进制输入/输出函数freadfwrite打开/关闭文件函数fopenfclose字符输入/输出函数 fgetc fgetc函数可以从指定…

个人谈谈对ThreadLocal内存泄露的理解

个人谈谈对ThreadLocal内存泄露的理解ThreadLocal作用ThreadLocalMap内存泄露解释为什么要这样设计ThreadLocalMap的实现思路ThreadLocal作用 平时我们会使用ThreadLocal来存放当前线程的副本数据&#xff0c;让当前线程执行流中各个位置&#xff0c;都可以从ThreadLocal中获取…

Java SPI 机制详解

在面向对象的设计原则中&#xff0c;一般推荐模块之间基于接口编程&#xff0c;通常情况下调用方模块是不会感知到被调用方模块的内部具体实现。一旦代码里面涉及具体实现类&#xff0c;就违反了开闭原则。如果需要替换一种实现&#xff0c;就需要修改代码。 为了实现在模块装…

使用packetbeat对MySQL进行网络抓包

文章目录一、Packetbeat 简介二、packetbeat部署和使用2.1 官方下载解压2.2 修改配置文件2.3 导入索引模板和dashboard2.4 启动packetbeat三、效果展示一、Packetbeat 简介 Packetbeat 是一款轻量型实时网络数据包分析器&#xff0c;能够将主机和容器中的数据发送至 Logstash 或…

uboot编译分析

uboot编译分析 V 1 –> Q ,在一行命令前面加上表示不会在终端输出命令 KCONFIG_CONFIG ? .config.config 默认是没有的&#xff0c;默认是需要使用命令“make xxx_defconofig”先对uboot进行配置&#xff0c;配置完成就会在uboot根目录下生成.config。如果后续自行调整…

多种方法解决谷歌(chrome)、edge、火狐等浏览器F12打不开调试页面或调试模式(面板)的问题。

文章目录1. 文章引言2. 解决问题3. 解决该问题的其他方法1. 文章引言 不论是前端开发者&#xff0c;还是后端开发者&#xff0c;我们在调试web项目时&#xff0c;偶尔弹出相关错误。 此时&#xff0c;我们需要打开浏览器的调试模式&#xff0c;如下图所示&#xff1a; 通过浏…

智能拣配单解决方案

电子货架标签系统&#xff08;ESLs&#xff09;&#xff0c;是一种放置在货架上、可替代传统纸质价格标签的电子显示装置&#xff0c; 每一个电子货架标签通过有线或者无线网络与商场计算机数据库相连&#xff0c; 并将最新的商品价格通过电子货架标签上的屏显示出来。 电子…

基于微信小程序图书馆管理系统

开发工具&#xff1a;IDEA、微信小程序服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8项目构建&#xff1a;maven数据库&#xff1a;mysql5.7前端技术&#xff1a;vue、uniapp服务端技术&#xff1a;springbootmybatis-plus本系统分微信小程序和管理后台两部分&#xff0c;项…

量子计算(7)pyqpanda编程2循环与条件判断

目录 一、QWhile 二、QIf 各位读者老爷们&#xff0c;大家好呀&#xff0c;前些时忙着学校的期末考试&#xff0c;小编好久没更新量子计算的文章啦&#xff0c;这段时间也有读者私信小编&#xff0c;问了一些问题。我知道大家都很急&#xff0c;但大家先别急。这不&#xff0…

【数据结构】——队列

文章目录前言一.什么是队列&#xff0c;队列的特点二、队列相关操作队列的相关操作声明队列的创建1.队列的初始化2.对队列进行销毁3.判断队列是否为空队列4.入队操作5.出队操作6.取出队头数据7. 取出队尾数据8.计算队伍的人数总结前言 本文章讲述的是数据结构的特殊线性表——…

Python3 错误和异常实例及演示

作为 Python 初学者&#xff0c;在刚学习 Python 编程时&#xff0c;经常会看到一些报错信息&#xff0c;在前面我们没有提及&#xff0c;这章节我们会专门介绍。 Python 有2种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xff08;断言&#xff09;用于判断…

通信算法之一百零四:QPSK完整收发仿真链路

1.发射机物理层基带仿真链路 1.1 % Generates the data to be transmitted [transmittedBin, ~] BitGenerator(); 2.2 % Modulates the bits into QPSK symbols modulatedData QPSKModulator(transmittedBin); 2.3 % Square root Raised Cosine Transmit Filter %comm…

SpringBoot参数请求处理

一、请求映射 请求映射原理 DispatcherServlet 继承了 FrameworkServlet(抽象类&#xff0c;继承了 HttpServletBean&#xff0c;实现了 ApplicationContextAware 接口)&#xff0c;重写了 doService() 方法 在 doService() 方法里定义了 doDispatch() 方法&#xff1b;doDi…