carbon-clickhouse

carbon-clickhouse

为Graphite指标提供ClickHouse存储的高性能接收器

carbon-clickhouse是一个开源的时间序列数据处理工具,专为将Graphite指标高效存储到ClickHouse数据库而设计。它支持UDP、TCP、Pickle和gRPC等多种数据接收协议,提供灵活的配置选项以自定义数据处理和上传。该项目集成了内部指标监控、日志记录和性能分析功能,适合需要高性能、可扩展时间序列数据存储的应用场景。

carbon-clickhouseClickHouseGraphite指标存储数据上传Github开源项目

deb rpm

carbon-clickhouse

使用ClickHouse作为存储的Graphite指标接收器

生产状态

最新版本稳定,可用于生产环境

概述

预配置的docker-compose

Docker

Docker镜像可在packages页面获取。

构建

需要golang 1.18+

# 构建二进制文件 git clone https://github.com/lomik/carbon-clickhouse.git cd carbon-clickhouse make

ClickHouse配置

  1. 在config.xml中添加graphite_rollup部分。示例在这里。你可以使用carbon-schema-to-clickhouse从graphite的storage-schemas.conf生成rollup xml。

  2. 创建表。

CREATE TABLE graphite ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32 ) ENGINE = GraphiteMergeTree('graphite_rollup') PARTITION BY toYYYYMM(Date) ORDER BY (Path, Time); -- 可选表,用于更快的指标搜索 CREATE TABLE graphite_index ( Date Date, Level UInt32, Path String, Version UInt32 ) ENGINE = ReplacingMergeTree(Version) PARTITION BY toYYYYMM(Date) ORDER BY (Level, Path, Date); -- 可选表,用于存储Graphite标签 CREATE TABLE graphite_tagged ( Date Date, Tag1 String, Path String, Tags Array(String), Version UInt32 ) ENGINE = ReplacingMergeTree(Version) PARTITION BY toYYYYMM(Date) ORDER BY (Tag1, Path, Date);

GraphiteMergeTree文档

你可以创建复制表。参见ClickHouse文档

配置

$ carbon-clickhouse -help
carbon-clickhouse的用法:
  -check-config=false: 检查配置并退出
  -config="": 配置文件名
  -config-print-default=false: 打印默认配置
  -version=false: 打印版本

默认情况下日期是不正确的(不总是UTC),但这从项目开始就使用,可能会产生一些bug。 更改为UTC需要重建points/index/tags表(将Date重新计算为真正的UTC)或使用宽日期范围的查询。 设置data.utc-date = true来启用此功能。 如果不使用UTC日期,则需要在同一时区运行carbon-clickhouse和graphite-clickhouse。

