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

转载来源 : 作者:DevOps海洋的渔夫
链接:https://www.jianshu.com/p/0a8192751dce
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

环境 :

阿里云centos 7.5

需求

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

监控平台拓扑
在这里插入图片描述

Grafana支持的数据源

官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。
DashBoard:仪表盘,就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana的DashBoard就是以各种图形的方式来展示从Datasource拿到的数据。

Row:行,DashBoard的基本组成单元,一个DashBoard可以包含很多个row。一个row可以展示一种信息或者多种信息的组合,比如系统内存使用率,CPU五分钟及十分钟平均负载等。所以在一个DashBoard上可以集中展示很多内容。

Panel:面板,实际上就是row展示信息的方式,支持表格(table),列表(alert list),热图(Heatmap)等多种方式,具体可以去官网上查阅。

Query Editor:查询编辑器,用来指定获取哪一部分数据。类似于sql查询语句,比如你要在某个row里面展示test这张表的数据,那么Query Editor里面就可以写成select *from test。这只是一种比方,实际上每个DataSource获取数据的方式都不一样,所以写法也不一样
Organization:组织,org是一个很大的概念,每个用户可以拥有多个org,grafana有一个默认的main org。用户登录后可以在不同的org之间切换,前提是该用户拥有多个org。不同的org之间完全不一样,包括datasource,dashboard等都不一样。创建一个org就相当于开了一个全新的视图,所有的datasource,dashboard等都要再重新开始创建。

User:用户,这个概念应该很简单,不用多说。Grafana里面用户有三种角色admin,editor,viewer。admin权限最高,可以执行任何操作,包括创建用户,新增Datasource,创建DashBoard。editor角色不可以创建用户,不可以新增Datasource,可以创建DashBoard。viewer角色仅可以查看DashBoard。在2.1版本及之后新增了一种角色read only editor(只读编辑模式),这种模式允许用户修改DashBoard,但是不允许保存。每个user可以拥有多个organization。

安装influxdb

  • docker的安装说明:

Centos7 下 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

  • docker的安装说明:

Grafana使用docker安装运行

  • 宿主机直接安装说明:
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安装

下载地址 :https://portal.influxdata.com/downloads/
在这里插入图片描述
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.6.0-1.x86_64.rpm

yum localinstall telegraf-1.12.5-1.x86_64.rpm -y

启动服务

systemctl start telegraf

在这里插入图片描述
从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"]]}]}]}

# 登陆influxdb的客户端
# 创建influxDB用户和数据库
[root@server02 ~]# influx
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
> create user "telegraf" with password 'telegraf'
> create database telegraf
# 查询所有数据库
> 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
# vim /etc/telegraf/telegraf.conf 

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

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

本次示例只配置influxdb url、database名称,如下:
配置Telegraf
vim /etc/telegraf/telegraf.conf

## The full HTTP or UDP URL for your InfluxDB instance.
urls = ["http://127.0.0.1:8086"]

 ## The target database for metrics; will be created as needed.
database = "telegraf"

## the default retention policy.  Only takes effect when using HTTP.
retention_policy = ""

## Timeout for HTTP messages.
timeout = "5s"

## HTTP Basic Auth
username = "telegraf"
password = "telegraf"

在这里插入图片描述
搜索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 之后,会转如设置新密码的页面。
在这里插入图片描述
在这里插入图片描述
#安装需要的插件 https://grafana.com/grafana/plugins
#安装zabbix插件
grafana-cli plugins install alexanderzobnin-zabbix-app
#安装时钟插件
grafana-cli plugins install grafana-clock-panel
#安装饼图插件
grafana-cli plugins install grafana-piechart-panel

添加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
点击下载模板
在这里插入图片描述
导入模板
在这里插入图片描述
在这里插入图片描述
其他看板模板效果图

模板地址:https://grafana.com/dashboards/1443
在这里插入图片描述

监控postgres数据库

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

最后展示其他几种模板
https://grafana.com/grafana/dashboards/10581

Grafana添加用户

<1>点击添加用户的图标
在这里插入图片描述
<2>点击Invite 或 Add or Invite,添加用户
在这里插入图片描述
<3>进行邀请

