通过 Telegraf + InfluxDB + Grafana 快速搭建监控体系的详细步骤

作者: 东山絮柳仔

第一部分 Telegraf 部署和配置

Telegraf 是实现 数据采集 的工具。Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展。

在平台监控系统中,可以使用 Telegraf 采集多种组件的运行信息,而不需要自己手写脚本定时采集,大大降低数据获取的难度;且 Telegraf 配置极为简单,只要有基本的 Linux 基础即可快速上手。Telegraf 按照时间序列采集数据,数据结构中包含时序信息,借助 Influxdb 可以针采集得到的数据完成各种分析计算操作。 Step 1 下载RPM文件

wget https://dl.influxdata.com/telegraf/releases/telegraf-1.8.3-1.x86_64.rpm

   Step 2 yum 安装已下载的RPM文件

yum localinstall telegraf-1.8.3-1.x86_64.rpm

Step 3 启动服务

service telegraf start

补充说明: 1.数据的收集项的定义和收集后数据保存到什么地方都是通过conf文件决定。用户可修改Telegraf配置文件进行采集项的配置,配置文件默认位于/etc/telegraf/telegraf.conf。 2.Telegraf有四种类型的插件

|-----------------|---------------------------------------------------------------------------------------|
| 插件类型            | 功能描述                                                                                  |
| 输入插件(Inputs)    | 收集各种时间序列性指标,包含各种系统信息和应用信息的插件。                                                         |
| 处理插件(Process)   | 当收集到的指标数据流要进行一些简单处理时,比如给所有指标添加、删除、修改一个Tag。只是针对当前的指标数据进行。                              |
| 聚合插件(Aggregate) | 聚合插件有别于处理插件,就在于它要处理的对象是某段时间流经该插件的所有数据(所以,每个聚合插件都有一个设置,只会处理时间段内的数据),比如取最大值、最小值、平均值等操作。 |
| 输出插件(Outputs)   | 收集到的数据,经过处理和聚合后,输出到数据存储系统,可以是各种地方,如:文件、InfluxDB、各种消息队列服务等等。                           |

3.https://github.com/influxdata/telegraf 中 Input Plugins 部分 有对各个系统、应用、服务的监控项配置,们可以直接添加到既有的conf文件中。 Output Plugins部分是对收集数据存放地址的设置。 4.可以同时将数据保存到多种类型的数据库中。下面是将收集的数据保存到InfluxDB中的设置。

5.根据需要(服务器的角色/监控需要)重新生成 telegraf.conf 文件,例如,监控项为cpu,输出的数据为influxdb. (再次强调telegraf服务默认的配置文件在/etc/telegraf/下)

telegraf --input-filter cpu --output-filter influxdb config > telegraf.conf

6.telegraf收集mysql数据库的信息,需要 Select、SUPER、PROCESS ,否则提示以下错误。

2019-06-26T05:56:50Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
2019-06-26T05:57:00Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
2019-06-26T05:57:10Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
2019-06-26T05:57:20Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
2019-06-26T05:57:30Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
2019-06-26T05:57:40Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation

第二部分 InfluxDB的安装与部署

InfluxDB 是实现 数据存储 的工具。InfluxDB是一款优秀的时间序列数据库,适合存储设备性能、日志、物联网传感器等带有时间戳的数据,可以轻松处理高写入和高查询负载(数据采集与数据可视化非常常见的场景)。 InfluxDB有三大特性:

  • 时序性(Time Series):与时间相关的函数的灵活使用(例如最大、最小、求和等);
  • 度量(Metrics):对实时大量数据进行计算;
  • 事件(Event):支持任意的事件数据,换句话说,任意事件的数据们都可以做操作。

具体的安装过程如下: Step 1 下载InfluxDB的RPM文件

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6.x86_64.rpm

  Step 2 安装已下载的文件

yum localinstall influxdb-1.7.6.x86_64.rpm

   Step 3 启动服务

systemctl start influxdb    ----启动服务
systemctl status influxdb ----查看服务状态

   Step 4 登入验证

补充说明: 1.默认生成的influxdb.conf 位于 /etc/influxdb/influxdb.conf。 2.几个默认的数据文件路径需注意,或适当调整

|------|------------------------|-------------------------------------------------------------------------------------------------------|------------------------------|
| 数据文档 | 文档路径                   | 解释                                                                                                    | 说明                           |
| meta | /var/lib/influxdb/meta | Controls the parameters for the Raft consensus group that stores metadata about the InfluxDB cluster. | ``` 存放数据库元数据。 ```            |
| data | /var/lib/influxdb/data | The directory where the TSM storage engine stores TSM files.                                          | ``` 存放最终存储的数据,文件以.tsm结尾。 ``` |
| wal  | /var/lib/influxdb/wal  | The directory where the TSM storage engine stores WAL files.                                          | ``` 存放数据库元数据。 ```            |

