专栏首页Devops专栏Telegraf+InfluxDB+Grafana 搭建服务器监控平台

Telegraf+InfluxDB+Grafana 搭建服务器监控平台

需求

近期需要搭建一套服务器性能数据监控平台,所以本次考虑基于Telegraf作为采集数据源的工具,集成使用influxdb存储数据,最后Grafana展示图表的方式,来建立这个监控平台。

监控平台拓扑

安装influxdb

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6.x86_64.rpm
sudo yum localinstall influxdb-1.7.6.x86_64.rpm -y
service influxdb start
service influxdb status

安装Grafana

wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
sudo yum localinstall grafana-5.4.2-1.x86_64.rpm -y
service grafana-server start
service grafana-server status

我前面写过关于安装influxdb、grafana的文章,如果不清楚可以访问上面的两个篇章。下面主要就是讲解Telegraf的安装以及配置。

安装Telegraf

参考文献

Telegraf 1.9文档

介绍

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

主要特点

以下是Telegraf目前支持的一些功能,使其成为指标收集的绝佳选择。

  • 使用GO语言编写,编译成单个二进制文件,没有外部依赖项。
  • 极小的内存占用
  • 插件系统允许轻松添加新的输入和输出。
  • 众所周知的服务和API存在于许多流行服务的插件中。

安装介绍

Telegraf支持很多系统进行安装,本篇章主要介绍以centos7系统进行部署安装。

主要使用yum的安装方式,简单便捷。

配置yum源

要使用yum安装,首先根据官网文档的介绍,配置一下yum源先吧,配置如下:

