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", # ]

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多