文章采集站 大集合:[Cosplay]河豚抚子 – 温泉 [14P-133MB]

优采云 发布时间: 2022-10-19 19:24

  文章采集站 大集合:[Cosplay]河豚抚子 – 温泉 [14P-133MB]

  材质说明

  本站图片、视频等资料不提供任何资源预览,以免造成不必要的误解。如需了解资源预览,请从百度获取。

  如资源链接无效、解压密码错误等请留言,防止分享R18+等缺失的素材资源。

  严禁在网盘上解压任何资源。一经发现,会员将被删除,IP将被封禁。谢谢您的合作。

  

  【资源名称】:【角色扮演】河豚抚子-温泉【14P-133MB】

  【主题类型】:角色扮演

  【版权声明】:互联网采集分享,严禁商用,最终所有权归素材提供者所有;

  【下载方式】:百度网盘

  

  【压缩格式】:zip、7z、rar等常用格式,下载部分资源后,更改后缀解压;【解压密码已测试!】

  【温馨提示】:下载的资源包内有广告。本站不提供任何保证,请慎重!

  【资源保障】:不用担心失败,资源有备份,留言后24小时内补档。

  采集 终极:Kubernetes 集群中日志采集的几种玩法

  介绍

  对于企业应用系统来说,日志的状态非常重要,尤其是在Kubernetes环境中,日志采集比较复杂,所以DataKit对日志采集提供了非常强大的支持,支持多种环境,一个各种技术栈。接下来,我们将详细解释如何使用DataKit log采集

  前提

  登录观察云,【集成】->【Datakit】->【Kubernetes】,按照提示在Kubernetes集群中安装DataKit,接下来的操作会用到部署的datakit.yaml文件。

  DataKit 高级配置 1 设置日志级别

  DataKit 的默认日志级别是 Info。如果需要将日志级别调整为Debug,请在datakit.yaml中添加环境变量。

   - name: ENV_LOG_LEVEL

value: debug

  2 设置日志输出方式

  DataKit 默认会输出日志到 /var/log/datakit/gin.log 和 /var/log/datakit/log。如果您不想在容器中生成日志文件,请在 datakit.yaml 中添加环境变量。

   - name: ENV_LOG

value: stdout

- name: ENV_GIN_LOG

value: stdout

  DataKit 生成的日志可以通过在 kubectl 命令中添加 POD 名称来查看。

  kubectl logs datakit-2fnrz -n datakit #

  “注意”:ENV_LOG_LEVEL设置为debug后,会产生大量日志。此时不建议将 ENV_LOG 设置为 stdout。

  日志采集1 标准输出 采集1.1 标准输出日志已满采集

  DataKit 可以采集 将容器日志输出到标准输出。使用 datakit.yaml 部署 DataKit 后,容器 采集器 已默认启用。

   - name: ENV_DEFAULT_ENABLED_INPUTS

value: cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container

  此时会在DataKit容器中生成/usr/local/datakit/conf.d/container/container.conf配置文件。默认配置是 采集除以 /datakit/logfwd 开头的镜像之外的所有 stdout 日志。

   container_include_log = [] # 相当于image:*

container_exclude_log = ["image:pubrepo.jiagouyun.com/datakit/logfwd*"]

  1.2 自定义标准输出日志采集

  为了更好的区分日志来源,添加标签,指定日志切割管道文件,需要自定义方法。也就是在部署的yaml文件中添加注解。

  apiVersion: apps/v1

kind: Deployment

metadata:

name: log-demo-service

labels:

app: log-demo-service

spec:

replicas: 1

selector:

matchLabels:

app: log-demo-service

template:

metadata:

labels:

app: log-demo-service

annotations:

# 增加如下部分

datakit/logs: |

[

{

"source": "pod-logging-testing-demo",

"service": "pod-logging-testing-demo",

"pipeline": "pod-logging-demo.p",

"multiline_match": "^\\d{4}-\\d{2}-\\d{2}"

}

]

  注解参数说明

  1.3 不要采集容器的stdout日志

  当容器采集器启用时,它会自动采集容器输出日志到stdout。对于不想成为采集的日志,有以下方法。

  1.3.1 关闭POD的STDOUT日志采集

  在已部署应用的 yaml 文件中添加注解,并将 disable 设置为 true。

  apiVersion: apps/v1

kind: Deployment

metadata:

...

spec:

...

template:

metadata:

