graylog使用Sidecars方式收集springboot程序的日志

1、部署graylog后台服务

使用docker-compose启动三个服务程序,包括graylog、mongodb、opensearch。

docker-compose.yml内容如下

version: '3'
services:
# MongoDB: https://hub.docker.com/_/mongo/
  mongodb:
    image: mongo:6.0.14
    privileged: true
    networks:
      - graylog

  opensearch:
    image: "opensearchproject/opensearch:2.12.0"
    environment:
      - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
      - "bootstrap.memory_lock=true"
      - "discovery.type=single-node"
      - "action.auto_create_index=false"
      - "plugins.security.ssl.http.enabled=false"
      - "plugins.security.disabled=true"
      # Can generate a password for `OPENSEARCH_INITIAL_ADMIN_PASSWORD` using a linux device via:
      # tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom  | head -c${1:-32}
      - OPENSEARCH_INITIAL_ADMIN_PASSWORD=+_8r#wliY3Pv5-HMIf4qzXImYzZf-M=M
    privileged: true
    ulimits:
      memlock:
        hard: -1
        soft: -1
      nofile:
        soft: 65536
        hard: 65536
    restart: "on-failure"
    networks:
        - graylog

  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    image: graylog/graylog:5.2
    environment:
    - GRAYLOG_NODE_ID_FILE=/usr/share/graylog/data/config/node-id
    - GRAYLOG_HTTP_BIND_ADDRESS=0.0.0.0:9000
    - GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200
    - GRAYLOG_MONGODB_URI=mongodb://mongodb:27017/graylog
    # CHANGE ME (must be at least 16 characters)!
    - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
    # Password: admin
    - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
    - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
    privileged: true
    entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
    networks:
      - graylog
    restart: always
    depends_on:
      - mongodb
      - opensearch
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
      - 5044:5044

networks:
  graylog:
    driver: bridge

2、部署k8s上graylog的后台服务 

 graylog2-service.yaml

启动运行kubectl apply -f graylog2-service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: graylog2
  name: graylog2
  namespace: example
spec:
  type: ClusterIP
  ports:
    - name: rest
      port: 9000
      protocol: TCP
    - name: tsyslog
      port: 1514
      protocol: TCP
    - name: usyslog
      port: 1514
      protocol: UDP
    - name: tgelf
      port: 12201
      protocol: TCP
    - name: ugelf
      port: 12201
      protocol: UDP
    - name: tbeat
      port: 5044
      protocol: TCP
    - name: ubeat
      port: 5044
      protocol: UDP
---
apiVersion: v1
kind: Endpoints
metadata:
  labels:
    app: graylog2
  name: graylog2
  namespace: example
subsets:
  - addresses:
      - ip: 上面执行docker-compose up -d的主机ip
    ports:
      - name: rest
        port: 9000
        protocol: TCP
      - name: tsyslog
        port: 1514
        protocol: TCP
      - name: usyslog
        port: 1514
        protocol: UDP
      - name: tgelf
        port: 12201
        protocol: TCP
      - name: ugelf
        port: 12201
        protocol: UDP
      - name: tbeat
        port: 5044
        protocol: TCP
      - name: ubeat
        port: 5044
        protocol: UDP

3、登录graylog后台配置Sidecars信息

登录地址

http://ip:9000

登录用户名/密码

admin/admin

顶部菜单选择【System】中的之后一个Sidecars,点击【Create or reuse a token for the graylog-sidecar user】

其中Token Name自定义填写,点击Create Token按钮,会生成token信息。

生成的Token需要复制保留,下面file-service.yaml文件需要使用到

查看节点id信息,在System元素处,会看见节点id信息:Node ID

节点ID需要复制保留,下面file-service.yaml文件需要使用到

4、部署springboot程序在k8s上

file-service.yaml,启动运行kubectl apply -f file-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: file-service
  namespace: example
  labels:
    service: file-service
spec:
  ports:
    - name: http
      port: 8080
      protocol: TCP
      targetPort: 8080
      nodePort: 30250
  selector:
    app: file-service
  type: NodePort
---
apiVersion: v1
kind: Service
metadata:
  name: file-service-headless
  namespace: example
  labels:
    app: file-service
spec:
  ports:
    - name: http
      port: 8080
      targetPort: 8080
  clusterIP: None
  selector:
    app: file-service
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: file-service
  namespace: example
