【运维篇】阿里云SLS日志服务

Kubernetes接入

选择project,建立logstore

在这里插入图片描述
建立了ps-pro

配置logtail,接入pod数据

【运维篇】阿里云SLS日志服务_第1张图片

日志格式非常多,我们选择docker标准输出
【运维篇】阿里云SLS日志服务_第2张图片

配置如下

{
    "inputs": [
        {
            "detail": {
                "Stderr": true,
                "IncludeLabel": {
                    "io.kubernetes.container.name": "you_pod_name"
                },
                "Stdout": true,
                "ExcludeEnv": {
                    "POD_NAMESPACE": "your_pod_namespace"
                },
                "BeginLineRegex": "\\[\\w.*]\\s\\d.+\\/\\d+\\s\\-\\s\\d+\\:\\d+\\:\\d+\\s\\|\\s\\d+\\s\\|"
            },
            "type": "service_docker_stdout"
        }
    ]
}

查找pod日志

【运维篇】阿里云SLS日志服务_第3张图片

集群日志中心

【运维篇】阿里云SLS日志服务_第4张图片

k8s 应用程序日志文件输出导致pod内存过高

写入日志文件时,通常会将数据先存储到内存缓存区中,然后定期或根据某些条件将缓存中的数据批量写入到磁盘中,这个过程被称为“延迟写入”(Delayed Writing)或“异步写入”(Asynchronous Writing)。

在操作系统中,缓存分为多级缓存,从最接近CPU的一级缓存到最接近磁盘的缓存。其中,缓存管理中的高速缓存(Buffer Cache)通常用于管理磁盘数据的读写,缓存一部分磁盘数据的内容,以加快读写操作的速度。

相对于标准输出(stdout),写入日志文件使用的是文件IO,数据在写入磁盘时需要通过缓存机制来提高写入速度。而标准输出则是直接将数据输出到终端,不需要使用缓存,因此不会有高速缓存的影响。

此外,缓存的大小和写入的频率也会影响缓存的大小。如果写入日志文件的频率较高,缓存可能会增大以提高性能。相反,如果标准输出频率较高,则不需要缓存太多数据,以避免影响程序的性能。

总的来说,高速缓存的大小取决于缓存管理的策略和数据写入的频率,这也是为什么写入日志文件时buffer cache比较高的原因。

程序内使用sdk

也可在程序内定义 log aliyun-log-go-sdk

----------------------------------------------2022.04.25-------------------------------------------------

阿里云sls在宿主机上采集日志

配置对应的机器组,机器选择阿里云的sls
【运维篇】阿里云SLS日志服务_第5张图片

配置logtail,隔一段时间,就有日志了
【运维篇】阿里云SLS日志服务_第6张图片

你可能感兴趣的:(Devops,#,Kubernetes,后端开发,docker)