kubernetes-filebeat

1. deploy 文件

curl -L -O https://raw.githubusercontent.com/elastic/beats/8.14/deploy/kubernetes/filebeat-kubernetes.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: filebeatnamespace: kube-systemlabels:k8s-app: filebeat
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: filebeatlabels:k8s-app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API groupresources:- namespaces- pods- nodesverbs:- get- watch- list
- apiGroups: ["apps"]resources:- replicasetsverbs: ["get", "list", "watch"]
- apiGroups: ["batch"]resources:- jobsverbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: filebeat# should be the namespace where filebeat is runningnamespace: kube-systemlabels:k8s-app: filebeat
rules:- apiGroups:- coordination.k8s.ioresources:- leasesverbs: ["get", "create", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: filebeat-kubeadm-confignamespace: kube-systemlabels:k8s-app: filebeat
rules:- apiGroups: [""]resources:- configmapsresourceNames:- kubeadm-configverbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: filebeat
subjects:
- kind: ServiceAccountname: filebeatnamespace: kube-system
roleRef:kind: ClusterRolename: filebeatapiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: filebeatnamespace: kube-system
subjects:- kind: ServiceAccountname: filebeatnamespace: kube-system
roleRef:kind: Rolename: filebeatapiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: filebeat-kubeadm-confignamespace: kube-system
subjects:- kind: ServiceAccountname: filebeatnamespace: kube-system
roleRef:kind: Rolename: filebeat-kubeadm-configapiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:name: filebeat-confignamespace: kube-systemlabels:k8s-app: filebeat
data:filebeat.yml: |-filebeat.inputs:- type: filestreamid: kubernetes-container-logspaths:- /var/log/containers/*.logparsers:- container: ~prospector:scanner:fingerprint.enabled: truesymlinks: truefile_identity.fingerprint: ~processors:- add_kubernetes_metadata:host: ${NODE_NAME}matchers:- logs_path:logs_path: "/var/log/containers/"# To enable hints based autodiscover, remove `filebeat.inputs` configuration and uncomment this:# filebeat.autodiscover:#  providers:#    - type: kubernetes#      node: ${NODE_NAME}#      hints.enabled: true#      hints.default_config:#        type: filestream#        id: kubernetes-container-logs-${data.kubernetes.pod.name}-${data.kubernetes.container.id}#        paths:#        - /var/log/containers/*-${data.kubernetes.container.id}.log#        parsers:#        - container: ~#        prospector:#         scanner:#           fingerprint.enabled: true#           symlinks: true#        file_identity.fingerprint: ~processors:- add_cloud_metadata:- add_host_metadata:cloud.id: ${ELASTIC_CLOUD_ID}cloud.auth: ${ELASTIC_CLOUD_AUTH}output.elasticsearch:hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']username: ${ELASTICSEARCH_USERNAME}password: ${ELASTICSEARCH_PASSWORD}
---
apiVersion: apps/v1
kind: DaemonSet
metadata:name: filebeatnamespace: kube-systemlabels:k8s-app: filebeat
spec:selector:matchLabels:k8s-app: filebeattemplate:metadata:labels:k8s-app: filebeatspec:serviceAccountName: filebeatterminationGracePeriodSeconds: 30hostNetwork: truednsPolicy: ClusterFirstWithHostNetcontainers:- name: filebeatimage: docker.elastic.co/beats/filebeat:8.14.1args: ["-c", "/etc/filebeat.yml","-e",]env:- name: ELASTICSEARCH_HOSTvalue: elasticsearch- name: ELASTICSEARCH_PORTvalue: "9200"- name: ELASTICSEARCH_USERNAMEvalue: elastic- name: ELASTICSEARCH_PASSWORDvalue: changeme- name: ELASTIC_CLOUD_IDvalue:- name: ELASTIC_CLOUD_AUTHvalue:- name: NODE_NAMEvalueFrom:fieldRef:fieldPath: spec.nodeNamesecurityContext:runAsUser: 0# If using Red Hat OpenShift uncomment this:#privileged: trueresources:limits:memory: 200Mirequests:cpu: 100mmemory: 100MivolumeMounts:- name: configmountPath: /etc/filebeat.ymlreadOnly: truesubPath: filebeat.yml- name: datamountPath: /usr/share/filebeat/data- name: varlibdockercontainersmountPath: /var/lib/docker/containersreadOnly: true- name: varlogmountPath: /var/logreadOnly: truevolumes:- name: configconfigMap:defaultMode: 0640name: filebeat-config- name: varlibdockercontainershostPath:path: /var/lib/docker/containers- name: varloghostPath:path: /var/log# data folder stores a registry of read status for all files, so we don't send everything again on a Filebeat pod restart- name: datahostPath:# When filebeat runs as non-root user, this directory needs to be writable by group (g+w).path: /var/lib/filebeat-datatype: DirectoryOrCreate
---

2. 配置

默认情况下,Filebeat会将事件发送到现有的Elasticsearch部署(如果存在)。要指定不同的目标,请更改清单文件中的以下参数:

- name: ELASTICSEARCH_HOSTvalue: elasticsearch
- name: ELASTICSEARCH_PORTvalue: "9200"
- name: ELASTICSEARCH_USERNAMEvalue: elastic
- name: ELASTICSEARCH_PASSWORDvalue: changeme

3. 在控制平面节点上运行Filebeat

Kubernetes控制平面节点可以使用污点来限制可以在其上运行的工作负载。要在控制平面节点上运行Filebeat,您可能需要更新Daemoset规范以包括适当的容忍度:

spec:tolerations:- key: node-role.kubernetes.io/control-planeeffect: NoSchedule

4. Deploy

要部署 Filebeat 到 Kubernetes 中,执行如下命令

kubectl  apply -f filebeat-kubernetes.yaml

默认 Filebeat 以 DaemonSet 方式部署在 kube-system 名称空间

kubectl --namespace=kube-system get ds/filebeat

日志事件应该开始流向Elasticsearch。事件用 add_kubernetes_medata 处理器添加的元数据进行注释。

5. 解析json日志

从运行在Kubernetes上的工作负载收集日志时,这些应用程序以json格式进行日志记录是很常见的情况。在这种情况下,可以应用特殊处理,以便正确解析这些json日志并将其解码为字段。Bellow提供了两种不同的方式来配置filebeat的自动发现,以便识别和解析json日志。我们将使用一个带有两个容器的Pod的示例,其中只有一个日志是json格式的。

示例日志:

{"type":"log","@timestamp":"2020-11-16T14:30:13+00:00","tags":["warning","plugins","licensing"],"pid":7,"message":"License information could not be obtained from Elasticsearch due to Error: No Living connections error"}
  1. json.* 选项与模板一起使用
filebeat.autodiscover:providers:- type: kubernetesnode: ${NODE_NAME}templates:- condition: # 条件contains: # 包含kubernetes.container.name: "no-json-logging"config:- type: containerpaths:- "/var/log/containers/*-${data.kubernetes.container.id}.log"- condition:contains:kubernetes.container.name: "json-logging"config:- type: containerpaths:- "/var/log/containers/*-${data.kubernetes.container.id}.log"json.keys_under_root: truejson.add_error_key: truejson.message_key: message
  1. 使用带有 hintsjson.* 选项

这里的关键部分是正确地注释Pod,以仅将正确容器的日志解析为json日志。在这种情况下,注释(annotation )应该这样构造:

co.elastic.logs.<container_name>/json.keys_under_root: "true"

Autodiscovery configuration:

filebeat.autodiscover:providers:- type: kubernetesnode: ${NODE_NAME}hints.enabled: truehints.default_config:type: containerpaths:- /var/log/containers/*${data.kubernetes.container.id}.log

然后对 Pod 进行注释

annotations:co.elastic.logs.json-logging/json.keys_under_root: "true"co.elastic.logs.json-logging/json.add_error_key: "true"co.elastic.logs.json-logging/json.message_key: "message"

6. 处理器 processors

6.1. add_kubernetes_metadata

add_kubernetes_metadata 处理器根据事件源自哪个kubernetes pod,用相关元数据对每个事件进行注释。在启动时,它检测一个 in_cluster 环境并缓存与Kubernetes相关的元数据。只有在检测到有效配置时,才会对事件进行注释。如果无法检测到有效的Kubernetes配置,则不会使用与Kubernete相关的元数据对事件进行注释。

每个事件都注释有:

  • Pod Name
  • Pod UID
  • Namespace
  • Labels
    也就是,对 Kubernetes 的每个日志事件,处理日志数据的时候,都会在处理后的日志数据中添加上面列出的信息。

此外,节点和命名空间元数据被添加到 pod 元数据中。

add_kubernetes_metadata处理器有两个基本构建块:

  • Indexers
  • Matchers

索引器(Indexers)使用pod元数据为每个pod创建唯一的标识符。这些标识符有助于将观察到的pod的元数据与实际事件相关联。例如,ip_port 索引器可以获取一个 Kubernetes pod,并根据其所有 pod_ip:container_port 的组合,为其创建标识符。

匹配器(Matchers)使用事件中的信息,来构造与索引器创建的标识符匹配的查找键。例如,当字段匹配器将["metricset.host"]作为查找字段时,它将使用字段 metricset_host 的值构造查找关键字。当这些查找键中的一个与其中一个标识符匹配时,事件会丰富已标识的pod的元数据。

add_kubernetes_medata 与 Filebeat 一起使用时,它使用容器索引器和 logs_path。因此,在 log.file.path 中路径包含对容器ID的引用的事件会被该容器的pod的元数据丰富。

可以通过禁用配置中的默认索引器和匹配器来禁用此行为:

processors:- add_kubernetes_metadata:default_indexers.enabled: falsedefault_matchers.enabled: false

当filebeat在Kubernetes中作为pod运行时,下面的配置将启用处理器。

processors:- add_kubernetes_metadata:#labels.dedot: true#annotations.dedot: true

下面的配置允许 Filebeat 上的处理器作为在Kubernetes节点上运行一个进程(也就是支持运行在 Kubernetes 集群之外,但必须在 Kubernetes 节点上)。

processors:- add_kubernetes_metadata:host: <hostname># If kube_config is not set, KUBECONFIG environment variable will be checked# and if not present it will fall back to InClusterkube_config: $Filebeat Reference [8.14]/.kube/config#labels.dedot: true#annotations.dedot: true

下面的配置禁用了默认的索引器和匹配器,并启用了用户感兴趣的索引器。

processors:- add_kubernetes_metadata:host: <hostname># If kube_config is not set, KUBECONFIG environment variable will be checked# and if not present it will fall back to InClusterkube_config: ~/.kube/configdefault_indexers.enabled: falsedefault_matchers.enabled: falseindexers:- ip_port:matchers:- fields:lookup_fields: ["metricset.host"]#labels.dedot: true#annotations.dedot: true

add_kubernetes_metadata 处理器具有以下配置设置:
host
(可选)指定要将filebeat定位到的节点,以防无法准确检测到,例如在主机网络模式下运行filebeat时。

scope
(可选)指定处理器应该在节点级别还是在整个集群级别具有可见性。可能的值为node和cluster。默认情况下,作用域为 node。

namespace
(可选)选择要从中收集元数据的命名空间。如果未设置,处理器将从所有命名空间收集元数据。默认情况下未设置。

add_resource_metadata
(可选)为将要添加到事件中的额外元数据,指定筛选器和配置,以便优化这些元数据,比如添加哪些,删除哪些。
配置参数:

  • node or namespace: 为来自 node 和 namespace 的额外元数据指定标签和注释过滤器。默认情况下,包括所有标签,而不包括注释。要更改默认行为,可以定义 include_labels ,exclude_labelsinclude_annotations。当存储需要特殊处理以避免存储输出过载的标签和注释时,这些设置非常有用。注意:这些设置不支持通配符。通过设置 enabled: false,可以单独禁用 nodenamespace 元数据的丰富。
  • deployment: 如果资源是pod,并且是从 deployment 创建的,那么默认情况下会添加 deployment 名称,可以通过设置 deployment: false来禁用此功能。
  • cronjob: 如果资源是 Pod,并且是从 cronjob 创建的,那么默认情况下会添加 cronjob 名称,可以通过设置 cronjob: false 来禁用此功能。

示例:

      add_resource_metadata:namespace:include_labels: ["namespacelabel1"]#labels.dedot: true#annotations.dedot: truenode:include_labels: ["nodelabel2"]include_annotations: ["nodeannotation1"]#labels.dedot: true#annotations.dedot: truedeployment: falsecronjob: false

kube_config
(可选)使用给定的配置文件作为Kubernetes客户端的配置。它默认为 KUBECONFIG 环境变量的值(如果提供)。
kube_client_options
(可选)可以为Kubernetes客户端配置其他选项。目前支持客户端QPS和burst,如果不设置,将使用Kubernetes客户端的默认QPS和burst。示例:

      kube_client_options:qps: 5burst: 10

cleanup_timeout
(Optional) Specify the time of inactivity before stopping the running configuration for a container. This is 60s by default.
(可选)指定停止容器的运行配置之前的非活动时间。默认情况下为60秒。
sync_period
(可选)指定列出历史资源的超时时间。

default_indexers.enabled
(可选)当您想要指定自己的pod索引器时,启用或禁用默认pod索引器。

default_matchers.enabled
(可选)当您想要指定自己的pod匹配器时,启用或禁用默认pod匹配器。

labels.dedot
(可选)默认为 true。如果设置为 true,那么 labels 中的 . 将替换为 _

annotations.dedot
(可选)默认为 true。如果设置为 true,那么 annotations 中的 . 将替换为 _

7. Indexers and matchers (索引器和匹配器)

7.1. Indexers 索引器

索引器使用pod元数据为每个pod创建唯一的标识符。
可用的索引器:

  • container
    使用容器的ID标识 Pod 元数据。

  • ip_port
    Identifies the pod metadata using combinations of its IP and its exposed ports.
    使用 IP 和 公开的 ports 的结合标识 Pod 元数据。
    When using this indexer metadata is identified using the IP of the pods, and the combination if ip:port for each one of the ports exposed by its containers.
    使用此索引器时,元数据是使用pod的IP以及容器暴露的每个端口的组合来标识的 ip:port

  • pod_name
    Identifies the pod metadata using its namespace and its name as namespace/pod_name.
    使用它的命名空间和名称(namespace/pod_name)标识 Pod 元数据。

  • pod_uid
    Identifies the pod metadata using the UID of the pod.
    使用 Pod 的 UID 表示 Pod 元数据。

7.2. Matchers

匹配器用于构造查找键,这个会与索引创建的标识符进行匹配。

field_format
使用字符串格式创建的键,查找pod元数据,该字符串格式可以包括事件字段。

这个匹配器有一个选项格式来定义字符串格式。此字符串格式可以包含事件中任何字段的占位符。

例如,以下配置使用 ip_port 索引器通过 Pod IP 及其公开端口的组合来识别 Pod 元数据,并使用事件中的目标 IP 和端口作为匹配密钥:

processors:
- add_kubernetes_metadata:...default_indexers.enabled: falsedefault_matchers.enabled: falseindexers:- ip_port:matchers:- field_format:format: '%{[destination.ip]}:%{[destination.port]}'

fields
使用某些特定字段的值作为关键字来查找pod元数据。定义多个字段时,将使用事件中包含的第一个字段。

此匹配器具有一个选项 lookup_fields,用于定义其值将用于查找。

例如,以下配置使用 ip_port 索引器来识别 Pod,并定义一个匹配器,该匹配器使用目标 IP 或服务器 IP 进行查找,这是它在事件中找到的第一个匹配器:

processors:
- add_kubernetes_metadata:...default_indexers.enabled: falsedefault_matchers.enabled: falseindexers:- ip_port:matchers:- fields:lookup_fields: ['destination.ip', 'server.ip']

logs_path
使用从 log.file.path 字段中存储的日志路径中提取的标识符查找pod元数据。

此匹配器具有以下配置设置:

  • logs_path
    (可选)容器日志的基本路径。如果未指定,则使用运行Filebeat的平台的默认日志路径:
    Linux:/var/lib/docker/containers/
    Windows: C:\\ProgramData\\Docker\\containers
  • resource_type
    有效的资源类型:
    • pod: 以基于pod UID进行查找。当 resource_type 设置为 pod 时,还必须设置 logs_path,在这种情况下支持路径:
      • /var/lib/kubelet/pods/ 用于读取挂载到 pod 卷中的日志,这些日志最终位于 /var/lib/kubelet/pods/<pod UID>/volumes/<volume-name>/..下。要使用 /var/lib/kubelet/pods/ 作为log_path,必须将 /var/lib/kobelet/pods filebeat pods。
      • /var/log/pods/ 注意:当使用 resource_type: 'pod' 时,Pod 元数据将只使用Pod 元数据: pod id,namespace 填充。
    • container: 要根据容器ID进行查找,必须将 logs_path 设置为 /var/log/containers/。它默认为 container

要能够使用 logs_path 匹配器 filebeat,输入路径必须是 logs_path 配置设置中定义的目录的子目录。

当从默认的docker日志路径(Linux上的 /var/lib/docker/containers/<containerID>/…)收集日志时,默认配置能够使用容器ID查找元数据。

例如,当从 var/lib/kubelet/pods/<pod UID>/... 收集日志时,以下配置将使用pod UID

processors:
- add_kubernetes_metadata:...default_indexers.enabled: falsedefault_matchers.enabled: falseindexers:- pod_uid:matchers:- logs_path:logs_path: '/var/lib/kubelet/pods'resource_type: 'pod'

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

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

相关文章

声波的种类

声波可以根据不同的特性进行分类&#xff0c;主要包括频率和传播方式两个方面&#xff1a; ### 按频率分类&#xff1a; 1. **次声波**&#xff1a;频率低于20Hz的机械波&#xff0c;这类波通常不能被人耳感知。 2. **可闻声波**&#xff1a;频率在20Hz至20kHz之间的机械波&am…

C++ | Leetcode C++题解之第160题相交链表

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if (headA nullptr || headB nullptr) {return nullptr;}ListNode *pA headA, *pB headB;while (pA ! pB) {pA pA nullptr ? headB : p…

【区分vue2和vue3下的element UI Skeleton 骨架屏组件,分别详细介绍属性,事件,方法如何使用,并举例】

在区分Vue 2的Element UI和Vue 3的Element Plus中的Skeleton骨架屏组件时&#xff0c;我们需要注意到Element UI本身并不直接提供Skeleton组件&#xff0c;而Element Plus则直接提供了这一组件。因此&#xff0c;我将分别介绍Element Plus中的Skeleton组件以及如何在Vue 2项目中…

Python自动化(9)——log模块

Python自动化(9)——log模块 log模块实际上就是将所有print输出的信息收集起来&#xff0c;可以实现在pyqt5界面上显示&#xff0c;并且支持将所有的输出保存为文本文件的模块。 实际上还可以做得更加通用&#xff0c;例如增加一些前缀以区分不同的任务&#xff0c;不同的线程。…

[AIGC] 数位动态规划详解

动态规划&#xff08;DP&#xff09;是计算机科学中使用的一种寻找大多数最优路径问题的乐高算法技术。而“数位动态规划”&#xff08;Digit DP&#xff09;是动态规划的一个特例&#xff0c;主要用于解决数位问题。 文章目录 1. 什么是数位问题&#xff1f;2. 什么是数位动态…

【fiddler】fiddler抓取websocket

1.先了解websocket流 下载4.5版本以上的fiddler 如图所示&#xff1a;在rules--customize rules 里面插入以下代码&#xff1a; static function OnWebSocketMessage(oMsg: WebSocketMessage) { // Log Message to the LOG tab FiddlerApplication.Log.LogString(oMsg.ToStr…

鸿蒙开发下拉选项框在表单递交的处理

下拉选项框 <select name"identity"><option value"0">顾 客</option><option value"1">行 政</option><option value"2" >保 洁</option></select>在表单数据中没有找到identit…

Win11 Docker Desktop下部署springboot jar

1.将springboot程序使用maven package打包出jar。 2.创建dockerfile&#xff0c;为了本地打包时方便&#xff0c;这里的dockerfile有小变动。 # Docker Desktop下部署springboot jar FROM openjdk:8 VOLUME /tmp EXPOSE 8601 ARG JAR_FILEtarget/webflux-hello-0.0.1-SNAPSHO…

全球叉车巨头科朗遭网络攻击,工厂生产被迫中断

科朗员工们表示&#xff0c;本次事件最令人沮丧的是公司缺乏透明度和沟通意愿。 起初&#xff0c;员工被告知如果想在缺勤日获得报酬&#xff0c;需要申请失业或使用已积存的带薪休假和年假。 然而&#xff0c;外媒BleepingComputer得知&#xff0c;这一政策有所改变&#xf…

2024年7月计划(ue5肉鸽视频完成)

试过重点放在独立游戏上&#xff0c;有个indienova独立游戏团队是全职的&#xff0c;由于他们干了几个月&#xff0c;节奏暂时跟不上&#xff0c;紧张焦虑了。五一时也有点自暴自弃了&#xff0c;实在没必要&#xff0c;按照自己的节奏走即可。精力和时间也有限&#xff0c;放在…

AVL树插入详解

1.什么是AVL树 二叉搜索树可以提高搜索的效率&#xff0c;但是如果数据有序或者接近有序&#xff0c;就会退化为单边树&#xff0c;查找效率相当于在顺序表中查找数据&#xff0c;时间复杂度会退化到O(n)。AVL树解决了这个问题&#xff0c;通过保证每个节点的左右子树高度之差…

重学java 83.Java注解

As a failure,I met my last sound. —— 24.6.24 一、注解的介绍 1.引用数据类型: 类、数组、接口、枚举、注解 jdk1.5版本的新特性 一个引用数据类型 和类,接口,枚举是同一个层次的 引用数据类型:类、数组、接口、枚举、注解 2.作用: ① 说明&#xff1a;对代码进行说明,生…

elementui组件库实现电影选座面板demo

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Cinema Seat Selection</title><!-- 引入E…

华为、H3C交换机常用巡检命令

一、硬件状态、IOS版本信息检查 • display clock&#xff1a;显示系统时间。 • display version&#xff1a;查看交换机的版本信息和最近一次重新启动的时间。 • display enviroment&#xff1a;显示设备温度。 • display device&#xff1a;显示单板运行状态。 • di…

论文伪代码Latex参考

模版1 \documentclass{article} \usepackage{algorithm} \usepackage{algpseudocode}\begin{document}\begin{algorithm} \caption{AST Pruning Algorithm} \begin{algorithmic}[1]\State $F_k \gets \text{false}$, $F_f \gets \text{false}$, $T \gets R$ \Comment{Initial …

前端中的深拷贝

第1部分&#xff1a;引言 深拷贝&#xff1a;前端开发的隐形守护者 在前端开发的世界里&#xff0c;数据的传递和状态的管理是构建用户界面的基础。然而&#xff0c;数据的复制常常被忽视&#xff0c;直到它引发bug&#xff0c;我们才意识到它的重要性。深拷贝&#xff0c;这…

122.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件物品箱的管理

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

【论文精读】ViM: Out-Of-Distribution with Virtual-logit Matching 使用虚拟分对数匹配的分布外检测

文章目录 一、文章概览&#xff08;一&#xff09;问题来源&#xff08;二&#xff09;文章的主要工作&#xff08;三&#xff09;相关研究 二、动机&#xff1a;Logits 中缺失的信息&#xff08;一&#xff09;logits&#xff08;三&#xff09;基于零空间的 OOD 评分&#xf…

你还在手动操作仓库?这款 CLI 工具让你效率飙升300%!

前言 作为一名开发者&#xff0c;我经常会在 GitHub 和 Gitee 上 fork 各种项目。时间一长&#xff0c;这些仓库就会堆积如山&#xff0c;变成了“垃圾仓库”。每次打开代码托管平台&#xff0c;看到那些不再需要的仓库&#xff0c;我的强迫症就会发作。手动一个一个删除这些仓…

统计学三学习笔记

一&#xff0c;t分布 二&#xff0c;置信区间 最终要用② n越大&#xff0c;s越小&#xff0c;置信区间越小 三&#xff0c;配对样本t检验 假如有两个族群&#xff1a;