annotations:

## 增加下面内容

datakit/logs: |

[

{

"disable": true

}

]

  1.3.2 标准输出重定向

  如果开启了标准输出日志采集,容器日志也会输出到标准输出。如果两者都不想被修改,可以修改启动命令来重定向标准输出。

  java ${JAVA_OPTS} -jar ${jar} ${PARAMS} 2>&1 > /dev/null

  1.3.3 CONTAINER 采集器的过滤功能

  如果想更方便地控制stdout日志的采集,建议重写container.conf文件,即使用ConfigMap定义container.conf,修改container_include_log和container_exclude_log的值,然后将其挂载到datakit。修改datakit.yaml如下:

  ---

apiVersion: v1

kind: ConfigMap

metadata:

name: datakit-conf

namespace: datakit

data:

#### container

container.conf: |-

[inputs.container]

docker_endpoint = "unix:///var/run/docker.sock"

containerd_address = "/var/run/containerd/containerd.sock"

enable_container_metric = true

enable_k8s_metric = true

enable_pod_metric = true

## Containers logs to include and exclude, default collect all containers. Globs accepted.

container_include_log = []

container_exclude_log = ["image:pubrepo.jiagouyun.com/datakit/logfwd*", "image:pubrepo.jiagouyun.com/datakit/datakit*"]

exclude_pause_container = true

## Removes ANSI escape codes from text strings

logging_remove_ansi_escape_codes = false

<p>

kubernetes_url = "https://kubernetes.default:443"

## Authorization level:

## bearer_token -> bearer_token_string -> TLS

## Use bearer token for authorization. (&#39;bearer_token&#39; takes priority)

## linux at: /run/secrets/kubernetes.io/serviceaccount/token

## windows at: C:\var\run\secrets\kubernetes.io\serviceaccount\token

bearer_token = "/run/secrets/kubernetes.io/serviceaccount/token"

# bearer_token_string = ""

[inputs.container.tags]

# some_tag = "some_value"

# more_tag = "some_other_value"

volumeMounts:

- mountPath: /usr/local/datakit/conf.d/container/container.conf

name: datakit-conf

subPath: container.conf</p>

  例如,如果您只希望采集 图像名称收录 log-order,并且图像名称不收录 log-pay,则可以进行以下配置。

   container_include_log = ["image:*log-order*"]

container_exclude_log = ["image:*log-pay*"]

  “注意”:如果某个POD打开了采集stdout日志,请不要使用logfwd或socket日志采集,否则会重复采集日志。

  2 logfwd 采集

  这是一个使用 Sidecar 模式的 log采集 方法,即使用同一个 POD 中的容器共享存储,让 logfwd 以 Sidecar 模式读取业务容器的日志文件,然后发送到 DataKit . 具体用法请参考 Pod Log采集Best Practice 2。

  3 个插座 采集

  DataKit打开一个socket端口,比如9542,日志会被推送到这个端口。Java 的 log4j 和 logback 支持日志推送。下面以SpringBoot集成Logback为例,实现socket log采集

  3.1 添加Appender

  在 logback-spring.xml 文件中添加 socket Appender。

  

logback

${log.pattern}

...

${dkSocketHost}:${dkSocketPort}

UTC+8

{

"severity": "%level",

"appName": "${logName:-}",

"trace": "%X{dd.trace_id:-}",

"span": "%X{dd.span_id:-}",

"pid": "${PID:-}",

"thread": "%thread",

"class": "%logger{40}",

"msg": "%message\n%exception"

}

  3.2 添加配置

  在 SpringBoot 项目的 application.yml 文件中添加配置。

  datakit:

socket:

host: 120.26.218.200 #

port: 9542

  3.3 添加依赖

  在 SpringBoot 项目的 pom.xml 中添加依赖。

  

net.logstash.logback

logstash-logback-encoder

4.9

  3.4 DataKit 添加 logging-socket.conf 文件

  在 DataKit 的 datakit.yaml 文件中

   volumeMounts: # 此位置增加下面三行

- mountPath: /usr/local/datakit/conf.d/log/logging-socket.conf

name: datakit-conf

subPath: logging-socket.conf

---

apiVersion: v1

kind: ConfigMap

metadata:

name: datakit-conf

<p>

namespace: datakit

data:

logging-socket.conf: |-

[[inputs.logging]]

# only two protocols are supported:TCP and UDP