spec:
  replicas: 1
  serviceName: file-service-headless
  selector:
    matchLabels:
      app: file-service
  template:
    metadata:
      labels:
        app: file-service
        release: default
    spec:
      restartPolicy: Always
      containers:
        - name: file-service
          resources:
            requests:
              ephemeral-storage: 2048Mi
            limits:
              ephemeral-storage: 2048Mi
          imagePullPolicy: IfNotPresent
          image: file-service:v1          
          ports:
            - name: http
              containerPort: 8080
          volumeMounts:
            - name: volume-localtime
              mountPath: /etc/localtime              
            - name: graylog2-logs
              #springboot程序容器内产生日志的目录
              mountPath: /opt/file-service/logs   
        - name: sidecar-collector-logs
          imagePullPolicy: IfNotPresent
          image: graylog-log-sidecar-collector:latest          
          env:
            - name: GS_SERVER_URL
              #定义graylog后台服务的地址
              value: "http://graylog2:9000/api/"
              #定义graylog服务的节点id,取值来自上一步复制的内容
            - name: GS_NODE_ID
              value: "5861f0cb-e128-4f2e-a17b-3e42f8bff6af"
              #节点名称自定义
            - name: GS_NODE_NAME
              value: "sidecar-collector-logs-file-service"
              #使用的token,取值来自上一步复制的内容
            - name: GS_SERVER_API_TOKEN
              value: "17b7haug3bvflmtuj23e34eg9raen6bsmcppdo1aluls7s05juvn"
              #采集器容器的目录,通过挂载的方式GS_LIST_LOG_FILES与运行springboot程序的graylog2-logs目录进行关联
            - name: GS_LIST_LOG_FILES
              value: "/graylog2-logs"
          volumeMounts:
            - name: graylog2-logs
              mountPath: /graylog2-logs
      volumes:
        - name: volume-localtime
          hostPath:
            path: /etc/localtime
            type: ''
        #同时映射了宿主机目录,如果产生的日志不够,可以在这个文件夹内手动添加*.log日志。
        - name: graylog2-logs
          hostPath:
            path: /home/volume
            type: DirectoryOrCreate 

5、配置Sidecars 

springboot正常启动后,会自动注册到graylog上。

下面是两个容器,一个复制运行程序,另一个负责日志收集上报。

sidecars的运行状态已经是Running,但此时还需要配置file beat信息

点击名称链接,进入新页面,可以看到加载的日志目录信息

指派filebeat配置

编辑Configuration下的Log Collectors,选项下图的内容进行编辑,Executable Path要改成实际的目录,

graylog-log-sidecar-collector:latest  镜像我将filebeat放到了

/usr/share/filebeat/bin/filebeat,需要根据实际情况进行修改。点击Update Collectors进行保存。

 Configurations中选择下面内容进行编辑

模板配置内容

# Needed for Graylog
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
fields.gl2_source_collector: ${sidecar.nodeId}


output.logstash:
   hosts: ["${user.graylog_host}:5044"]

   #hosts: ["${user.graylog_host}:12201"]
path:
   data: ${sidecar.spoolDir!"/var/lib/graylog-sidecar/collectors/filebeat"}/data
   logs: ${sidecar.spoolDir!"/var/lib/graylog-sidecar/collectors/filebeat"}/log