3.常用的一些命令

|--------------------------------------------------------------|-------------------------|
| 命令                                                           | 实现功能                    |
| show databases                                               | 显示所有数据库                 |
| use XXXX                                                     | 转到某个数据库下面               |
| show measurements                                            | 显示当前库下的所有表              |
| select \* from "XXXXX"                                       | 查询指定表的数据;表名中间有点号时,表名双引号 |
| show users                                                   | 查看账号                    |
| SHOW TAG KEYS FROM "measurement_name"                        | 查看某measurement对应的Tag    |
| SHOW TAG VALUES FROM "measurement_name" WITH KEY = "tag_key" | 查看measurement Tag对应的值   |

创建账号的语法格式;

create user “username”/username with password ‘password’ with all privileges

注意;账号支持两种书写方式:英文双引号括起来、直接账号字符串,而密码则必须以英文单引号括起来

  1. measurement,tags,fields,points与普通的关系型数据库的对应:
    |-------------|-----------------------------------------------------------|
    | InfluxDB对象  | 关系型数据库对象                                                  |
    | measurement | table                                                     |
    | tags        | 可以建立索引的列;tag 是可选的,不过写入数据时最好加上 tag,因为它可以被索引。tag 的类型只能是字符串。 |
    | fields      | 列                                                         |
    | points      | 行数据                                                       |
    
    5.InfluxDB如果需要开启登入认证,请在/etc/influxdb/influxdb.conf 文件中的[http]部分,将以下两个参数设置为ttue.
    Determines whether HTTP endpoint is enabled.
    enabled = true
    ............................................
    Determines whether user authentication is enabled over HTTP/HTTPS.
    auth-enabled = true
    
    InfluxDB开启登录认证后,同时需要修改一下telegraf.conf文件,修改参数在[[outputs.influxdb]] 部分。

Grafana 部分也要注意,如果是先设置了Grafana,后设置了InfluxDB账号密码,这时候也去修改Grafana中的数据源,添加账号密码;否则web界面一直要求输入登录。 5.特色函数 influxdb函数分为聚合函数,选择函数,转换函数,预测函数等。除了与普通数据库一样提供了基本操作函数外,还提供了一些特色函数以方便数据统计计算。

