kubernetes日志采集方案

【大数据】LPG日志采集方案(官网入门案例) LPG日志采集方案(官网入门案例) 阅读详情

1 总体介绍

关于kubernetes的日志分几种,针对kubernetes本身而言有三种:

  1. 资源运行时的event事件。比如在k8s集群中创建pod之后,可以通过kubectl describe pod 命令查看pod的详细信息。
  2. 容器中运行的应用程序自身产生的日志,比如tomcat、nginx、php的运行日志。
  3. k8s各组件的服务日志,比如systemctl status kubelet。

容器日志收集的方式通常有以下几种:

  1. 宿主机Node层面统一收集:将宿主机的目录挂载为容器的日志目录,然后在宿主机上收集。
  2. pod中以sidecar容器的方式收集:这个sidecar容器收集应用日志之后,可以输出到宿主机或者直接发送到远端的日志收集服务。
  3. 网络收集:容器内应用将日志直接发送到日志中心,比如java程序可以使用log4j2转换日志格式并发送到远端。或者通过修改docker的–log-driver。可以利用不同的driver把日志输出到不同地方,将log-driver设置为syslog、fluentd、splunk等日志收集服务,然后发送到远端。

Kubernetes日志基础

通过一个例子了解kubernetes中标准输出中的输出日志。容器中执行shell,定时输出统计数。

debug/counter-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: 192.168.200.197:80/test-private/busybox:latest
    args: [/bin/sh, -c,
            'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']

To run this pod, use the following command:

kubectl apply -f https://k8s.io/examples/debug/counter-pod.yaml
pod/counter created

使用kubectl logs命令查看日志:

[root@kube-196 ~]# kubectl logs counter
1126: Tue Jun 18 09:27:07 UTC 2019
1127: Tue Jun 18 09:27:08 UTC 2019
1128: Tue Jun 18 09:27:09 UTC 2019
1129: Tue Jun 18 09:27:10 UTC 2019
1130: Tue Jun 18 09:27:11 UTC 2019
1131: Tue Jun 18 09:27:12 UTC 2019
...

查看对应的日志文件:

[root@kube-196 ~]# less /var/log/pods/default_counter_9ce0c974-91a8-11e9-9cd8-fa163e1e5fde/count/0.log
{"log":"1081: Tue Jun 18 09:26:22 UTC 2019\n","stream":"stdout","time":"2019-06-18T09:26:22.866910994Z"}
{"log":"1082: Tue Jun 18 09:26:23 UTC 2019\n","stream":"stdout","time":"2019-06-18T09:26:23.868754044Z"}
{"log":"1083: Tue Jun 18 09:26:24 UTC 2019\n","stream":"stdout","time":"2019-06-18T09:26:24.870266589Z"}
{"log":"1084: Tue Jun 18 09:26:25 UTC 2019\n","stream":"stdout","time":"2019-06-18T09:26:25.871929216Z"}