[root@server02 yum.repos.d]# pwd
/etc/yum.repos.d
[root@server02 yum.repos.d]# 
[root@server02 yum.repos.d]# cat influxdb.repo 
[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
[root@server02 yum.repos.d]# 

配置完了yum源之后,执行一下yum makecache更新一下yum的缓存。

好了,下一步就开始使用yum来安装看看。

执行使用yum进行安装以及启动服务

sudo yum install -y telegraf sudo service telegraf start

其实使用yum源下来rpm的网速,我个人感觉不是很快,下载一个69M的rpm文件要五六分钟。 个人习惯将其rpm提前下载,然后在本地安装,如下:

# 下载rpm安装包
yum install telegraf -y --downloadonly --downloaddir=/opt

# 进入下载的目录进行安装
cd /opt/

# 根据下载好的rpm包进行本地化yum安装
yum localinstall telegraf-1.12.5-1.x86_64.rpm -y

启动服务 systemctl start telegraf

[root@server02 opt]# systemctl start telegraf
[root@server02 opt]# systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
   Loaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-11-18 14:09:26 CST; 5s ago
     Docs: https://github.com/influxdata/telegraf
 Main PID: 10963 (telegraf)
   CGroup: /system.slice/telegraf.service
           └─10963 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Nov 18 14:09:26 server02 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
Nov 18 14:09:26 server02 systemd[1]: Starting The plugin-driven server agent for reporting metrics into InfluxDB...
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Starting Telegraf 1.12.5
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded inputs: mem processes swap system cpu disk diskio kernel
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded aggregators:
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded processors:
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded outputs: influxdb
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Tags enabled: host=server02
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"server02", Flush Interval:10s
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z W! [outputs.influxdb] when writing to [http://localhost:8086]: database "" creation failed: Post ...ion refused
Hint: Some lines were ellipsized, use -l to show in full.
[root@server02 opt]# 

从status打印出来的信息: /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d 知道配置文件的路径 /etc/telegraf/telegraf.conf

那么下面来继续看看如何将telegraf采集的度量数据写入influxDB中。

查看telegraf的默认配置下,influxdb当前的写入数据

# 使用curl的方式查询influxdb的数据库
[root@server02 ~]# curl -G http://localhost:8086/query --data-urlencode "q=show databases"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["telegraf"],["_internal"]]}]}]}
[root@server02 ~]# 

# 登陆influxdb的客户端
[root@server02 ~]# influx
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
# 查询所有数据库
> show databases;
name: databases
name
----
telegraf
_internal
> 
# 使用telegraf数据库
> use telegraf;
Using database telegraf
> 

# 查看telegraf数据库的表
> show measurements;
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
> 

# 查看表字段
> 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: disk
fieldKey     fieldType
--------     ---------
free         integer
inodes_free  integer
inodes_total integer
inodes_used  integer
total        integer
used         integer
used_percent float

# 查询cpu的使用空闲率
> SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' LIMIT 5
name: cpu
time                usage_idle
----                ----------
1574057380000000000 79.518072288706
1574057390000000000 98.49548645574282
1574057400000000000 98.69608826588123
1574057410000000000 97.8957915834375
1574057420000000000 98.50000000558794

可以从上面查看influxdb的数据得知,如果influxdb没有设置特殊的账号认证等信息,telegraf默认就可以直接将数据写入本地的influxdb中。

但是如果influxdb不是安装在本地,或者修改了端口号等配置,telegraf该怎么配置呢?

设置配置文件指定influxdb

Telegraf的配置文件在Centos7存储路径:

Linux debian and RPM packages: /etc/telegraf/telegraf.conf

修改配置文件可以直接修改默认已有的配置文件,也可以直接自己创建一个配置文件,如下:

telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf

本次示例只配置influxdb url、database名称,如下:

vim /etc/telegraf/telegraf.conf

搜索outputs.influxdb如下:

配置完毕之后,重启Telegraf,查看influxdb的数据库是否使用了另一个?

# 重启telegraf
[root@server02 telegraf.d]# service telegraf restart
# 登陆influxdb
[root@server02 telegraf.d]# influx
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query

# 查看所有数据库,可以看到增加了my_telegraf数据库了。
> show databases;
name: databases
name
----
telegraf
_internal
my_telegraf
> 
> use my_telegraf;
Using database my_telegraf
> 
> show measurements;
name: measurements
name
----
cpu
disk
....
> 

可以安装配置已经创建了一个新的数据库示例my_telegraf,下面来使用grafana进行图表展示。

配置Grafana

初次启动,grafana会创建数据库,时间稍长,稍后即可访问http://localhost:3000打开grafana登录页面。 输入默认用户名密码登录(admin/admin)。

输入admin/admin 之后,会转如设置新密码的页面。

添加influxdb数据源

点击添加数据源,按照下图配置选择influxdb添加一个influxdb数据源。

url需配置成正确的宿主机ip和端口(防火墙需放行8086),若不想暴露数据库端口,可换成influxdb容器的ip地址(需自行进入容器查看,容器重启后可能会发生变化)避免数据库暴露至公网。

InfluxDB Details需填写数据名(默认telegraf,这里我修改为my_telegraf)、用户名和密码(默认均为空)。

填写完成后,点击Save&Test按钮,若访问正常,会出现Data source is working提示,否则请检查配置内容以及网络(防火墙)。

这里我是使用默认最简单的配置,当然密码那些可以自行配置添加上。

添加仪表板

返回主页Home,点击添加仪表板按钮添加新仪表板,点击Graph创建一个Graph Panel。

点击标题展开菜单,选择Edit进入面板编辑。

选择Metrics选项卡配置面板数据。

如图示配置可显示一条CPU-total的数据曲线。

配置完成后点击上方保存按钮保存仪表板。

Grafana详细的使用方法请参考官方文档:http://docs.grafana.org/或本站其它教程。

下载官网的仪表

在上面已经说明了如何去自定义仪表的方式,下面来看看怎么使用官网提供的模板。

官方看板模板库:https://grafana.com/dashboards

选择需要下载的看板模板

下载看板模板 https://grafana.com/grafana/dashboards/79

Grafana导入模板

导入之后的呈现效果如下:

这个效果已经展示得很棒了!还有更加多的模板提供,大伙就各自去尝试吧。

最后展示其他几种模板

https://grafana.com/grafana/dashboards/10581

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 开源还是商用?十一大运维监控工具横评

    随着云计算和互联网的高速发展,大量应用需要横跨不同网络终端,并广泛接入第三方服务(如支付、登录、导航等),IT系统架构越来越复杂。快速迭代的产品需求和良好的用户...

    胡齐
  • python 抽象基类 abstractmethod

    class IStream(metaclass=ABCMeta): @abstractmethod def read(self, maxbytes=-1):...

    用户5760343
  • 一篇文章搞懂InfluxDB时区

    InfluxDB默认以UTC时间存储并返回时间戳,当接收到一个时序数据记录时,InfluxDB将时间戳从本地时区时间转换为UTC时间并存储,查询时,Influx...

    hanj4096
  • 深度解析:持续交付将如何拯救IT运维?

    A 公司最近很苦恼。 A 是一个传统行业的公司,物流运输为主营业务,IT部门作为支撑部门辅助业务发展。但是随着业务的快速发展,IT 部门开始感觉到有点力不从心...

    用户1593318
  • 电商大促,性能测试都在做什么?

    自从09年阿里开启了双十一活动,近几年各大电商平台的促销活动如火如荼。电商大促期间剧增的流量,对电商平台相关的软件系统也带来了更严峻的挑战。

    写博客的老张
  • InfluxDB常见问题和解答 - 如何在InfluxDB中实现嵌套子查询

    大多数InfluxQL的内置函数不支持函数的嵌套,可以借助连续查询来实现类似的功能,先通过连续查询做实现子查询功能,把结果保存到新表中,然后再对新表中的结果执行...

    hanj4096
  • 模型训练完才是业务的开始?说说模型监控 | CSDN博文精选

    每次模型训练完成后,并不意味着项目的结束,在训练模型后,我们还需要将其稳定上线,然后部署一套相应的监控体系,这时候模型才开始稳定运行在业务场景中。在我们以往接触...

    AI科技大本营
  • Serverless:云函数 + 小马BI,将报表极速搬上云

    ? 本文作者:sevenyjluo ,腾讯 CSIG 前端开发工程师 很多业务都需要进行运营数据统计,如统计用户数、调用量等等。相较于传统方式,在拥抱云计算的...

    腾讯技术工程官方号
  • php定期拉取数据对比

    前面的是运行周期的配置,后面的是sh脚本的路径,该方式一般需要自己编写sh脚本来执行

    宣言言言

扫码关注云+社区

领取腾讯云代金券