|------|---------------------------|-------------------------------------------------------------------------------------------------------------|
| 函数类别 | 函数                        | 功能                                                                                                          |
| 聚合函数 | FILL()                    | 当没有数值时按照FILL函数填充                                                                                            |
| 聚合函数 | INTEGRAL(field_key, unit) | 计算数值字段值覆盖的曲面的面积值并得到面积之和。                                                                                    |
| 聚合函数 | SPREAD(field_key)         | 计算数值字段的最大值和最小值的差值。                                                                                          |
| 聚合函数 | STDDEV(field_key)         | 计算字段的标准差。                                                                                                   |
| 聚合函数 | MEAN()                    | mean(field_key)求该范围内数据的平均值(注意:这是依据series来计算。                                                                |
| 聚合函数 | MEDIAN()                  | MEDIAN求中位数                                                                                                  |
| 选择函数 | SAMPLE(field_key, N)      | 随机返回field key的N个值。如果语句中有`GROUP BY time()`,则每组数据随机返回N个值。                                                     |
| 选择函数 | PERCENTILE(field_key, N)  | 选取某个字段中大于N%的这个字段值。                                                                                          |
| 选择函数 | FIRST()                   | 返回一个字段中最老的取值。                                                                                               |
| 选择函数 | LAST()                    | 返回一个字段中最新的取值。                                                                                               |
| 选择函数 | TOP()                     | 返回一个字段中最大的N个值,字段类型必须是长整型或float64类型。                                                                         |
| 选择函数 | BOTTOM()                  | 返回一个字段中最小的N个值。字段类型必须是长整型或float64类型。                                                                         |
| 选择函数 | MAX()                     | 返回一个字段中的最大值。该字段类型必须是长整型,float64,或布尔类型。                                                                      |
| 选择函数 | MIN()                     | 返回一个字段中的最小值。该字段类型必须是长整型,float64,或布尔类型。                                                                      |
| 转换函数 | DERIVATIVE()              | 返回一个字段在一个series中的变化率.nfluxDB会计算按照时间进行排序的字段值之间的差异,并将这些结果转化为单位变化率。其中,单位可以指定,默认为1s。                            |
| 转换函数 | DIFFERENCE()              | 返回一个字段中连续的时间值之间的[差异](https://www.linuxdaxue.com/tag/%e5%b7%ae%e5%bc%82/ "查看与 差异 相关的文章")。字段类型必须是长整型或float64。 |
| 预测函数 | HOLT_WINTERS()            | 在许多重要的领域,需要基于时间序列进行预测,此为霍尔特-温特斯法。                                                                           |

第三部分 Grafana的安装与部署

Grafana 是实现 数据展示(数据可视化) 的工具。 Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。

它主要有以下六大特点: 1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式; 2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等; 3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知; 4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源; 5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记; 6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。 Step 1 下载RPM安装包

wget https://dl.grafana.com/oss/release/grafana-6.2.4-1.x86_64.rpm 

   Step 2 安装

yum localinstall grafana-6.2.4-1.x86_64.rpm 

  Step 3 服务开启

systemctl start grafana-server.service    ----开启服务
systemctl status grafana-server.service  ----服务状态查看

Step 4 验证

安装后,默认端口为 3000。  可通过浏览器直接登入访问 :http://172.XXX.XXX.XXX:3000 Step 5 Grafana 关于 收集到的数据监控显示

(1) 设置数据源,

注意,数据源类型需选择InfluxDB

(2) 可以设置一个Folder,将同类的dashboards 放到一起

(3)设置新的监控项

Format AS 栏位,请选择【Time Series】,不可以选择【Table】

总结:提前预防和判断并保证风险可控,俗称"防火”。防火更能看出本事,而"救火"只是能力。

原文创作:东山絮柳仔

原文链接:https://www.cnblogs.com/xuliuzai/p/11059769.html

文章列表

更多推荐

更多
  • 精通Ansible中文-十三、网络自动化 技术要求,可用于网络管理,处理多种设备类型,使用命令行界面命令模块,用 Ansible 配置 Arista EOS 开关,用 Ansible 配置积云网络交换机,最佳实践,问题,跨平台支持,配置 Ansible 性,备份、恢复和版本控制
    Apache CN

  • 精通Ansible中文-第一部分:Ansible 的概述和基础 在本节中,我们将探讨 Ansible 的工作原理,并为开发行动手册和工作流奠定坚实的基础。如果您熟悉旧的 Ansible 2.x 版本,我们还将检查并解释您将发现的变化。本节包括以下章节: [第一章](01.h
    Apache CN

  • 精通Ansible中文-第二部分:编写和故障排除 Ansible 行动手册 在本节中,您将深入了解如何编写健壮、通用的行动手册,适合在各种使用情形和环境中使用。本节包括以下章节: [第六章](06.html_idTextAnchor123)开启 Jinja 模板的力量[
    Apache CN

  • 精通Ansible中文-第三部分:使用 Ansible 的编排 在本节中,我们将了解 Ansible 在现实世界中协调和管理系统和服务的用法,无论是在内部还是在云中。本节包括以下章节: [第 11 章](11.html_idTextAnchor210)通过滚动部署最大
    Apache CN

  • 精通Ansible中文-十二、基础设施供应 技术要求,管理内部云基础架构,管理公共云基础架构,与 Docker 容器交互,用易拉罐建造集装箱,问题,创建服务器,使用 OpenStack 库存来源,构建映像,构建没有 Dockerfile 的容器,码头工人库存,启动虚拟服务器,添加
    Apache CN

  • 精通Ansible中文-九、故障排除 技术要求,行动手册记录和详细程度,可变内省,调试代码执行,问题,冗长,测井,可变子元素,剧本调试,调试本地代码,subelemonts 与 python 对象方法,调试库存代码,调试剧本代码,调试执行器代码,调试远程代码,调试操作插件,
    Apache CN

  • 精通Ansible中文-十、扩展 Ansible 技术要求,开发模块,开发插件,开发动态库存插件,为可实施的项目做出贡献,问题,基本模块构造,定制模块,示例–简单模块,连接型插件,外壳插件,查找插件,其插件,事实缓存插件,过滤插件,回调插件,动作插件,分发插件,列出主机,列出主机变量,
    Apache CN

  • 精通Ansible中文-十一、通过滚动部署最大限度地减少停机时间 技术要求,就地升级,扩张和收缩,快速失败,最大限度地减少中断,序列化单个任务,问题,任何 _ 错误 _ 致命选项,最大失败百分比选项,强制处理程序,延迟中断,只运行一次破坏性任务, Ansible 非常适合在实时服务环境中升级或部
    Apache CN

  • 精通Ansible中文-七、控制任务条件 技术要求,定义失败,定义变更,错误恢复,循环迭代任务,问题,忽略错误,定义错误条件,命令族的特殊处理,抑制变化,使用救援段,使用始终部分,处理不可靠的环境, Ansible 是一个系统,用于在一台或多台主机上运行任务,并确保操作员
    Apache CN

  • 精通Ansible中文-八、使用角色组合可重用的 Ansible 内容 技术要求,任务、处理程序、变量和剧本包含概念,角色(结构、默认值和依赖关系),问题,包括任务,带有循环的任务包含,包括经手人,包括变量,包括剧本,角色结构,角色依赖关系,角色应用,角色分享,将变量值传递给包含的任务,将复杂数据传递给包含
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多