Email or Username:输入用户邮箱
Name:输入用户名
Role:配置用户权限(只读Viewer 编辑Editor 管理员Admin)
Send invite email:勾选时,会将新用户的设置密码的链接发到邮箱
Skip send invite email:勾选时,会跳过发送邮件这一步
在这里插入图片描述
在这里插入图片描述
报错信息 :SMTP not configured,check your grafana.ini config file’s [smtp] section.

安装 zabbix 插件(grafana-zabbix)

grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server

在这里插入图片描述

启用插件

进入 Plugins 界面,选择 “Zabbix”
开始面板(左上角图标) -> Plugins -> Apps -> Zabbix
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

验证

之后,我们从 开始面板 -> Zabbix 中,便可看到 Zabbix 相关的监控数据。

在这里插入图片描述

添加 zabbix 数据源

下载zabbix 数据源
在这里插入图片描述
数据源地址 :https://grafana.com/grafana/plugins?orderBy=weight&direction=asc,点击zabbix
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进入 “添加数据源” 界面
开始面板(左上角图标) -> Data Sources -> Add data source

添加性能工具之JMeter图形

找到InfluxDB配置文件(/etc/influxdb/influxdb.conf)
如果你无法找到配置文件,可以使用InfluxDB显示配置命令

Influxd config

在这里插入图片描述
Jmeter使用graphite协议去写入数据到InfluxDB,因此,需要在InfluxDB配置文件启用它,如下图所示:

[[graphite]]
 enabled = true
 bind-address = ":2003"
 database = "jmeter"
 retention-policy = ""
 protocol = "tcp"
 batch-size = 5000
 batch-pending = 10
 batch-timeout = "1s"
 consistency-level = "one"
 separator = "."
 udp-read-buffer = 0

在这里插入图片描述
改后,使用以下命令加载InfluxDB启动

有两种方法可以使用配置文件启动InfluxDB:
1.使用以下-config选项将进程指向正确的配置文件

influxd -config /etc/influxdb/influxdb.conf

2.将环境变量设置为INFLUXDBCONFIGPATH配置文件的路径并启动

echo $INFLUXDB_CONFIG_PATH
/etc/influxdb/influxdb.conf
influxd

InfluxDB操作

[root@zuozewei ~]# influx  #登录数据库
Connected to http://localhost:8086 version 1.6.2
InfluxDB shell version: 1.6.2
> show databases  #查看所有数据库
name: databases
name
----
_internal
> CREATE DATABASE "jmeter" #创建数据库
> use jmeter               #切换数据库
Using database jmeter
> CREATE USER "admin" WITH PASSWORD 'admin' WITH ALL PRIVILEGES # 创建管理员权

查看JMeter数据库下所有的表

show measurements
name: measurements

对基于telegraf+influxdb+grafana进行postgresql数据库监控

扩展

1、Grafana忘记密码或者默认密码无法使用
更改密码

sqlite3 /var/lib/grafana/grafana.db

sqlite> update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';
sqlite> .exit

在这里插入图片描述
以上变更之后admin账户密码恢复为admin

2、Grafana图形界面不显示
解决办法 :
查看服务状态

[root@localhost ~]# service telegraf status
[root@localhost ~]# netstat -lantp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开启防火墙
systemctl restart firewalld.service
开放端口

开启端口
[root@centos7 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent

查询端口号80 是否开启:
[root@centos7 ~]# firewall-cmd --query-port=80/tcp

重启防火墙:
[root@centos7 ~]# firewall-cmd --reload

查询有哪些端口是开启的:
[root@centos7 ~]# firewall-cmd --list-port

3、Templating init failed
Datasource named InfluxDB was not found
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解决办法 :

https://www.linuxidc.com/Linux/2019-06/159104.htm

参考链接 :
Telegraf+InfluxDB+Grafana 搭建服务器监控平台 : https://www.jianshu.com/p/0a8192751dce

https://blog.csdn.net/zuozewei/article/details/82929429
CentOS 7防火墙快速开放端口配置方法 : https://www.linuxidc.com/Linux/2019-06/159104.htm

https://blog.csdn.net/zuozewei/article/details/82911173
influxdb基本操作 : https://blog.csdn.net/Jailman/article/details/78421401

grafana的用户及权限的配置 :https://blog.csdn.net/GX_1_11_real/article/details/85119451
https://blog.csdn.net/qq_23598037/article/details/99850396

发布了313 篇原创文章 · 获赞 57 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_40907977/article/details/104147298