云原生链路观测平台 openobserve + fluent-bit,日志收集

news/2024/9/19 7:13:54 标签: 云原生, openobserve, fluent-bit

grpc-opentracing
https://github.com/grpc-ecosystem/grpc-opentracing

openobserve + fluent-bit
为啥会选择这个组合 一个 rust 写的一个是c写的,性能和内存方面不用担心,比java 那套好太多了

openobserve 文档 :https://openobserve.ai/docs/user-guide/users/

fluent-bit 文档: https://docs.fluentbit.io/manual/installation/linux/ubuntu

fluent-bit linux 服务器red hat 8 安装,安装地址
https://docs.fluentbit.io/manual/installation/linux/redhat-centos

[ec2-user@master yum.repos.d]$ cat fluent-bit.repo
[fluent-bit]
name=Fluent Bit
baseurl=https://packages.fluentbit.io/centos/8/$basearch/
gpgcheck=1
gpgkey=https://packages.fluentbit.io/fluentbit.key
repo_gpgcheck=1
enabled=1


[ec2-user@master yum.repos.d]$ pwd
/etc/yum.repos.d

sudo find / -name fluent-bit
/opt/fluent-bit/bin/fluent-bit -v

openobservefluent-bit 都是二进制文件启动很简单,fluent-bit 负责传输,目前给出fluent-bit 配置
配置文件

[SERVICE]
    Flush        1
    Daemon       Off
    Log_Level    info
    Parsers_File parsers.conf