filebeat.inputs:
- type: log
  id: sidecar-collector-logs-file-service
  enabled: true
  paths:
  - /graylog2-logs/*.log
  fields_under_root: true
  fields:
      event_source_product: springboot

修改右侧的环境变量信息 ,k8s中使用域名访问服务。

 重启Sidecar插件服务

观察容器内日志

6、配置Input 

填写名称即可,选择Global全局的。

7、查看收集日志效果 

8、Sidecar Dockerfile

graylog2-sidecar-log-collector

手动编译成镜像

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

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

相关文章

PS入门|如何让模糊的图片变得清晰?

前言 前段时间的PS入门讲的都是如何抠图、抠图、抠图。小白都快抠出三室一厅了&#xff0c;不知道学习的小伙伴如何了。 如果在学习过程中没有练习的照片&#xff0c;那直接使用每一篇文章的照片即可&#xff0c;学PS最忌讳的就是光看不练&#xff0c;眼睛会了&#xff0c;手…

Erlang中常用数据结构原理及其实现

文章目录 一、Erlang 简介二、数据结构2.1、元组&#xff08;Tuple&#xff09;2.1.1、示例&#xff1a;2.1.2、实现&#xff1a; 2.2、列表&#xff08;List&#xff09;2.2.1、示例2.2.2、实现2.2.3、原理 3. 字典&#xff08;Dictionary&#xff09;3.1、创建字典3.2、添加和…

FPGA基于VCU的H265视频压缩,HDMI2.0输入,支持4K60帧,提供工程源码+开发板+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的视频图像编解码方案 3、详细设计方案设计框图FPGA开发板视频输入Video PHY ControllerHDMI 1.4/2.0 Receiver SubsystemVideo Processing SubsystemVideo Frame Buffer WriteZynq UltraScale VCUPetaLinux 系统制作VLC播放器工…

Collection与数据结构 二叉树(二):二叉树精选OJ面试题(上)

1. 判断是否为相同的二叉树 OJ链接 public boolean isSameTree(Node p, Node q) {if (p null && q ! null || p ! null && q null){//结构不同return false;}if (p null && q null){//结构相同,都是空树return true;}if (p.value ! q.value){//…

vector及cv::Mat删除指定元素并不改变位置

1、vector删除指定元素且不改变原有的顺序 使用erase方法&#xff0c;测试例子如下所示&#xff1a; //测试用例 struct MyStruct {int a;int b; }; std::vector<MyStruct> spotInfo; spotInfo.push_back({ 1,2 }); spotInfo.push_back({ 3,4 }); spotInfo.push_back({…

医疗器械UDI码的DI和PI什么意思

一、理解医疗器械UDI 医疗器械的UDI码是Unique Device Identifier Code的缩写&#xff0c;意为唯一设备识别码。 医疗器械的UDI码是唯一设备识别码&#xff0c;由两个部分组成&#xff1a;DI和PI。 1.1、DI 理解 DI&#xff08;Device Identifier&#xff0c;设备标识符&am…

电池二次利用走向可持续大循环周期的潜力和挑战(第三篇)

一、电池的梯级利用 电池梯级利用&#xff08;Battery Tiered Utilization&#xff09;是一种可持续发展的策略&#xff0c;指的是当电池在其最初的应用场景中不再能满足高性能需求时&#xff0c;通过检测、评估、重组等一系列技术手段&#xff0c;将这些电池转移到对性能要求…

JetBrains RubyMine 2024.1 发布 - 最智能的 Ruby 与 Rails IDE

JetBrains RubyMine 2024.1 发布 - 最智能的 Ruby 与 Rails IDE 请访问原文链接&#xff1a;JetBrains RubyMine 2024.1 (macOS, Linux, Windows) - 最智能的 Ruby 与 Rails IDE&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org…

MobX入门指南:快速上手状态管理库

一、什么是MobX MobX 是一个状态管理库&#xff0c;它可以让你轻松地管理应用程序的状态&#xff0c;并且可以扩展和维护。它使用观察者模式来自动传播你的状态的变化到你的 React 组件。 二、安装及配置 安装 MobX 和 MobX-React&#xff1a;你可以使用 npm 或 yarn 安装这…

DePIN打猎之旅:AI算力作饵,道阻且长

出品&#xff5c;OKG Research 作者&#xff5c;Hedy Bi 香港Web3嘉年华已告一段落&#xff0c;然而Web3自由的脉搏还在跳动&#xff0c;并不断向其他行业渗透。和上一轮周期相比&#xff0c;本轮牛市开启的逻辑是由“原生创新叙事”转变成“主流认可&#xff0c;资金驱动”的…

vue3的创建使用

一、vue3 用vite创建vue3项目 注意node.js版本 创建一个文件夹 首先要 安装npm &#xff1a; npm i 运行 npm run dev 新建了testView alt shift enter 运行js文件 cd .\ project\node .\index.js\ 二、vue3的特性(vue2和vue3的区别) 使用Proxy代替definePropert…

solidworks electrical 2D和3D有什么区别

SolidWorks Electrical 是一款专为电气设计开发的软件工具&#xff0c;它提供了两种主要的工作环境&#xff1a;2D电气设计和3D电气集成设计。两者在功能和应用场景上存在显著的区别&#xff1a; SolidWorks Electrical 2D 设计 特点与用途&#xff1a; SolidWorks Electrica…

水泵轴承的寿命计算

水泵轴承的寿命计算 按平均值法计算滑动轴承的寿命&#xff0c;对参加试验的多个相同滑动轴承&#xff0c;按试验前、后对运动副零件尺寸的精密测量结果&#xff0c;算出平均的磨损量&#xff0c;与滑动运动幅允许的最大配合间隙进行比较&#xff0c;得出运动副的使用寿命或更…

专科学习嵌入式合适吗?

专科学习嵌入式是完全合适的&#xff0c;但确实需要注意一些因素以确保你的学习之路更加顺利。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信2…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之九 简单视频卡通画效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之九 简单视频卡通画效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之九 简单视频卡通画效果 一、简单介绍 二、简单视频卡通画效果实现原理 三、简单视频卡通画效果…

Mac M2安装 Windows

由于需要在 Windows 上使用一些软件&#xff0c;今天在 Mac M2 上安装了 Windows 11。以前在 X86 Mac 上安装很容易&#xff0c;都是 X86 架构随便找个镜像安装上就可以用了。到了 M1/M2 Arm 架构就会麻烦一些&#xff0c;先在网上找到 Windows 10 Arm 架构的安装镜像&#xff…

(五)PostgreSQL的管理工具pgAdmin

PostgreSQL的管理工具pgAdmin pgAdmin 是一款流行的开源图形界面管理工具&#xff0c;用于 PostgreSQL 数据库的管理和开发。它提供了一个易于使用的界面&#xff0c;允许用户执行各种数据库任务&#xff0c;如创建和修改数据库对象&#xff08;表、视图、索引等&#xff09;、…

【简单讲解下Symfony框架】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

test4122

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版

IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版 文章目录 IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版前言 第一步&#xff1a; IntelliJ IDEA 2024.1安装教程第 0 步&…