kube-prod-runtime日志栈实战ElasticsearchFluentdKibana高效运维指南【免费下载链接】kube-prod-runtimeA standard infrastructure environment for Kubernetes项目地址: https://gitcode.com/gh_mirrors/ku/kube-prod-runtime在Kubernetes生产环境中日志管理是确保系统稳定性和可观测性的关键环节。kube-prod-runtimeBKPR提供了一个完整的EFKElasticsearch Fluentd Kibana日志栈解决方案帮助开发者和运维团队轻松实现日志的集中收集、存储和可视化分析。本文将为您详细介绍如何在生产环境中使用kube-prod-runtime的日志栈功能实现高效的Kubernetes日志管理。 什么是kube-prod-runtime日志栈kube-prod-runtime是一个标准的Kubernetes生产环境基础设施它集成了EFK日志栈作为核心组件之一。这个日志栈由三个主要组件组成Elasticsearch分布式搜索和分析引擎负责存储和索引日志数据Fluentd统一日志收集器从Kubernetes集群收集容器和系统日志Kibana数据可视化平台提供强大的日志查询和仪表板功能通过这三个组件的完美配合kube-prod-runtime为您的Kubernetes集群提供了企业级的日志管理能力。 快速部署EFK日志栈一键安装步骤使用kube-prod-runtime部署EFK日志栈非常简单。首先确保您已经安装了必要的工具# 安装kubectl curl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl # 安装BKPR安装程序 # 按照官方文档获取安装程序配置环境变量在部署之前需要配置一些必要的环境变量export DNS_ZONEyour-domain.com export ADMIN_EMAILadminyour-domain.com export OAUTH_AUTHZ_DOMAINyour-domain.com export KEYCLOAK_PASSWORDyour-secret-password部署日志栈运行以下命令开始部署kubeprod install generic \ --dns-zone${DNS_ZONE} \ --email${ADMIN_EMAIL}部署完成后kube-prod-runtime会自动配置完整的EFK日志栈包括Elasticsearch集群3个节点Fluentd DaemonSet每个节点一个实例Kibana Web界面 日志栈架构解析日志收集流程kube-prod-runtime的日志收集采用以下流程Fluentd收集日志Fluentd作为DaemonSet部署每个Kubernetes节点运行一个实例收集容器标准输出和标准错误流系统日志来自/var/log目录Docker守护进程日志日志处理与转发Fluentd使用配置在manifests/components/fluentd-es-config/output.conf中的Elasticsearch输出插件将处理后的日志发送到Elasticsearch集群。日志存储Elasticsearch集群接收并存储日志数据默认配置为3个节点集群每个节点分配100GB持久化存储。日志查询用户通过Kibana界面访问https://kibana.${DNS_ZONE}进行日志查询和分析。组件配置详解Elasticsearch配置Elasticsearch在kube-prod-runtime中通过manifests/components/elasticsearch.jsonnet文件进行配置。默认配置包括3个节点的集群配置9200端口用于HTTP访问9300端口用于节点间通信每个节点100GB的持久化存储Fluentd配置Fluentd的配置文件位于manifests/components/fluentd-es-config/目录主要包括fluentd.conf主配置文件output.confElasticsearch输出配置system.conf系统日志收集配置containers.input.conf容器日志收集配置关键配置示例match ** id elasticsearch type elasticsearch host #{ENV[ES_HOST]} port 9200 logstash_format true buffer type file path /var/log/fluentd-buffers/kubernetes.system.buffer flush_interval 5s chunk_limit_size 2M /buffer /matchKibana配置Kibana通过manifests/components/kibana.jsonnet文件配置自动连接到Elasticsearch集群并配置了OAuth2代理进行身份验证。 最佳实践配置1. 调整Elasticsearch集群规模对于生产环境您可能需要调整Elasticsearch集群的规模。通过修改配置文件可以轻松调整节点数量和存储大小elasticsearch: { replicas: 5, min_master_nodes: 3, }2. 优化Fluentd资源分配根据日志量调整Fluentd的资源限制fluentd_es: { daemonset: { spec: { template: { spec: { containers_: { fluentd_es: { resources: { limits: { memory: 600Mi }, requests: { cpu: 200m, memory: 300Mi, }, }, }, }, }, }, }, }, }3. 自定义日志解析规则如果您的应用程序使用非标准日志格式可以在Fluentd配置中添加自定义解析器filter kubernetes.** type parser key_name log reserve_data true parse type regexp expression /^(?time\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (?level\w) (?message.*)$/ /parse /filter 日志查询与分析技巧Kibana基础查询登录Kibana后您可以使用以下查询技巧时间范围过滤使用时间选择器快速定位特定时间段的日志字段过滤通过点击日志字段值快速添加过滤器全文搜索使用Lucene查询语法进行复杂搜索创建可视化仪表板在Kibana中创建仪表板的步骤进入Visualize页面选择可视化类型柱状图、折线图、饼图等配置数据源和聚合方式保存可视化并添加到仪表板常用查询示例# 查找错误级别的日志 level: ERROR # 查找特定命名空间的日志 kubernetes.namespace_name: production # 查找包含特定关键词的日志 message: connection timeout # 组合查询 level: ERROR AND kubernetes.pod_name: app-* 故障排查指南常见问题及解决方案1. 日志收集失败症状Kibana中看不到新日志排查步骤检查Fluentd Pod状态kubectl get pods -n kubeprod | grep fluentd查看Fluentd日志kubectl logs -n kubeprod fluentd-es-xxxx验证Elasticsearch连接检查Fluentd配置中的ES_HOST环境变量2. Elasticsearch集群健康问题症状Elasticsearch集群状态为黄色或红色排查步骤检查集群健康状态curl https://elasticsearch.kubeprod.svc:9200/_cluster/health查看节点状态kubectl get pods -n kubeprod | grep elasticsearch检查存储空间确保PersistentVolume有足够空间3. Kibana访问问题症状无法访问Kibana界面排查步骤检查Ingress配置kubectl get ingress -n kubeprod验证证书状态kubectl get certificates -n kubeprod检查OAuth2代理日志 数据保留策略配置日志保留时间kube-prod-runtime使用Elasticsearch Curator管理索引生命周期。默认配置保留30天的日志数据。您可以通过修改manifests/components/elasticsearch-curator.jsonnet来调整保留策略elasticsearch_curator: { config: { actions: { delete_indices: { action: delete_indices, description: Delete indices older than 90 days, options: { timeout_override: 300, continue_if_exception: false, disable_action: false, }, filters: [ { filtertype: pattern, kind: prefix, value: logstash-, }, { filtertype: age, source: creation_date, direction: older, unit: days, unit_count: 90, }, ], }, }, }, }备份策略建议对于生产环境建议实施以下备份策略定期快照配置Elasticsearch快照到对象存储跨区域复制对于关键业务考虑跨区域部署监控告警设置磁盘空间和集群健康告警 升级和维护版本升级kube-prod-runtime支持平滑升级EFK组件。升级前建议备份当前配置查看官方文档了解版本兼容性在测试环境验证升级过程日常维护任务监控集群健康定期检查Elasticsearch集群状态清理旧索引确保Curator任务正常运行更新配置根据需要调整日志收集规则容量规划监控存储使用情况提前扩容 高级功能扩展自定义Kibana插件您可以为Kibana安装额外的插件来增强功能kibana: { plugins: { enhanced-table: { version: 1.2.0, url: https://github.com/fbaligand/kibana-enhanced-table/releases/download/v1.2.0/enhanced-table-1.2.0_6.7.2.zip, }, }, }集成监控告警将日志监控与Prometheus告警集成prometheus: { monitoring_rules: { HighErrorRate: { expr: sum(rate(fluentd_output_status_num_records_total{type\elasticsearch\, status\error\}[5m])) / sum(rate(fluentd_output_status_num_records_total{type\elasticsearch\}[5m])) 0.1, for: 5m, labels: {severity: warning}, annotations: { summary: High error rate in Fluentd to Elasticsearch, description: More than 10% of logs are failing to be sent to Elasticsearch, }, }, }, } 性能优化建议1. 调整缓冲区设置根据日志量调整Fluentd缓冲区配置buffer type file path /var/log/fluentd-buffers/kubernetes.system.buffer flush_mode interval flush_interval 10s chunk_limit_size 8M total_limit_size 1G overflow_action block /buffer2. 优化Elasticsearch索引为不同的日志类型创建不同的索引模板PUT _template/logstash-custom { index_patterns: [logstash-*], settings: { number_of_shards: 3, number_of_replicas: 1 } }3. 使用索引生命周期管理对于大规模部署建议使用Elasticsearch的索引生命周期管理ILM功能创建生命周期策略配置索引模板使用ILM设置热-温-冷数据层 总结kube-prod-runtime的EFK日志栈为Kubernetes生产环境提供了一个完整、可靠且易于管理的日志解决方案。通过本文的指南您应该能够✅ 快速部署和配置EFK日志栈 ✅ 理解日志收集和处理流程 ✅ 掌握日志查询和分析技巧 ✅ 实施故障排查和数据保留策略 ✅ 进行性能优化和功能扩展记住良好的日志管理是确保系统可观测性的基础。kube-prod-runtime的日志栈不仅提供了开箱即用的功能还支持灵活的定制和扩展能够满足从中小型到大型企业的各种需求。无论您是刚开始使用Kubernetes的新手还是经验丰富的运维专家kube-prod-runtime的EFK日志栈都能帮助您建立强大的日志监控体系为业务稳定运行提供坚实保障。【免费下载链接】kube-prod-runtimeA standard infrastructure environment for Kubernetes项目地址: https://gitcode.com/gh_mirrors/ku/kube-prod-runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考