[INPUT]
    Name        tail
    Path        /Users/admin/go/src/goBoss/my_colly/my_github/zlog/logs/*.log
    Tag         logs
    Parser      json_parser
    DB          ./flb_logs.db
    Mem_Buf_Limit 5MB
    Skip_Long_Lines On
    Rotate_Wait 10
    Path_Key    filename
    Exclude_Path /Users/admin/go/src/goBoss/my_colly/my_github/zlog/logs/*[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]*.log
# [FILTER]
#     Name        lua
#     Match       logs
#     Script      process_time.lua
#     Call        extract_time

[OUTPUT]
    Name        http
    Match       *
    Host        127.0.0.1
    Port        5080
    URI         /api/default/test4/_json
    tls         Off
    Format      json
#     Json_date_key    _timestamp
#     Json_date_format iso8601
    HTTP_User   admin@example.com
    HTTP_Passwd 2rlpVuHNxjDkceZd
    compress    gzip

# [OUTPUT]
#     Name        stdout
#     Match       *
#     Format      json_lines

还可以直接脚本过滤数据,或者添加字段
process_time.lua

function extract_time(tag, timestamp, record)
   return 1, timestamp, record
--     if record.time then
--         -- Parse the time string into a Unix timestamp
--         local year, month, day, hour, min, sec = record.time:match("(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)")
--         if year then
--             local time = os.time({year=year, month=month, day=day, hour=hour, min=min, sec=sec})
--             record.timestamp = os.date("!%Y-%m-%dT%H:%M:%SZ", time)
--         end
--     end
--     return 1, timestamp, record
end

启动命令:
fluent-bit -c config.conf

openobserve 启动更简单,直接设置一个启动或者登录直接可以启动了
例如我docker 启动

version: '3.8'

services:
  otel-collector:
    image: otel/opentelemetry-collector-contrib:0.109.0
    command: ["--config=/etc/otel-collector-config.yaml"]
    volumes:
      - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
    ports:
      - "4317:4317"   # OTLP gRPC receiver
      - "4318:4318"   # OTLP HTTP receiver

    depends_on:
      - openobserve

  openobserve:
    image: openobserve/openobserve:latest
    container_name: openobserve
    ports:
      - "5080:5080"  # OpenObserve Web UI
      - "9200:9200"  # OpenObserve Ingest API
      - "5081:5081"  # OpenObserve gRPC API
    environment:
      ZO_ROOT_USER_EMAIL: "admin@example.com"  # 设置 root 用户的电子邮件
      ZO_ROOT_USER_PASSWORD: "123456"    # 设置 root 用户的密码


parsers.conf 其他解析文件
https://github.com/fluent/fluent-bit/blob/master/conf/parsers.conf

具体其他文档
https://docs.fluentbit.io/manual/pipeline/inputs/collectd

https://blog.csdn.net/easylife206/article/details/141616347

https://github.com/open-telemetry/opentelemetry-collector

jaeger
https://github.com/jaegertracing/jaeger

https://github.com/jaegertracing/jaeger/tree/main/examples/hotrod

OpenTelemetry Collector 中文文档
https://opentelemetry.opendocs.io/docs/collector/deployment/agent/

openobserve 文档
https://openobserve.ai/docs/quickstart/

opentelemetry-go 案例文档
https://github.com/open-telemetry/opentelemetry-go/blob/main/example/otel-collector/otel-collector.yaml

官方文档
https://opentelemetry.io/zh/docs/collector/quick-start/

grpc 微服务文档
https://www.yuque.com/bobby-zpcyu/lp7nfv/ad544k


http://www.niftyadmin.cn/n/5665197.html

相关文章

[语言月赛 202408] 因友情而终结

[语言月赛 202408] 因友情而终结 题目背景 友情是什么? 风不知道。 但当友情让爱情出现猜忌 风选择因爱情而终结友情 题目描述 字符串 S S S 是一个仅由英文小写字母构成的串。现在,你可以对字符串 S S S 执行任意次如下操作: 选择 S S…

深入理解Spring中请求作用域的数据存储:ThreadLocal还是Spring容器?

深入理解Spring中请求作用域的数据存储:ThreadLocal还是Spring容器? 目录 深入理解Spring中请求作用域的数据存储:ThreadLocal还是Spring容器? 一、引言 二、ThreadLocal的作用与原理 三、Spring中的请求作用域 四、ThreadL…

软件编程随想

已经做了16年左右的软件开发,从最初的Delphi开发,到后来的Web开发(.net)再到Java Web(Spring MCV,SpringBoot)开发,以后Python,NodeJS等开发,做了这么多年,全部是以解决单…

Android状态栏StatusBar颜色修改

<!-- 文字及图标颜色&#xff1a;true为深色&#xff0c;false为浅色 --> <item name"android:windowLightStatusBar">true</item> <!-- 背景色 --> <item name"android:statusBarColor">?android:attr/colorPrimary</i…

解密.bixi、.baxia勒索病毒:如何安全恢复被加密数据

导言 在数字化时代&#xff0c;数据安全已成为个人和企业面临的重大挑战之一。随着网络攻击手段的不断演进&#xff0c;勒索病毒的出现尤为引人关注。其中&#xff0c;.bixi、.baxia勒索病毒是一种新型的恶意软件&#xff0c;它通过加密用户的重要文件&#xff0c;迫使受害者支…

QT 带箭头的控件QPolygon

由于对当前项目需要绘制一个箭头控件&#xff0c;所以使用了QPainter和QPolygon来进行绘制&#xff0c;原理就是计算填充&#xff0c;下面贴出代码和效果图 这里简单介绍下QPolygon QPolygon是继承自 QVector<QPoint>那么可以很简单的理解为&#xff0c;他就是一个点的…

Kafka性质小结

1、关于消息偏移量的确认 消息的确认包括自动确认和手动确认&#xff0c;通常采用手动确认的方式&#xff0c;配置项和代码块分别如下所示。这里需要注意的是&#xff0c;当消息1、2、3顺序到达&#xff0c;2偏移量确认失败&#xff0c;3偏移量确认成功时&#xff0c;2的偏移量…

SIP Servlets学习

1. SIP Servlets 基础 SIP Servlets 是一种扩展 Java Servlets 的 API&#xff0c;专门用于处理 SIP&#xff08;Session Initiation Protocol&#xff09;消息&#xff0c;用于实现语音和视频通信应用。SIP Servlets 在支持 SIP 的 Java Servlet 容器中运行&#xff08;如 JB…