filebeat 采集k8s 中nginx deployment 日志

news2025/2/27 1:40:13

一、背景

在k8s集群中,已经部署了nginx应用,需要使用elk来收集日志。

注意:elk并没有放在k8s集群中,使用单独的服务器进行安装。不推荐elk放在k8s集群中!

其中filebeat,使用DaemonSet方式部署,这样就可以自动收集了。

二、环境说明

操作系统:centos 7.6

k8s版本:1.18.1

ip地址:10.212.82.63

配置:2核4g

主机名:k8s-master

操作系统:centos 7.6

k8s版本:1.18.1

ip地址:10.212.82.65

配置:2核4g

主机名:k8s-node01

日志说明

nginx容器,默认的日志路径为:/var/log/nginx,所以在部署时,我会将此目录映射到宿主机的/opt/log/nginx目录(日志格式需要为json)

部署filebeat时,需要将/opt/log/nginx目录挂载到filebeat容器中,这样才能读取nginx日志。

elk

本文使用elk版本,统一采用7.5.1

由于资源紧张,我这里演示效果,在 k8s-node01 部署elk。在实际生产环境中,请单独部署。

关于elasticsearch和head插件安装,请参考链接:

https://www.cnblogs.com/xiao987334176/p/13565468.html

关于logstash安装,请参考链接:

https://www.cnblogs.com/xiao987334176/p/13565790.html

关于kibana安装,请参考链接:

https://www.cnblogs.com/xiao987334176/p/13570301.html

请确保elk工作正常,kibana能看到 logstash收集到的/var/log/messages日志信息。

nginx

登录到主机k8s-node01,创建日志目录

  1. mkdir -p /opt/log/nginx

登录到主机k8s-master,部署nginx

新建文件 nginx-deployment.yaml,内容如下:                  

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: nginx-1
  5. spec:
  6. selector:
  7. matchLabels:
  8. run: nginx-1
  9. replicas: 1
  10. template:
  11. metadata:
  12. labels:
  13. run: nginx-1
  14. spec:
  15. containers:
  16. - name: nginx-1
  17. image: nginx:stable-alpine
  18. ports:
  19. - containerPort: 80
  20. volumeMounts:
  21. - mountPath: /var/log/nginx
  22. name: nginx-log
  23. restartPolicy: Always
  24. volumes:
  25. - name: nginx-log
  26. hostPath:
  27. path: /opt/log/nginx    

新建文件 nginx-service.yaml,内容如下: 

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: nginx-1
  5. labels:
  6. run: nginx-1
  7. spec:
  8. type: NodePort
  9. ports:
  10. - port: 80
  11. name: nginx-port
  12. targetPort: 80
  13. protocol: TCP
  14. nodePort: 30008
  15. selector:
  16. run: nginx-1

开始正式部署

  1. kubectl apply -f nginx-service.yaml
  2. kubectl apply -f nginx-deployment.yaml

 

filebeat

filebeat的镜像,需要在官方的基础上,做一次封装。因为配置文件,需要调整一下。由于资源紧张,这里并没有使用私有仓库harbor或者云产商的私有仓库,直接使用本地存储。

登录到主机k8s-node01,新建目录,并创建dockerfile

  1. mkdir -p /opt/filebeat
  2. cd /opt/filebeat
  3. vi dockerfile

内容如下:

  1. FROM elastic/filebeat:7.5.1
  2. ADD filebeat.yml /usr/share/filebeat/filebeat.yml

 

