云原生链路观测平台 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.dsudo find / -name fluent-bit
/opt/fluent-bit/bin/fluent-bit -v
openobserve 和 fluent-bit 都是二进制文件启动很简单,fluent-bit 负责传输,目前给出fluent-bit 配置
配置文件
# fluent-bit -c config_pro.conf@SET MY_DIR=/home/ec2-user/data/docker/services/api/logs
@SET MY_APP=news_api
@SET MY_DIR1=/home/ec2-user/data/docker/services/yst/logs
@SET MY_APP1=news_yst
@SET MY_DIR2=/home/ec2-user/data/docker/services/task/logs
@SET MY_APP2=news_task[SERVICE]Flush 1Daemon OffLog_Level infoParsers_File parsers.conf
[INPUT]Name tailPath /Users/admin/go/src/goBoss/my_colly/my_github/zlog/logs/*.logTag logsParser json_parserDB ./flb_logs.dbMem_Buf_Limit 5MBSkip_Long_Lines OnRotate_Wait 10Path_Key filenameExclude_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 httpMatch *Host 127.0.0.1Port 5080URI /api/default/test4/_jsontls OffFormat json
# Json_date_key _timestamp
# Json_date_format iso8601HTTP_User admin@example.comHTTP_Passwd 2rlpVuHNxjDkceZdcompress 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
systemd 启动
[Unit]
Description=Fluent Bit
After=network.target[Service]
Type=simple
WorkingDirectory=/data/fluent_bit
#Environment="MY_DIR=/data/widgets/logs"
#Environment="MY_APP=widgets_app"
ExecStart=/opt/fluent-bit/bin/fluent-bit -c /data/fluent_bit/config_pro.conf
Restart=on-failure
ExecReload=/bin/kill -HUP $MAINPID[Install]
WantedBy=multi-user.target
openobserve 启动更简单,直接设置一个启动或者登录直接可以启动了
例如我docker 启动
version: '3.8'services:otel-collector:image: otel/opentelemetry-collector-contrib:0.109.0command: ["--config=/etc/otel-collector-config.yaml"]volumes:- ./otel-collector-config.yaml:/etc/otel-collector-config.yamlports:- "4317:4317" # OTLP gRPC receiver- "4318:4318" # OTLP HTTP receiverdepends_on:- openobserveopenobserve:image: openobserve/openobserve:latestcontainer_name: openobserveports:- "5080:5080" # OpenObserve Web UI- "9200:9200" # OpenObserve Ingest API- "5081:5081" # OpenObserve gRPC APIenvironment: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
相关文章:
云原生链路观测平台 openobserve + fluent-bit,日志收集
grpc-opentracing https://github.com/grpc-ecosystem/grpc-opentracing openobserve fluent-bit 为啥会选择这个组合 一个 rust 写的一个是c写的,性能和内存方面不用担心,比java 那套好太多了 openobserve 文档 :https://openobserve.ai/…...
Android 车载应用开发指南 - CarService 详解(下)
车载应用正在改变人们的出行体验。从导航到娱乐、从安全到信息服务,车载应用的开发已成为汽车智能化发展的重要组成部分。而对于开发者来说,如何将自己的应用程序无缝集成到车载系统中,利用汽车的硬件和服务能力,是一个极具挑战性…...
【Linux网络 —— 网络基础概念】
Linux网络 —— 网络基础概念 计算机网络背景网络发展 初始协议协议分层协议分层的好处 OSI七层模型TCP/IP五层(或四层)模型 再识协议为什么要有TCP/IP协议?什么是TCP/IP协议?TCP/IP协议与操作系统的关系所以究竟什么是协议? 网络传输基本流程…...
el-form动态标题和输入值,并且最后一个输入框不校验
需求:给了固定的label,叫xx单位,要输入单位的信息,但是属性名称都一样的,UI画图也是表单的形式,所以改为动态添加的形式,实现方式也很简单,循环就完事了,连着表单校验也动…...
一,初始 MyBatis-Plus
一,初始 MyBatis-Plus 文章目录 一,初始 MyBatis-Plus1. MyBatis-Plus 的概述2. 入门配置第一个 MyBatis-Plus 案例3. 补充说明:3.1 通用 Mapper 接口介绍3.1.1 Mapper 接口的 “增删改查”3.1.1.1 查询所有记录3.1.1.2 插入一条数据3.1.1.3 …...
安卓13删除下拉栏中的关机按钮版本2 android13删除下拉栏关机按钮
总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 顶部导航栏下拉可以看到,底部这里有个设置按钮,点击可以进入设备的设置页面,这里我们将更改为删除,不同用户通过这个地方进入设置。我们之前写过一个文章也是一样的删除…...
快递物流单号识别API接口代码
官网:快递鸟 API参数 一、接口描述/说明 (1)该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。 (2)接口并不返回物流轨迹,用户可结合即时查询接口和订阅查询接口完成轨迹查询、订…...
AI时代的程序员:如何保持和提升核心竞争力
1.引言 随着AIGC(如 ChatGPT、Midjourney、Claude 等)大语言模型的快速崛起,AI辅助编程工具逐渐成为程序员工作的重要组成部分。这一转变不仅改变了工作方式,更深刻影响了程序员的职业角色和技术路径。有人担心,AI将取…...
Oracle 数据库常用命令与操作指南
Oracle 数据库是企业级系统中常用的数据库管理系统,掌握基础的命令可以让你在日常管理中更加高效。本指南将介绍几条常用的 Oracle 数据库命令,涵盖用户权限管理、修改用户密码、删除用户、以及其他日常操作。 目录 授权用户操作权限使用最高权限登录 O…...
spring boot项目对接人大金仓
先确认一下依赖 第一 是否引入了mybatis-plus多数据源,如果引入了请将版本保持在3.5.0以上 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynam…...
《操作系统 - 清华大学》1 -2:操作系统概述 —— 什么是操作系统
文章目录 1. 操作系统定义2. 操作系统的位置3. 操作系统软件的分类4. 操作系统软件的组成5. 操作系统内核特征 现在来继续讲什么是操作系统,操作系统什么样的?它是一个程序,它和其他程序是什么样的关系?然后它有些什么样的组成&am…...
power bi制作各季度收入累加柱状图——日期表、calculate、datesytd
一、数据介绍: 2017-2019年订单销售收入数据(订单日期,销售收入) 二、效果展示: 三、操作步骤: 1、建立日期表 (1)建立原因 本次度量值编写需要运用到datesytd这一时间智能函数…...
OceanBase 3.X 高可用 (一)
OceanBase 3.X 高可用(一) 一、分布式核心 OceanBase 3.x 采用的是paxos 协议,与raft协议相比。其复杂程度高,实现技术难度大。 Paxos 协议允许事务日志乱序发送,顺序提交。raft允许事务顺序发送,顺序提…...
CSR、SSR、SSG
客户端渲染(Client-Side Rendering, CSR)在SEO方面存在一些不利因素,主要原因包括: 初始加载内容的缺乏:CSR依赖于JavaScript来动态生成页面内容。当搜索引擎爬虫访问一个使用CSR技术构建的网站时,它们最初…...
linux -L16-linux 查看应用占用的资源top
linux 查看应用占用的资源top Targetsteps启动 top 命令排序进程:查看特定进程:过滤进程其他常用选项交互式帮助 Target linux 查看应用占用的资源top steps 在 Linux 系统中,top 命令是一个非常有用的工具,它提供了一个实时更…...
QT——多线程操作
一、单线程和多线程的区别 单线程指的是程序在执行时只有一个流程,也就是一次只能执行一个任务。当程序中某个任务需要花费大量时间时,单线程会导致整个程序阻塞,用户体验会变差。 多线程则是指程序在执行时可以同时执行多个任务,每个任务都是一个独立的线程。多线程可以…...
理解C语言之深入理解指针(三)
目录 1. 字符指针变量 2. 数组指针变量 2.1 数组指针变量是什么? 2.2 数组指针变量怎么初始化 3. ⼆维数组传参的本质 4. 函数指针变量 4.1 函数指针变量的创建 4.2 函数指针变量的使⽤ 4.3 两段有趣的代码 4.3.1 typedef 关键字 5. 函数指针数组 6. 转移…...
「芯片知识」MP3解码ic方案,音乐芯片在数字音频中的作用
MP3解码芯片是一种由内部晶振器组成的简单语音电路,将这种独特的MP3音乐芯片与其他零件进行接驳,便能够形成一个完整的语音集成电路。而深受顾客欢迎的MP3音乐芯片现如今已经广泛的使用在电子玩具和家用电器等众多的场合之中,它在数字音频中扮…...
MyBatis与 Springboot 的集成
MyBatis 是一个优秀的持久层框架,专注于 SQL 语句的灵活控制,与 Spring Boot 集成可以简化数据库操作,提升开发效率。Spring Boot 提供了与 MyBatis 无缝集成的支持,使得 MyBatis 可以轻松与 Spring Boot 应用结合使用。 一、MyB…...
迁移学习和外推关系
**迁移学习(Transfer Learning)和外推(Extrapolation)**都是机器学习中处理新数据的一种方式,但它们的定义、应用场景和挑战有所不同。让我们来对比两者并探讨它们的关系。 定义 迁移学习(Transfer Learni…...
【Python原生AOT编译2026权威指南】:基于CPython 3.15+的零依赖二进制生成实战(含性能提升237%实测数据)
第一章:Python原生AOT编译的演进脉络与2026技术定位Python长期以来以解释执行和字节码(.pyc)为核心运行范式,其动态特性虽赋予开发极大灵活性,却在启动延迟、内存占用与部署包体积方面持续面临挑战。原生AOT࿰…...
SmolVLA效果展示:三视角图像对齐误差对最终动作精度影响分析
SmolVLA效果展示:三视角图像对齐误差对最终动作精度影响分析 1. 项目概述 SmolVLA是一个专门为经济实惠的机器人技术设计的紧凑高效视觉-语言-动作模型。这个模型最大的特点是能够在有限的硬件资源下实现高质量的机器人控制,让更多开发者和研究者能够接…...
手把手教你用FastBlur打造高级感UI:从对话框背景到沉浸式音乐播放器的完整实现
用FastBlur打造高级UI的实战指南:从对话框到音乐播放器的设计进化 毛玻璃效果早已从iOS的视觉语言演变为现代移动应用设计的通用元素。这种半透明模糊效果不仅能提升界面层次感,还能在不分散用户注意力的情况下创造视觉焦点。本文将带你深入Android平台实…...
【STM32HAL库实战】DAC精准输出0-3.3V可调电压与ADC自检闭环
1. DAC与ADC的基础原理 在嵌入式系统中,数字信号和模拟信号的相互转换是常见需求。STM32微控制器内置了DAC(数字模拟转换器)和ADC(模拟数字转换器)模块,让我们能够轻松实现这种转换。 DAC的作用是将数字量转…...
OpenClaw技能扩展:基于nanobot开发自定义自动化模块
OpenClaw技能扩展:基于nanobot开发自定义自动化模块 1. 为什么选择nanobot作为技能开发基础 当我第一次尝试为OpenClaw开发自定义技能时,面对庞大的框架和复杂的依赖关系感到无从下手。直到发现nanobot这个轻量级解决方案,才真正找到了适合…...
SmallThinker-3B-Preview惊艳表现:复杂逻辑推理任务准确率提升实测报告
SmallThinker-3B-Preview惊艳表现:复杂逻辑推理任务准确率提升实测报告 最近,一个名为SmallThinker-3B-Preview的小模型在技术社区里悄悄火了起来。你可能要问,现在动辄几百亿参数的大模型满天飞,一个只有30亿参数的“小家伙”有…...
孟德尔随机化实战(五)—— 告别报错!Error in if (out == “[]“) 深度解析与TwoSampleMR参数调优全攻略
1. 报错现象深度解析:为什么会出现"参数长度为零"? 最近在孟德尔随机化分析交流群里,这个报错出现的频率简直高得离谱:"Error in if (out "[]") { : argument is of length zero"或者它的中文版&q…...
【Python内存管理终极指南】:20年专家亲授智能体内存优化的5大架构设计图与3个致命误区
第一章:Python智能体内存管理的核心原理与演进脉络 Python的内存管理并非由开发者手动控制,而是由解释器内置的“智能体”协同完成——它融合了引用计数、循环垃圾回收(GC)和内存池机制三重策略,在运行时动态权衡效率与…...
Pixel Dream Workshop 作品集:基于LSTM时序模型生成的动态艺术画展示
Pixel Dream Workshop 作品集:基于LSTM时序模型生成的动态艺术画展示 1. 当AI遇见艺术:LSTM如何创造动态视觉叙事 在数字艺术创作领域,时序模型正带来一场革命性的变化。Pixel Dream Workshop最新推出的动态艺术画系列,展示了长…...
Neeshck-Z-lmage_LYX_v2实际作品:基于LoRA微调的专属IP形象批量生成
Neeshck-Z-lmage_LYX_v2实际作品:基于LoRA微调的专属IP形象批量生成 1. 引言:从零到一,打造你的专属数字形象 想象一下,你需要为你的品牌、游戏或者社交媒体账号设计一套统一的视觉形象。传统的做法是找设计师,沟通需…...
