首页 > 其他分享 >k8s通过sidecar模式收集pod的容器日志至ELK

k8s通过sidecar模式收集pod的容器日志至ELK

时间:2023-03-01 13:06:47浏览次数:48  
标签:ELK filebeat log 10.0 clavaplus test pod k8s consume

架构:

k8s通过sidecar模式收集pod的容器日志至ELK_k8s

已完成的部署

1、ES集群及kibana部署

​https://blog.51cto.com/yht1990/6080981​

2、kafaka+zookeeper集群

​https://blog.51cto.com/yht1990/6081518​

准备sidecar镜像(filebeat)

找一台服务器打镜像

[root@yw-test filebeat]# cat Dockerfile 
FROM docker.elastic.co/beats/filebeat:7.9.0
COPY filebeat.yml /usr/share/filebeat/filebeat.yml
USER root
RUN chown root:filebeat /usr/share/filebeat/filebeat.yml
USER filebeat
[root@yw-test filebeat]#
[root@yw-test filebeat]#
[root@yw-test filebeat]# cat filebeat.yml
filebeat.inputs:
- input_type: log
paths:
- /data/logic/log/*.log
fields:
log_topic: "${TOPIC_ID}"
#tail_files: true
clean_inactive: 48h
ignore_older: 24h
close_inactive: 1m

output.kafka:
hosts: "${KAFKA_SERVER}"
topic: '%{[fields.log_topic]}'
partition.round_robin:
reachable_only: true
required_acks: 1
compression: gzip
max_message_bytes: 1000000

logging.level: error

[root@yw-test filebeat]# docker build . -t 10.0.7.12/k8s/filebeat/sidecar:7.9.0
[root@yw-test filebeat]# docker push 10.0.7.12/k8s/filebeat/sidecar:7.9.0

创建deployment

[root@k8s-test-manager src]# cat test-clavaplus-consume-sidecar-filebeat.yml 
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: test-clavaplus-consume-deployment-label
name: test-clavaplus-consume-deployment
namespace: test-app
spec:
replicas: 2
selector:
matchLabels:
app: test-clavaplus-consume-selector
template:
metadata:
labels:
app: test-clavaplus-consume-selector
spec:
imagePullSecrets:
- name: myregistrykey
containers:
- name: test-clavaplus-consume
image: registry.cn-shenzhen.aliyuncs.com/test/swoole:test-clavaplus-consume-518b279-2023-0227-1833
imagePullPolicy: IfNotPresent
#imagePullPolicy: Always
ports:
- containerPort: 9501
protocol: TCP
name: http
resources:
limits:
cpu: 1
memory: "512Mi"
requests:
cpu: 200m
memory: "512Mi"
volumeMounts:
- name: applogs
mountPath: /data/logic/log
- name: sidecar-filebeat
image: 10.0.7.12/k8s/filebeat/sidecar:7.9.0
#imagePullPolicy: IfNotPresent
imagePullPolicy: Always
env:
- name: "TOPIC_ID"
value: "test-clavaplus-consume"
- name: "KAFKA_SERVER"
value: '["10.0.7.53:9092", "10.0.7.54:9092", "10.0.7.55:9092"]'
volumeMounts:
- name: applogs
mountPath: /data/logic/log
volumes:
- name: applogs #定义通过emptyDir实现业务容器与sidecar容器的日志共享,以让sidecar收集业务容器中的日志
emptyDir: {}

创建deployement

kubectl apply -f test-clavaplus-consume-sidecar-filebeat.yml

kafka工具检查有无数据

可以看到目前已有数据

k8s通过sidecar模式收集pod的容器日志至ELK_elk_02

部署logstash

yum -y install java-1.8.0-openjdk
yum -y install https://mirror.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/7.9.0/logstash-7.9.0.rpm
systemctl start logstash
systemctl enable logstash
tail -f /var/log/logstash/logstash-plain.log

创建logstash配置文件

# 将收集过来的json日志做json解析

    codec => json {

       charset => "UTF-8" # 支持中文搜索

   }


# 将message消息赋值给source字段

filter {

 json {

   source => "message"

 }

 mutate {    

  # 删除没用的字段

   remove_field => ["message","@version","agent","ecs"]

 }

}

input {
kafka {
bootstrap_servers => "10.0.7.53:9092,10.0.7.54:9092,10.0.7.55:9092"
topics => ["test-clavaplus-consume"]
codec => json {
charset => "UTF-8"
}
}
}

filter {
json {
source => "message"
}
if [fields][log_topic] == "test-clavaplus-consume" {
mutate {
remove_field => ["message","@version","agent","ecs"]
}
}
}

output {
if [fields][log_topic] == "test-clavaplus-consume" {
elasticsearch {
hosts => ["10.0.7.46:9200","10.0.7.47:9200","10.0.7.48:9200"]
index => "test-clavaplus-consume-%{+YYYY.MM.dd}"
}
}
}

启动logstash

systemctl restart logstash && tail -f /var/log/logstash/logstash-plain.log

登陆kibana创建索引并查看数据

k8s通过sidecar模式收集pod的容器日志至ELK_elk_03

k8s通过sidecar模式收集pod的容器日志至ELK_k8s日志_04

k8s通过sidecar模式收集pod的容器日志至ELK_日志服务_05

k8s通过sidecar模式收集pod的容器日志至ELK_sidecar_06

标签:ELK,filebeat,log,10.0,clavaplus,test,pod,k8s,consume
From: https://blog.51cto.com/yht1990/6089320

相关文章

  • pod install–verbose 出错 仓库拉不下来 https://github.com/CocoaPods/Specs.g
    发布过unity+admobiOS包的开发者应该都有体会,构建版本时unity会很长时间卡在podinstall这个过程中,特别是在第一次执行构建xcode项目时,可能整个过程耗时要一个下午!在这个......
  • k8s基础概念
    k8s组件组件架构图Master组件kube-apiserverk8sApI,集群的统一入口,各组件的协调者,以RESTfulAPI提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提......
  • sudo gem install -n /usr/local/bin cocoapods 安装cocoapods过程中出现的问题,及其解
    环境如下os:macOSMonterey12.6,XCode14.2执行命令:sudoxcode-select-s/Applications/Xcode.appsudoxcode-select--installsudogeminstall-n/usr/local/b......
  • K8S 1.20 弃用 Docker 评估之 Docker CLI 的替代产品 nerdctl
    背景2020年12月初,Kubernetes在其最新的Changelog中宣布,自Kubernetes1.20之后将弃用Docker作为容器运行时。弃用Docker带来的,可能是一系列的改变,包括不限于:......
  • K8S中PV和PVC (云原生)
    前言容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet会重启它,但是容器中的文件将丢失——容器以干净的状态......
  • K8S生产环境故障排查一(POD和节点问题排查)
    一、POD启动异常、部分节点无法启动pod容器里管理应用pod是k8S中最小调度单元,POD里面的容器共享pod的空间、资源、网络、存储等。pod管理一个容器。pod管理多个容器pod出......
  • Kubernetes(K8S)应用案例
    某互联网公司拥有一个复杂的微服务应用程序,其中包含数百个服务。这些服务运行在不同的服务器上,使用不同的编程语言和框架。因此,管理和扩展这些服务变得困难,公司需要一个能......
  • 一次k8s docker下.net程序的异常行为dump诊断
    背景昨天,一位朋友找到我寻求帮助。他的项目需要调用一个第三方项目的webAPI。这个webAPI本身可从header,querystring中取相关信息,但同事发现他在调用时,无法按期望的那样......
  • kubeadm卸载清空k8s环境
    #!/bin/bashkubeadmreset-fmodprobe-ripiplsmodrm-rf~/.kube/rm-rf/etc/kubernetes/rm-rf/etc/systemd/system/kubelet.service.drm-rf/etc/systemd/s......
  • k8s各种证书介绍
    在进行二进制搭建K8S集群前,我们需要梳理最磨人的一个点,就是各种各样的证书。官方文档参考:https://kubernetes.io/docs/setup/certificates/https://blog.csdn.net/vic_qx......