新建文件filebeat.yml,内容如下:

  1. # 收集系统日志
  2. filebeat.inputs:
  3. - type: log
  4. enabled: true
  5. paths:
  6. - /opt/log/nginx/access.log
  7. fields:
  8. log_source: nginx-access
  9. - type: log
  10. enabled: true
  11. paths:
  12. - /opt/log/nginx/error.log
  13. fields:
  14. log_source: nginx-error
  15. filebeat.config:
  16. modules:
  17. path: ${path.config}/modules.d/*.yml
  18. reload.enabled: false
  19. processors:
  20. - add_cloud_metadata: ~
  21. - add_docker_metadata: ~
  22. output.elasticsearch:
  23. hosts: '10.212.82.65:9200'
  24. indices:
  25. - index: "filebeat-nginx-%{+yyyy.MM.dd}"

 

说明:

这里是读取2个日志文件,分别是access.log和error.log。然后将内容输出到elasticsearch

请根据实际情况修改!

生成镜像

  1. docker build -t my-filebeat:v1 .

登录主机k8s-master,新建filebeat.yaml,内容如下:

  1. apiVersion: apps/v1
  2. kind: DaemonSet
  3. metadata:
  4. name: filebeat-1
  5. spec:
  6. selector:
  7. matchLabels:
  8. run: filebeat-1
  9. template:
  10. metadata:
  11. labels:
  12. run: filebeat-1
  13. spec:
  14. containers:
  15. - name: filebeat-1
  16. image: my-filebeat:v1
  17. imagePullPolicy: IfNotPresent
  18. volumeMounts:
  19. - mountPath: /opt/log
  20. name: log
  21. restartPolicy: Always
  22. volumes:
  23. - name: log
  24. hostPath:
  25. path: /opt/log

 

 

注意:这里采用DaemonSet方式部署,必须挂载目录/opt/log,否则无法读取。

正式部署

 

    • kubectl apply -f filebeat.yaml

 访问elasticsearch head插件,查看filebeat索引是否存在

 登录kibana,新建索引filebeat

索引名称为:filebeat-nginx-*

 

 

添加索引之后,返回主页面

点击change,切换索引到filebeat-nginx-*,然后刷新几遍nginx访问页面,效果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【递归函数的几种常见题型】

递归函数的几种常见题型 目录 题型一:打印一个数的每一位 题型二:计算一个数的每位之和 题型三:计算n的k次方 题型一:打印一个数的每一位 1.1递归函数的实现 void print(int n) {if (n > 9)print(n / 10);printf("…

海外ASO优化之关于应用的营销1

应用程序市场存在一个悲惨的现实:再优秀的应用程序仍然可能会失败。这通常是因为没有人知道它们的存在。所以应用的营销是取得成功的关键。 1、选择正确的应用名称。 实用的应用程序的销售基础是以某种方式使用户的生活更轻松,所以我们需要设置一些功能…

浦东优秀解决方案!闪马智能加速赋能数字化转型

近日,由上海市浦东新区城市数字化转型应用促进中心和上海数字产业发展有限公司联合主办的2023年浦东新区“数转汇”品牌活动启动仪式暨上海数产“科技下午茶”活动举行。现场“2022年浦东新区数字化转型应用优秀解决方案”正式发布,凭借智慧交通一体化感…

深入解析搜好货API:开启智能化电商解决方案

随着电商行业的快速发展,人们对于个性化、智能化的购物体验的追求也越来越高。为了满足消费者的需求,搜好货API应运而生。 一、搜好货API的基本原理 搜好货API基于先进的数据挖掘和机器学习算法,通过收集和分析大量的商品信息和用户行为数据…

[保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现

题目链接&#xff1a; KY3 约数的个数 https://www.nowcoder.com/share/jump/437195121691716950188 描述 输入n个整数,依次输出每个数的约数的个数 输入描述&#xff1a; 输入的第一行为N&#xff0c;即数组的个数(N<1000) 接下来的1行包括N个整数&#xff0c;其中每个…

golang拥有wireshark数据包解析能力

golang拥有wireshark数据包解析能力 1. 功能和实现 wireshark拥有世界上最全面的协议解析能力并且还在不断更新中&#xff0c;通过调研&#xff0c;没有办法找到与wireshark同水平的解析工具。 为了使得golang语言可以拥有wireshark一样强大的协议解析能力&#xff0c;库 gowir…

嗨,你的MySQL性能瓶颈在这!

MySQL的高级用法和性能优化 1. MySQL的高级用法1.1 replace into 用法1.2 内连接&#xff08;inner join&#xff09;1.2.1 等值连接1.2.2 非等值连接1.2.3 左连接1.2.4 右连接 1.3 索引1.3.1 索引的概念1.3.2 索引的分类1.3.3 索引的优点1.3.4 索引的缺点1.3.5 索引的使用场景…

高级身份威胁检测系统可检测拦截攻防演练漏洞

近期将迎来大型攻防演练活动。随着各种实战攻防演练活动和红队&#xff08;攻击队&#xff09;利用 0-Day 及 N-Day 漏洞频繁攻击&#xff0c;甲方的蓝队&#xff08;防守队&#xff09;会出现应接不暇。攻击队为了拿到靶机完成演习目的&#xff0c;一定会拿出最先进的攻击手段…

侯捷 C++ part2 兼谈对象模型笔记——4 specialization 特化

4. specialization 特化 4.1 全特化 full specialization 模板是泛化&#xff0c;特化是泛化的反面&#xff0c;可以针对不同的类型&#xff0c;来设计不同的东西 其语法为template<> struct xxx<type> template<> struct hash<char> { ...size_t …

window7 安装JDK17下载安装

1、下载JDK JDK下载官网&#xff1a;https://www.oracle.com/ 2、安装JDK 双击打开下载好的JDK进入安装界面 选择安装的位置 等待安装成功 安装成功 3、环境变量配置 右键此电脑选择属性选择高级系统设置&#xff08;展示是win7系统&#xff0c;win10也有仔细找找&#xff09;…

优思学院|质量第一的目的是什么?

国外有一句很著名的话&#xff1a;Quality comes first, profit is its logical sequence&#xff0c;意思是&#xff1a;质量第一&#xff0c;利润是其合理的结果&#xff0c;这句话也是很多公司或者商店使用的标语。 简而言之&#xff0c;只要你把质量放在第一位&#xff0c…

C语言 冒泡排序

目录 一、原理 二、代码演示 三、代码优化 一、原理 假设&#xff1a; int arr[] { 9,8,7,6,5,4,3,2,1,0 }; 将 arr 内的元素进行升序排列&#xff0c;得到一个新的数组 int arr[] { 0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;…

数字经济时代,如何加强应用数据保护?

在数字经济时代&#xff0c;加强应用数据保护对于个人和组织来说至关重要。以下是一些加强应用数据保护的建议&#xff1a; 合规法律法规&#xff1a;了解并遵守适用于您所在地区或行业的数据保护法律法规。这包括个人隐私保护法、数据安全法等。 安全意识培训&#xff1a;为组…

Simulink仿真模块 - Trigonometric Function

Trigonometric Function:指定应用于输入信号的三角函数 在仿真库中的位置为:Simulink / Math Operations HDL Coder / Math Operations 模型为: 双击模型打开参数设置界面,如图所示: 说明 Trigonometric Function 模块执行常见的三角函数,并以 rad 为单位输出结…

京东h5滑块

大表哥们我又来了&#xff0c;今日话题&#xff1a;凑字数水文章。 今天来看看这个h5的滑块&#xff0c;老早之前写过一篇关于京东手势验证的&#xff0c;链接在这&#xff0c;大家感兴趣可以去看看。 京东手势验证_某东滑块_逆向学习之旅的博客-CSDN博客 这个怎么讲&#xf…

2023年第2季社区Task挑战赛升级新玩法,等你来战!

第1季都有哪些有趣的作品&#xff1f; 在大家的共建下&#xff0c;FISCO BCOS开源生态不断丰富完善&#xff0c;涌现了众多实用技术教程和代码&#xff1a;基于数字身份凭证的业务逻辑设计&#xff0c;贡献了发放数字身份凭证的参考实现&#xff1b;提供企业碳排放、慈善公益等…

linux4.0新增32位ARM的系统调用

修改内核源码 Linux系统为每一个系统调用赋予一个系统调用号。当应用程序执行一个系统调用时&#xff0c;应用程序就可以知道执行和调用到哪个系统调用了&#xff0c;从而不会造成混乱。系统调用号一旦分配之后就不会有任何变更&#xff0c;否则已经编译好的应用程序就不能运行…

10个牛逼的编程范式,你已经用过了几个?

《10个牛逼的编程范式&#xff0c;你已经用过了几个&#xff1f;》 编程范式是计算机编程中的基本思想和方法论&#xff0c;它描述了不同的编程风格和抽象层次。随着计算机科学的不断发展&#xff0c;编程范式也在不断演进和扩展&#xff0c;从最早的命令式编程到面向对象、声明…

VTK学习笔记(二十一)

显示立方体已经做过了&#xff0c;现在想简单处理一下立方体&#xff0c;比如每个面上增加一些文字。效果如下。 #include <vtkAnnotatedCubeActor.h> #include <vtkCamera.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkPrope…

连续两年增收不增利,比亚迪电子靠新能源汽车业务再次起飞?

在净利润连续两年下挫之后&#xff0c;比亚迪电子&#xff08;00285.HK&#xff09;终于迎来了好消息。 不久前比亚迪电子发布2023年中期盈利预告显示&#xff0c;上半年净利润同比增加115%-146%&#xff08;2022年上半年的净利润显示6.34亿元&#xff09;。 这主要受益于大客…