前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go监控方案(4) -- telegraf

go监控方案(4) -- telegraf

作者头像
solate
发布2019-07-22 16:22:16
2.7K0
发布2019-07-22 16:22:16
举报
文章被收录于专栏:solate 杂货铺solate 杂货铺

Telegraf 学习

telegraf 整个包非常大,在这个方案只用了statsd插件部分的修改,所以更具体的需要根据自己需要进行学习,如果只是使用本方案就可以略过。

开始

Telegraf是一个插件驱动的服务器代理,用于收集和报告指标,是TICK堆栈的第一部分。 Telegraf具有直接从其运行的系统中提取各种指标的插件,从第三方API提取指标,甚至通过statsd和Kafka消费者服务监听指标。 它还具有输出插件,可将指标发送到各种其他数据存储,服务和消息队列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。

下载

download

安装

mac 版本

  1. 安装
代码语言:javascript
复制
 brew update
 brew install telegraf
  1. 下次登录启动telegraf
代码语言:javascript
复制
ln -sfv /usr/local/opt/telegraf/*.plist ~/Library/LaunchAgents
  1. 加载 telegraf
代码语言:javascript
复制
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.telegraf.plist
  1. 如果不用launchctl, 只需要使用下面命令启动
代码语言:javascript
复制
telegraf -config /usr/local/etc/telegraf.conf
linux 配置文件位置
代码语言:javascript
复制
/etc/telegraf/telegraf.conf

启动

代码语言:javascript
复制
sudo service telegraf start

systemctl start telegraf
网络配置

Telegraf提供多个服务输入插件,可能需要自定义端口。

配置文件: /etc/telegraf/telegraf.conf

NTP

Telegraf使用主机的UTC本地时间为数据分配时间戳。 使用网络时间协议(NTP)同步主机之间的时间; 如果主机的时钟与NTP不同步,则数据的时间戳可能不准确。

config

使用默认输入和输出插件创建配置文件。

代码语言:javascript
复制
telegraf config > telegraf.conf

创建具有特定输入和输出的配置文件

代码语言:javascript
复制
telegraf --input-filter <pluginname>[:<pluginname>] --output-filter <outputname>[:<outputname>] config > telegraf.conf
例子

在启动Telegraf服务器之前,您需要编辑和/或创建一个初始配置,指定所需的输入(指标来自哪里)和输出(指标所在的位置)。

在这里,我们将生成一个配置文件,同时使用-input-filter标志指定所需的输入,并使用-output-filter标志指定所需的输出。

在下面的示例中,我们创建了一个名为telegraf.conf的配置文件,其中包含两个输入: 一个读取有关系统cpu使用情况(cpu)的指标,另一个读取有关系统内存使用情况(mem)的指标。 我们将InfluxDB指定为所需的输出。

代码语言:javascript
复制
telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf

入门

一旦Telegraf启动并运行,它将开始收集数据并将其写入所需的输出。

我们将在下面的InfluxDB中展示cpu和mem数据的样子。

influxdb 查看 measurements

代码语言:javascript
复制
> SHOW MEASUREMENTS
name: measurements
------------------
name
cpu
mem

查看 field keys

代码语言:javascript
复制
> SHOW FIELD KEYS
name: cpu
---------
fieldKey                fieldType
usage_guest             float
usage_guest_nice	    float
usage_idle		        float
usage_iowait		    float
usage_irq		        float
usage_nice		        float
usage_softirq		    float
usage_steal		        float
usage_system		    float
usage_user		        float

name: mem
---------
fieldKey                fieldType
active			        integer
available		        integer
available_percent	    float
buffered		        integer
cached			        integer
free			        integer
inactive		        integer
total			        integer
used			        integer
used_percent		    float

选择一个数据样本 field usage_idlecpu_usage_idle :

代码语言:javascript
复制
> SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' LIMIT 5
name: cpu
---------
time			               usage_idle
2016-01-16T00:03:00Z	 97.56189047261816
2016-01-16T00:03:10Z	 97.76305923519121
2016-01-16T00:03:20Z	 97.32533433320835
2016-01-16T00:03:30Z	 95.68857785553611
2016-01-16T00:03:40Z	 98.63715928982245

请注意,时间戳以十舍五入的间隔发生(即:00:10:20,依此类推) - 这是一个可配置的设置。

概念

指标 metrics

Telegraf指标是用于在处理期间对数据建模的内部表示。 这些指标非常基于InfluxDB的数据模型,包含四个主要组件:

Measurement name 度量名称:度量标准的描述和命名空间。 Tags 标签:键/值字符串对,通常用于标识度量标准。 Fields 字段:键入的键/值对,通常包含度量标准数据。 Timestamp 时间戳:与字段关联的日期和时间。

此度量标准类型仅存在于内存中,必须转换为具体表示才能传输或查看。

Telegraf为这些转换提供输出数据格式(也称为序列化器)。

Telegraf的默认串行器转换为InfluxDB线路协议,该协议提供Telegraf指标的高性能和一对一直接映射。

聚合器和处理器插件

代码语言:javascript
复制
┌───────────┐
│           │
│    CPU    │───┐
│           │   │
└───────────┘   │
                │
┌───────────┐   │                                              ┌───────────┐
│           │   │                                              │           │
│  Memory   │───┤                                          ┌──▶│ InfluxDB  │
│           │   │                                          │   │           │
└───────────┘   │    ┌─────────────┐     ┌─────────────┐   │   └───────────┘
                │    │             │     │Aggregate    │   │
┌───────────┐   │    │Process      │     │ - mean      │   │   ┌───────────┐
│           │   │    │ - transform │     │ - quantiles │   │   │           │
│   MySQL   │───┼──▶ │ - decorate  │────▶│ - min/max   │───┼──▶│   File    │
│           │   │    │ - filter    │     │ - count     │   │   │           │
└───────────┘   │    │             │     │             │   │   └───────────┘
                │    └─────────────┘     └─────────────┘   │
┌───────────┐   │                                          │   ┌───────────┐
│           │   │                                          │   │           │
│   SNMP    │───┤                                          └──▶│   Kafka   │
│           │   │                                              │           │
└───────────┘   │                                              └───────────┘
                │
┌───────────┐   │
│           │   │
│  Docker   │───┘
│           │
└───────────┘

处理器插件(Processor plugins)在通过时处理指标,并根据它们处理的值立即发出结果。例如,这可能是打印所有指标或向所有通过的指标添加标记。

聚合器(Aggregator plugins)通常用于发出新的聚合度量,例如运行平均值,最小值,最大值,分位数或标准偏差。 因此,所有聚合器插件都配置了句点。周期是每个聚合表示的度量窗口的大小。换句话说,发出的聚合度量将是过去时段秒的聚合值。 由于许多用户只关心他们的聚合而不是每个收集的度量标准,因此还有一个drop_original参数,它告诉Telegraf只发出聚合而不是原始指标。

注意:由于聚合器插件仅在其句点内聚合度量标准,因此不支持历史数据。换句话说,如果您的指标时间戳超过now() - period过去的时间段,则不会对其进行汇总。

术语表

agent

代理是Telegraf的核心部分,它从声明的输入插件收集指标,并根据给定配置启用的插件将指标发送到声明的输出插件。

aggregator plugin

Aggregator插件从输入插件接收原始指标并从中创建聚合指标。 然后将聚合度量传递给配置的输出插件。

batch size 批量大小

Telegraf代理会批量发送指标到输出插件,而不是单独发送。 批处理大小控制Telegraf发送到输出插件的每个写批处理的大小。

collection interval 收集间隔

从每个输入插件收集数据的默认全局间隔。 每个输入插件的配置都可以覆盖收集间隔。

collection jitter 收集抖动

集合抖动用于防止每个输入插件同时收集指标,这可能对系统产生可测量的影响。 每个收集间隔,每个输入插件将在收集指标之前在零和收集抖动之间休眠一段随机时间。

flush interval 刷新间隔

将数据从每个输出插件刷新到其目标的全局间隔。 不应将此值设置为低于收集间隔。

input plugin 输入插件

输入插件主动收集指标并将其交付给核心代理,其中聚合器,处理器和输出插件可以对指标进行操作。 要激活输入插件,需要在Telegraf的配置文件中启用和配置。

metric buffer 度量缓冲区

当写入输出插件失败时,度量缓冲区会缓存各个度量标准。 Telegraf将在成功写入输出后尝试刷新缓冲区。 当此缓冲区填满时,将首先删除最旧的度量标准。

output plugin 输出插件

输出插件将指标传递到其配置的目标。 要激活输出插件,需要在Telegraf的配置文件中启用和配置。

precision 精确

精度配置设置确定从输入插件接收的点中保留多少时间戳精度。 所有传入的时间戳都被截断为给定的精度。 然后,Telegraf用零填充截断的时间戳以创建纳秒时间戳; 输出插件将以纳秒为单位发出时间戳。 有效精度为ns,us或μs,ms和s。

例如,如果精度设置为ms,则纳秒时间戳1480000000123456789将以毫秒精度截断为1480000000123,然后用零填充以生成新的,不太精确的纳秒时间戳1480000000123000000.输出插件不会进一步改变时间戳。 服务的输入插件忽略精度设置。

processor plugin 处理器插件

处理器插件转换,修饰和/或过滤由输入插件收集的指标,将转换后的指标传递给输出插件。

service input plugin 服务输入插件

服务输入插件是在Telegraf代理运行时以被动收集模式运行的输入插件。 他们在套接字上侦听已知的协议输入,或者在将它们提供给Telegraf代理之前将其自己的逻辑应用于摄取的度量标准。

插件

输入插件

Telegraf输入插件与InfluxData时间序列平台一起使用,以从系统,服务或第三方API收集指标。 所有指标都是从您在配置文件中启用和配置的输入中收集的。

通过运行telegraf --usage <service-input-name>查看每个服务输入的使用说明。

支持的Telegraf输入插件Telegraf input plugins

输出插件

Telegraf允许用户在配置文件中指定多个输出接收器。

支持的Telegraf输出插件Telegraf output plugins

聚合器插件

BasicStats

插件ID: basicstats

所述BasicStats聚合器插件给出count,max,min,mean,s2(方差),和stdev用于一组值,发光聚合每个周期秒

Histogram 直方图

插件ID: histogram

所述直方图聚合器插件创建包含的范围内的字段值的计数的直方图。

添加到存储桶的值也会添加到分发中的较大存储桶中。这会创建累积直方图。

与其他Telegraf聚合器插件一样,度量标准每秒都会发出。但是,存储桶计数不会在不同时段之间重置,并且在Telegraf运行时将非严格增加。

MINMAX

插件ID: minmax

在极大极小聚合器插件聚集体min和max它看到每个字段的值,发射都汇集每个周期秒。

ValueCounter

插件ID: valuecounter

该ValueCounter聚合插件计算值的领域中发生并发出计数器一次“期间”秒。

ValueCounter聚合器插件的用例是当您使用Logparser输入插件处理HTTP访问日志并想要计算HTTP状态代码时。

必须使用fields配置指令配置要计数的字段。如果未提供任何字段,则插件不会计算任何字段。结果以字段形式发出,格式为originalfieldname_fieldvalue = count。

ValueCounter只能在类型的字段int,bool或string。正在删除浮动字段以防止创建太多字段。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Telegraf 学习
    • 开始
      • 下载
      • 安装
      • 入门
    • 概念
      • 指标 metrics
      • 聚合器和处理器插件
      • 术语表
    • 插件
      • 输入插件
      • 输出插件
      • 聚合器插件
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档