[common] # 存储所有内部carbon-clickhouse图表的前缀。支持的宏:{host} metric-prefix = "carbon.agents.{host}" # 存储内部carbon指标的端点。有效值:"" 或 "local"、"tcp://host:port"、"udp://host:port" metric-endpoint = "local" # 存储内部指标的间隔。类似CARBON_METRIC_INTERVAL metric-interval = "1m0s" # GOMAXPROCS max-cpu = 1 [logging] # "stderr"、"stdout"可以用作文件名 file = "/var/log/carbon-clickhouse/carbon-clickhouse.log" # 日志错误级别。有效值:"debug"、"info"、"warn"、"error" level = "info" [data] # 缓冲接收数据的文件夹 path = "/data/carbon-clickhouse/" # 根据大小和间隔轮换(并上传)文件 # 轮换(并上传)文件大小(以字节为单位,也可以使用k、m和g单位) # chunk-max-size = '512m' chunk-max-size = 0 # 轮换(并上传)文件间隔 # 最小化chunk-interval以减少接收点和存储之间的延迟 chunk-interval = "1s" # 如果未处理的文件数量增加,则自动增加chunk间隔 # 示例,当未处理文件数量 >= 5时将chunk间隔设置为10秒,当未处理文件数量 >= 20时设置为60秒: # chunk-auto-interval = "5:10s,20:60s" chunk-auto-interval = "" # 存储临时文件时使用的压缩算法。 # 当Clickhouse长时间不可用时,可能有助于减少空间使用。 # 当前支持:none、lz4 compression = "none" # 使用的压缩级别。 # 对于"lz4",0表示使用普通LZ4,>=1使用LZ4HC,深度为此值(越高压缩效果越好,但速度越慢) compression-level = 0 # 默认情况下日期是不正确的(不总是UTC) #utc-date = false [upload.graphite] type = "points" table = "graphite" threads = 1 url = "http://localhost:8123/" # compress-data启用发送到clickhouse时的gzip压缩 compress-data = true timeout = "1m0s" # 将零值保存到Timestamp列(适用于point和posts-reverse表) zero-timestamp = false [upload.graphite_index] type = "index" table = "graphite_index" threads = 1 url = "http://localhost:8123/" timeout = "1m0s" cache-ttl = "12h0m0s" # 在内存中存储指标的哈希值而不是完整的指标名称 # 允许的值:"", "city64"(空值 - 禁用) hash = "" # 如果应禁用每日索引,默认为`false` disable-daily-index = false # # 你可以定义任何支持类型的其他上传目的地: # # - points # # - index # # - tagged(如下所述) # # - points-reverse(与points相同的方案,但路径'a1.b2.c3'存储为'c3.b2.a1') # # 对于类型为"points"和"points-reverse"的上传器,可以使用模式忽略数据。例如 # [upload.graphite] # type = "graphite" # table = "graphite.points" # threads = 1 # url = "http://localhost:8123/" # timeout = "30s" # ignored-patterns = [ # "a1.b2.*.c3", # ] # # 可用作标记系列索引的额外表格 # # 还有机会避免为某些指标编写标记。 # # 以下是示例,忽略标记的指标。 # [upload.graphite_tagged] # type = "tagged" # table = "graphite_tagged" # threads = 1 # url = "http://localhost:8123/" # timeout = "1m0s" # cache-ttl = "12h0m0s" # ignored-tagged-metrics = [ # "a.b.c.d", # 对于形如a.b.c.d?tagName1=tagValue1&tagName2=tagValue2...的指标,所有标记(除__name__外)将被忽略 # "*", # 对所有指标,所有标记(除__name__外)将被忽略;这是唯一使用通配符的特殊情况 # ] # # 可以使用OpenSSL证书(mTLS)连接到ClickHouse,如下所示: # [upload.graphite] # type = "points" # table = "graphite" # threads = 1 # compress-data = true # zero-timestamp = false # timeout = "1m0s" # url = "https://localhost:8443/" # url使用https # [upload.graphite.tls] # ca-cert = [ "<path/to/rootCA.crt>", "<path/to/other/rootCA.crt>" ] # server-name = "<server-name>" # insecure-skip-verify = false # 如果为true,将不验证服务器证书 # [[upload.graphite.tls.certificates]] # key = "<path/to/client.key>" # cert = "<path/to/client.crt>" [udp] listen = ":2003" enabled = true # 如果时间戳 > 现在 + 值,则丢弃接收的点。0 - 不丢弃任何内容 drop-future = "0s" # 如果时间戳 < 现在 - 值,则丢弃接收的点。0 - 不丢弃任何内容 drop-past = "0s" # 丢弃名称长度超过此值的指标。0 - 不丢弃任何内容 drop-longer-than = 0 [tcp] listen = ":2003" enabled = true drop-future = "0s" drop-past = "0s" drop-longer-than = 0 [pickle] listen = ":2004" enabled = true drop-future = "0s" drop-past = "0s" drop-longer-than = 0 # https://github.com/lomik/carbon-clickhouse/blob/master/grpc/carbon.proto [grpc] listen = ":2005" enabled = false drop-future = "0s" drop-past = "0s" drop-longer-than = 0 [prometheus] listen = ":2006" enabled = false drop-future = "0s" drop-past = "0s" drop-longer-than = 0 [telegraf_http_json] listen = ":2007" enabled = false drop-future = "0s" drop-past = "0s" drop-longer-than = 0 # 用于连接telegraf指标和字段的字符(默认为"_",出于历史原因和Prometheus兼容性) concat = "." # Golang pprof + 一些额外位置 # # 最后1000个被"drop-future"、"drop-past"和"drop-longer-than"规则丢弃的点: # /debug/receive/tcp/dropped/ # /debug/receive/udp/dropped/ # /debug/receive/pickle/dropped/ # /debug/receive/grpc/dropped/ # /debug/receive/prometheus/dropped/ # /debug/receive/telegraf_http_json/dropped/ [pprof] listen = "localhost:7007" enabled = false # 你可以像在InfluxDB中一样使用标记匹配。格式完全相同。 # 它将解析所有尚未有标记的指标。 # 更多信息请参见 https://docs.influxdata.com/influxdb/v1.7/supported_protocols/graphite/ # 示例: # [convert_to_tagged] # enabled = true # separator = "_" # tags = ["region=us-east", "zone=1c"] # templates = [ # "generated.* .measurement.cpu metric=idle", # "* host.measurement* template_match=none", # ]

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI助手AI工具AI写作工具AI辅助写作蛙蛙写作学术助手办公助手营销助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多