云原生链路观测平台 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…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...