sockets = [

"tcp://0.0.0.0:9542",

#"udp://0.0.0.0:9531",

]

ignore = [""]

source = "demo-socket-service"

service = ""

pipeline = ""

ignore_status = []

character_encoding = ""

# multiline_match = &#39;&#39;&#39;^\S&#39;&#39;&#39;

remove_ansi_escape_codes = false

[inputs.logging.tags]

# some_tag = "some_value"

# more_tag = "some_other_value"</p>

  关于so​​cket logging采集的更多信息,请参考logback socket logging采集最佳实践。

  4 日志文件采集

  Linux主机上安装的DataKit采集主机上的登录方式是复制logging.conf文件,然后将logging.conf文件中的logfiles值修改为日志的绝对路径。

  cd /usr/local/datakit/conf.d/log

cp logging.conf.sample logging.conf

  在Kubernetes环境中,需要先将Pod生成的日志目录/data/app/logs/demo-system挂载到宿主机的/var/log/k8s/demo-system,然后使用Daemonset部署DataKit,挂载 /var/log/k8s/demo-system 目录,以便 datakit 可以采集进入主机上的 /rootfs/var/log/k8s/demo-system/info.log 日志文件。

   volumeMounts:

- name: app-log

mountPath: /data/app/logs/demo-system

...

volumes:

- name: app-log

hostPath:

path: /var/log/k8s/demo-system

   volumeMounts: # 此位置增加下面三行

- mountPath: /usr/local/datakit/conf.d/log/logging.conf

name: datakit-conf

subPath: logging.conf

---

apiVersion: v1

kind: ConfigMap

metadata:

name: datakit-conf

namespace: datakit

data:

#### logging

logging.conf: |-

[[inputs.logging]]

## required

logfiles = [

"/rootfs/var/log/k8s/demo-system/info.log",

]

## glob filteer

ignore = [""]

## your logging source, if it&#39;s empty, use &#39;default&#39;

source = "k8s-demo-system-log"

## add service tag, if it&#39;s empty, use $source.

#service = "k8s-demo-system-log"

## grok pipeline script path

pipeline = ""

## optional status:

## "emerg","alert","critical","error","warning","info","debug","OK"

ignore_status = []

## optional encodings:

## "utf-8", "utf-16le", "utf-16le", "gbk", "gb18030" or ""

character_encoding = ""

## The pattern should be a regexp. Note the use of &#39;&#39;&#39;this regexp&#39;&#39;&#39;

## regexp link: https://golang.org/pkg/regexp/syntax/#hdr-Syntax

multiline_match = &#39;&#39;&#39;^\d{4}-\d{2}-\d{2}&#39;&#39;&#39;

[inputs.logging.tags]

# some_tag = "some_value"

# more_tag = "some_other_value"

  “注意”:由于日志是使用观察云采集的,所以日志已经持久化了,不需要将日志保存到主机。因此,在 Kubernetes 环境中不推荐使用 采集 的这种方法。

  管道

  Pipeline 主要用于切割非结构化文本数据,或者从结构化文本(如 JSON)中提取部分信息。对于日志,主要是提取日志生成时间、日志级别等信息。这里需要特别注意的是,Socket采集接收到的日志是JSON格式的,需要在搜索框中通过关键字进行搜索前进行剪切。有关管道使用的详细信息,请参阅下面的 文章。

  异常检测

  当日志出现异常,对应用影响较大时,使用观察云的日志异常检测功能,并配置告警及时通知观察对象。飞书等通知方式。下面以邮箱为例介绍告警。

  1 创建通知对象

  登录观察云,【管理】-&gt;【通知对象管理】-&gt;【新建通知对象】,选择邮件组,输入姓名和邮箱。

  2 创建一个新的监视器¶

  点击【监控】-&gt;【新建监控】-&gt;【日志监控】。

  输入规则名称,检测指标log_fwd_demo为采集日志中配置的来源,以下错误为日志内容,host_ip为日志标签。在事件内容中,可以使用 {{host_ip}} 来输出具体 label 的值。触发条件填1,标题和内容将通过邮件发送。填写完成后点击【保存】。

  3 配置警报

  在【监控】界面,点击刚刚创建的监控,然后点击【告警配置】。

  对于报警通知对象,选择第一步创建的邮件组,选择报警静音时间,点击【确定】。

  4 触发警报

  应用程序触发错误日志,此时会收到一封通知邮件。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线