symlink /var/log/containers is pointing to /var/log/pods/pod_UID/*.logs and which is also a symlink to /var/lib/docker/containers/…

[root@kube-197 kube-proxy]# cd /var/log/containers/
[root@kube-197 containers]# ll
total 112
lrwxrwxrwx 1 root root 101 Jun 25 10:47 apm-els-elasticsearch-master-2_default_chown-2a0eea1ac1a4c4a8fe66fa5ab16bbdcf896fde9c5e752abdc5bbe6340fd00a17.log -> /var/log/pods/default_apm-els-elasticsearch-master-2_ac94ba63-96f2-11e9-9cd8-fa163e1e5fde/chown/0.log
lrwxrwxrwx 1 root root 109 Jun 25 10:47 apm-els-elasticsearch-master-2_default_elasticsearch-e6727337b8d1146868f480ce829a13100629aa78f61786c1aa8823850bfdfbc5.log -> /var/log/pods/default_apm-els-elasticsearch-master-2_ac94ba63-96f2-11e9-9cd8-fa163e1e5fde/elasticsearch/0.log

2 Node层面

image
每个容器通过stdout和stderr将日志输出到宿主机的日志文件中。

通过在每个节点上运行一个日志收集的agent来采集日志数据,日志采集agent是一种专用工具,用于将日志数据推送到统一的后端。一般来说,这种agent用一个容器来运行,可以访问该节点上所有应用程序容器的日志文件所在目录。

由于这种agent必须在每个节点上运行,所以直接使用 DaemonSet控制器运行该应用程序即可。在节点上运行一个日志收集的agent这种方式是最常见的一直方法,因为它只需要在每个节点上运行一个代理程序,并不需要对节点上运行的应用程序进行更改,对应用程序没有任何侵入性,但是这种方法也仅仅适用于收集输出到 stdout 和 stderr 的应用程序日志。

Note: Docker json日志驱动将每一行当做一条独立的
消息。如果想支持多行消息,需要在agent或者更高的层面去自行处理。

Note:如果使用了logrotate,那么只能获取最新的文件,比如有个15MB的文件,通过logrotate分割成一个10MB和一个5MB的文件,那么kubectl logs只能查看5MB的文件。

系统组件日志

系统组件有两种类型:在容器中运行的系统组件和不在容器中运行的系统组件。例如:

Kubernetes的scheduler和kube-proxy在容器中运行。
kubelet和容器运行时(例如Docker)不在容器中运行。
对于系统级的日志文件,也是存放在/var/log目录下,也需要配置logrotate分割。

集群方案

首先需要明确的是,Kubernetes里面对容器日志的处理方式,都叫作 cluster-level-logging,即:这是个日志处理系统,与容器、Pod以及Node的生命周期都是完全无关的。这种设计当然是为了保证,无论是容器挂了、Pod被删除,甚至节点宕机的时候,应用的日志依然可以被正常获取到。

而对于一个容器来说,当应用把日志输出到 stdout 和 stderr 之后,容器项目在默认情况下就会把这些日志输出到宿主机上的一个 JSON 文件里。这样,你通过 kubectl logs 命令就可以看到这些容器的日志了。

上述机制,就是我们今天要讲解的容器日志收集的基础假设。而如果你的应用是把文件输出到其他地方,比如直接输出到了容器里的某个文件里,或者输出到了远程存储里,那就属于特殊情况了。当然,我在文章里也会对这些特殊情况的处理方法进行讲述。

而 Kubernetes 本身,实际上是不会为你做容器日志收集工作的,所以为了实现上述cluster-level-logging,你需要在部署集群的时候,提前对具体的日志方案进行规划。而 Kubernetes 项目本身,主要为你推荐了三种日志方案。

  • 每个node部署一个node级别的代理
  • 每个应用的pod中集成一个sidecar容器
  • 从应用内部直接推送日志到后端

每个node部署一个代理

第一种,在Node上部署logging agent,将日志文件转发到后端存储里保存起来。这个方案的架构图如下所示。
image

不难看到,这里的核心就在于 logging agent ,它一般都会以 DaemonSet 的方式运行在节点上,然后将宿主机上的容器日志目录挂载进去,最后由 logging-agent 把日志转发出去。

举个例子,我们可以通过 Fluentd 项目作为宿主机上的 logging-agent,然后把日志转发到远端的 ElasticSearch 里保存起来供将来进行检索。

image

因为k8s集群已经将pod日志在集群的/var/log/container/ 目录下做了软连接(xxxx.log)到pod所在 /var/lib/docker/containers/xxxxx/-json.log 文件中,只需要将fluentd监控相关/var/log/container/ 目录下的.log 文件,即可达到搜集日志的效果,同时由于在 docker 层设置了日志分割方式,将日志占用空间做了限制,基本上不会出现日志过期不能清理的问题。

  "log-opts": {
                "max-size": "100m"
        },

另外,在很多 Kubernetes 的部署里,会自动为你启用 logrotate,在日志文件超过10MB的时候自动对日志文件进行 rotate 操作。

可以看到,在Node上部署logging agent 最大的优点,在于一个节点只需要部署一个agent,并且不会对应用和 Pod有任何侵入性。所以,这个方案,在社区里是最常用的一种。

但是也不难看到,这种方案的不足之处就在于,它要求应用输出的日志,都必须是直接输出到容器的stdout和stderr 里。

具体参考官网的方案配置:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch

每个应用的pod中集成一个sidecar容器

使用sidecar容器方式,有两种方式:

  • sidecar将应用日志输出到stdout
  • sidecar运行日志代理

Streaming sidecar container

所以,Kubernetes容器日志方案的第二种,就是对这种特殊情况的一个处理,即:当容器的日志只能输出到某些文件里的时候,我们可以通过一个sidecar容器把这些日志文件重新输出到 sidecar的stdout和stderr上,这样就能够继续使用第一种方案了。这个方案的具体工作原理,如下图所示:
image
比如,现在我的应用Pod只有一个容器,它会把日志输出到容器里的 /var/log/1.log 和 2.log 这两个文件里。这个 Pod 的 YAML 文件如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: 192.168.200.197:80/test-private/busybox:latest
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}

在这种情况下,你用kubectl logs 命令是看不到
应用的任何日志的;/var/log/pods也没有日志文件。而且我们前面讲解的、最常用的方案一,也是没办法使用的。

那么这个时候,我们就可以为这个 Pod 添加两个sidecar 容器,分别将上述两个日志文件里的内容重新以 stdout 和 stderr 的方式输出出来,这个 YAML 文件的写法如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: 192.168.200.197:80/test-private/busybox:latest
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-log-1
    image: 192.168.200.197:80/test-private/busybox:latest
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/1.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-log-2
    image: 192.168.200.197:80/test-private/busybox:latest
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/2.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}

这时候,你就可以通过 kubectl logs 命令查看这两个 sidecar 容器的日志,间接看到应用的日志内容了,如下所示:

$ kubectl logs counter count-log-1
0: Mon Jan 1 00:00:00 UTC 2001
1: Mon Jan 1 00:00:01 UTC 2001
2: Mon Jan 1 00:00:02 UTC 2001
...
$ kubectl logs counter count-log-2
Mon Jan 1 00:00:00 UTC 2001 INFO 0
Mon Jan 1 00:00:01 UTC 2001 INFO 1
Mon Jan 1 00:00:02 UTC 2001 INFO 2
...

由于 sidecar 跟主容器之间是共享Volume的,所以这里的sidecar方案的额外性能损耗并不高,也就是多占用一点 CPU 和内存罢了。

注意:这种方式宿主机上实际上会存在两份相同的日志文件:一份是应用自己写入的;另一份则是sidecar 的stdout和stderr对应的JSON文件。这对磁盘是很大的浪费。所以说,除非万不得已或者应用容器完全不可能被修改,

Sidecar container with a logging agent

Sidecar container with a logging agent

If the node-level logging agent is not flexible enough for your situation, you can create a sidecar container with a separate logging agent that you have configured specifically to run with your application.

这种方式有两个缺点:

  1. 消耗比较多的资源,应该每个pod都有一个agent;
  2. 不能通过kubectl logs命令查看日志;

例如,可以使用的Stackdriver 日志驱动,它使用fluentd作为记录剂。以下是两个可用于实现此方法的配置文件。第一个文件包含配置fluentd的ConfigMap。

admin/logging/fluentd-sidecar-config.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-config
data:
  fluentd.conf: |
    <source>
      type tail
      format none
      path /var/log/1.log
      pos_file /var/log/1.log.pos
      tag count.format1
    </source>

    <source>
      type tail
      format none
      path /var/log/2.log
      pos_file /var/log/2.log.pos
      tag count.format2
    </source>

    <match **>
      type google_cloud
    </match>

上面的配置文件是配置收集原文件 /var/log/1.log 和 /var/log/2.log 的日志数据,然后通过 google_cloud 这个插件将数据推送到 Stackdriver 后端去。

下面是我们使用上面的配置文件在应用程序中运行一个 fluentd 的容器来读取日志数据:

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: 192.168.200.197:80/test-private/busybox:latest
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-agent
    image: k8s.gcr.io/fluentd-gcp:1.30
    env:
    - name: FLUENTD_ARGS
      value: -c /etc/fluentd-config/fluentd.conf
    volumeMounts:
    - name: varlog
      mountPath: /var/log
    - name: config-volume
      mountPath: /etc/fluentd-config
  volumes:
  - name: varlog
    emptyDir: {}
  - name: config-volume
    configMap:
      name: fluentd-config

上面的Pod创建完成后,count-agent容器就会将 count 容器中的日志进行收集然后上传。当然,这只是一个简单的示例,我们也完全可以使用其他的任何日志采集工具来替换 fluentd,比如 logstash、fluent-bit 等等。

从应用内部直接推送日志到后端

除了容器应用的日志之外,还有一个重要的部分就是,程序自身的日志。一般情况下,会将程序日志写到固定目录文件、或者写入到中间件保存和读取。

这部分日志的处理,可以直接通过日志文件收集、或者是让开发程序的同学修改程序把日志输出到中间件或者是直接输出到elk上

image

总结

在本篇文章中,我们详细讲解了Kubernetes项目对容器应用日志的收集方式。综合对比以上三种方案,个人倾向于使用第一种方式,将应用日志输出到stdout和stderr,然后通过在宿主机上部署logging-agent的方式来集中处理日志。这种方案不仅管理简单,kubectl logs 也可以用,而且可靠性高,并且宿主机本身,很可能就自带了rsyslogd等非常成熟的日志收集组件来供你使用。

最后需要指出的是,无论是哪种方案,你都必须要及时将这些日志文件从宿主机上清理掉,或者给日志目录专门挂载一些容量巨大的远程盘。否则,一旦主磁盘分区被打满,整个系统就可能会陷入奔溃状态,这是非常麻烦的。

参考

https://kubernetes.io/docs/concepts/cluster-administration/logging/

【生产环境K8S从搭建到运维的实录(五)】K8S环境日志采集方案 【生产环境K8S从搭建到运维的实录(五)】K8S环境日志采集方案 1.前述   今天想跟大家聊一聊在k8s环境里关于日志采集的解决方案。主要介绍一下我们的系统都有哪些日志文件,以及各种日志文件是如何被采集和应用的。 2.日志种类   这里的分类是按照我们现有生产环境所处理的log进行划分,按照集群划分,可以分为以下3种: K8S集群log PKS集群log 监控机器log 按照业务种类划分,又可以分为以下2种: 业务log 系统log 3.Log Systerm构成   下面构成图中关于PKS Cl 阅读详情

相关推荐

Kubernetes中部署ELK Stack日志收集平台

kubelet会在/var/log/pods和/var/log/containers下面建立软链接,指向/var/lib/docker/containers/$CONTAINERID目录下的容器日志文件。- dissect: #参考https://www.elastic.co/guide/en/beats/filebeat/current/dissect.html。创建一个软链接/var/log/pods指向数据盘挂载点下的某个目录(ln -s /data/var/log/pods /var/log/)

别来沾边儿 1608

Kubernetes — 日志管理方案

容器引擎或运行时提供的本地功能通常不足以支撑完整的日志记录解决方案。例如,一个容器崩溃、一个Pod被驱逐、或者一个Node死亡,往往仍然需求可以访问应用程序的日志。日志应该具有独立于Node、Pod或者容器的单独存储和生命周期,这个概念被称为Cluster 级日志记录需要一个独立的后端来存储、分析和查询日志Kubernetes 本身并没有为日志数据提供原生的存储解决方案,但可以将许多现有的日志记录解决方案集成到Kubernetes 集群中。

qq_41619571的博客 2667

logrotate-container:一个logrotate容器映像,用于使用Alpine Linux轮流Kubernetes内部的应用程序的持久日志

概述 对于在kubernetes集群中运行的旧版应用程序,我们需要一个解决方案,将日志写入文件而无需轮换(以传统方式)。 设定范例 我假设Kubernetes中的旧版应用会将日志写入PV响应中。 PVC称为app-logs-pv 。 Kubernetes先决条件 示例PVC app-logs-pv必须存在,并且旧版应用会将其日志文件写入该文件。 此PVC的accessMode必须为RWX (ReadWriteMany),因为我们希望将它们从另一个Pod(与应用程序分离)进行旋转。 apiVersion : v1 kind : PersistentVolumeClaim metadata : name : app-logs-pv spec : accessModes : - ReadWriteMany resources : requests : s

「Kubernetes」- 日志 @20210315

内容简介 本部分将介绍与Kubernetes日志有关内容,包括日志种类、收集方法等等。 关于日志 #1 多种多样的日志 应用程序具有日志,用于排查问题。集群具有日志,用于排查问题。容器环境具有日志机制,容器化应用应将日志写入标准输出与标准错误。 #2 但这些日志机制存在问题 但是由容器引擎提供的日志功能远远不够:容器崩溃,驱逐POD实例,节点崩溃,在这些情况下我们依旧希望访问日志。因此日志需要独立存储,并且生命周期与节点、容器等等无关。 该概念被称为“集群日志”。 #3 集群日志 “集群.

k4nz 362

英特尔® NUC迷你电脑实现无人值守自动开机配置指南

本文详细介绍了如何配置英特尔® NUC迷你电脑实现无人值守自动开机功能。从BIOS设置到操作系统级配置,涵盖硬件兼容性确认、电源恢复功能设置及常见问题解决,帮助用户轻松实现设备断电后自动恢复运行,适用于家庭服务器、企业终端等多种场景。

weixin_42638178的博客 472

基于YOLO11深度学习的糖尿病视网膜病变智能诊断系统【Python源码+Pyqt5界面+数据集+训练代码】

本文详细介绍如何利用YOLO11深度学习技术构建糖尿病视网膜病变智能诊断系统。项目提供完整的Python源码、PyQt5图形界面、标注数据集及训练代码,实现从图片、视频到摄像头的多模态病变检测,旨在辅助医疗筛查,提升诊断效率。

weixin_29089057的博客 277

ELK分布式日志采集

ELK常见部署架构 1. Logstash作为日志收集器 2. Filebeat作为日志收集器 3 引入缓存队列的部署架构 4. 以上三种架构的总结 问题及解决方案 1. 问题:如何实现日志的多行合并功能? 2. 问题:如何将Kibana中显示日志的时间字段替换为日志信息中的时间? 3. 问题:如何在Kibana中通过选择不同的系统日志模块来查看数据 总结 ELK ..

gaopin649969364的博客 1662

运算放大器电路中的T型网络:如何用更小电阻实现高增益并降低噪声?

本文深入解析了运算放大器电路中T型反馈网络的设计与应用。该网络通过三个较小阻值电阻的组合,等效实现高增益,有效规避了传统大反馈电阻带来的显著热噪声问题。文章从数学原理、噪声定量分析到实际设计技巧,系统阐述了如何利用T型网络在实现高增益的同时,显著降低电路噪声并改善整体性能。

banana的博客 318

kubernetes日志收集方案

使用节点级日志代理使用sidecar容器和日志代理使用具有日志代理功能的sidecar容器建议:使用方案1,将应用日志输出到stdout & stderr,通过在宿主机上直接部署logging-agent的方式集中处理日志部署简单可以使用kubectl logs目录查看日志宿主机本身可能已有rsyslogd等成熟日志收集组件可使用。

happy_king_zi的博客 1845

高通平台蓝牙学习-- 基于WCN6750 Bluetooth 5.2的讲解

摘要:蓝牙5.2解决方案WCN6750具备多项先进特性:完全兼容5.2标准及ANT+协议,支持2Mbps高速BLE和长距离传输;采用射频集成方案,与WLAN共享天线并支持5G并发;内置功率放大器,支持Class1/2传输;提供双音频流和Slimbus接口优化。其HCI UART接口支持3.2Mbps速率,通过BlueZ协议栈实现蓝牙5.2功能,包括2Mbps模式和长距离传输,符合核心规范要求。(149字)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 3万+

基于单片机设计的智能消防排烟窗控制系统_422

随着城市化进程的不断加快,高层建筑、大型商业综合体以及地下空间的数量迅速增加,建筑内部结构日趋复杂,一旦发生火灾,烟雾和有毒气体往往比明火更具威胁性。大量研究表明,在火灾事故中,人员伤亡的主要原因并非直接烧伤,而是由于吸入烟雾及一氧化碳等有毒气体导致窒息。因此,如何在火灾初期快速排烟、降低有害气体浓度,并及时进行预警,成为现代消防系统设计中的关键问题。传统的消防排烟系统多依赖人工操作或简单的联动控制方式,存在响应滞后、自动化程度低、信息反馈不及时等问题。在实际应用中,当火灾发生时,如果不能第一时间开启排烟窗

396

K8S日志采集与监控方案介绍

在 Kubernetes 集群中,需要全面了解各个 pod 应用运行状态、故障排查和性能分析。但由于 Pod 是动态创建和销毁的,其日志分散且存储不持久,因此需要通过集中式日志采集方案,将日志收集到统一的平台并配置日志可视化分析和监控告警,以实现日志的可追溯性、实时监控和高效分析,从而提升运维效率和系统可靠性。但目前日志采集与监控方案众多,经常有小伙伴咨询应该使用哪种技术方案可以更好的实现这些功能,接下来就以本人实际项目经验为例,向大家介绍几种常见的日志采集与监控方案。

qq_33816243的博客 3492

倍福---EL2262模块飞拍配置

控制器安装了twincat3,用EL2262实现相机飞拍功能。本文档只介绍如何通过EL2262实现飞拍的触发,并不涉及视觉方面的处理 参考文章: https://author.baidu.com/home?from=bjh_article&app_id=1669190598708386 https://mp.weixin.qq.com/s/r4Iq8kOP-o4_M8vCce5M9g 1、 飞拍的应用 在大多数场合,只能当被检测工件和相机都处于静止状态下才能进行拍照,拍照完成后,再移动工件或相机,进

weixin_41883890的博客 3742

k8s——日志采集方案

本文介绍了Kubernetes环境下日志收集的两种主要方案:传统EFK架构和K8s专用架构。EFK方案包含Elasticsearch(存储)、Kibana(展示)和Filebeat(采集)三个组件,详细说明了各组件安装配置方法。K8s方案则针对容器日志特点,介绍了节点级日志代理、边车容器和应用直接暴露三种采集方式,并提供了Helm安装Elasticsearch、Kibana和Filebeat的具体步骤。文章还包含集群状态检查、索引模式创建等实用操作指南,特别强调了在K8s中应将日志输出到stdout/std

m0_68754495的博客 1560

一张图讲透银行个人外汇业务逻辑和实操

个人外汇业务主要分为结售汇和外币兑换两类,前者满足日常跨境需求,后者因投机属性多数银行已暂停。业务核心是利用汇率波动实现货币兑换,满足支付或投资需求。交易涉及客户分类、主流币种、多种渠道和汇率计算规则,需区分直接/间接标价法判断汇率走势。银行通过"货币兑换"科目核算损益,采用期末折算确认盈亏。监管要求包括5万美元年度额度、合法渠道、真实性原则及大额申报等。随着跨境金融数字化发展,掌握基础逻辑和合规要求是安全参与外汇业务的关键。

银行信息系统应用架构详解 288

SKILL 是什么?怎么做?五分钟 带你从入门到精通

skill-creator 是 Anthropic 官方开源的“元技能”——一个专门用来创建 Skill 的 Skill。你只需要用自然语言描述想要什么功能,它会自动生成。从更宏观的视角看,Skills 的出现标志着 AI 编程的一次范式转变。在传统的 AI 编程中,代码是确定性的:1 是 1,2 是 2。但到了大模型时代,代码变得不确定——你不知道模型会输出什么,不知道它会不会突然删掉几行代码。这种不确定性让很多开发者感到不安。Skills 把这套逻辑又拉了回来。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 642

kubernetes日志采集方案EFK

https://www.qikqiak.com/post/install-efk-stack-on-k8s/ EFK简介 Kubernetes中比较流行的日志收集解决方案是Elasticsearch、Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。 Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量...

总结、分享、交流 2979

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

kubernetes 日志采集方案 loongcollector(旧名iLogtail)

日志采集使用阿里云开源工具iLogtail,支持部署于物理机,虚拟机,Kubernetes等多种环境中来采集遥测数据,例如logs、traces和metrics。支持配置远程管理,支持以图形化、SDK、K8s Operator等方式进行配置管理,可轻松管理百万台机器的数据采集。支持多种Logs、Traces、Metrics数据采集,尤其对容器、Kubernetes环境支持非常友好。index的副本为0,当前后端es集群为单点,所以没有必要配置副本。file_and_line:日志文件及行数,方便日志过滤。

40kuai的博客 2140

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Docker容器以及Kubernetes内应用日志采集方案介绍与实践

本文主要分为两部分,第一部分介绍容器内日志收集主要的解决方案和思路,并对各个解决方案的优劣进行比较。第二部分将分别详细介绍基于Fluentd的Sidecar模式日志采集部署方案和基于filebeat集成应用基础镜像的日志采集方案。注意:本文重心在于介绍容器内应用日志的收集方案,并不针对于对于容器引擎或者kubernetes本生系统日志收集。 第一部分:容器内日志收集主要的解决方案和比较 方案1.在...

crystonesc的专栏 2295

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Kubernetes Pod 日志采集方案

在云原生架构中,Kubernetes已成为容器编排的事实标准,而Pod作为其最小调度单元,产生的日志是运维和开发人员排查问题的重要依据。本文将介绍几种高效的Kubernetes Pod日志采集方案,帮助用户实现日志的集中管理和分析。DaemonSet是Kubernetes中一种常见的日志采集方案,通过在每个节点上部署日志采集代理(如Fluentd或Filebeat),实时收集节点上所有Pod的日志。Kubernetes Pod的日志采集面临动态生命周期、多容器日志隔离、日志存储与检索等问题。

lotgyg_895的博客 242

基于EFK的Kubernetes日志采集方案

但是实际情况考虑网络等因素,往往缓存块被写入后端存储的时候会出现延迟或者写入失败的情况,当缓存块写入后端失败时,该缓存块还会留在队列中,等retry_wait时间后重试发送,当retry的次数达到retry_limit后,该缓存块被销毁(数据被丢弃)。比较理想的情况是每次有新的缓存块进入缓存队列,则立马会被写入到后端,同时,新缓存块也持续入列,但是入列的速度不会快于出列的速度,这样基本上缓存队列处于空的状态,队列中最多只有一个缓存块。查找匹配 “tags” 的事件,并处理它们。

xiangfeideyuwei的博客 1197

k8s部署-49-k8s日志采集的解决方案思路梳理

 k8s中的日志怎么能方便查看呢?总不能每次都登录到各个容器中进行查看吧,是否能实现k8s日志的统一管理呢? 一、k8s日志输出和传统服务对比 二、常用的k8s日志解决方案是什么1、远程日志就是说在程序中嵌入远端存储的连接,然后将程序的日志,输出到远端存储中,但是这样的话就有个问题,那就是如果我们的程序如果是从传统服务,迁移到k8s中的话,那我们还需要修改程序输出才能行,比较麻烦。优点就是,适用于任何场景,无论是传统的、还是docker的、亦或者是k8s的,都是可以直接使用的。2

ouyangzhenxin的博客 2381
上一篇: blackhole引起k8s DNS访问异常
下一篇: kubernetes日志采集方案EFK
正说杂谈
博客等级 码龄15年 30粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正说杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值