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

时间:2022-11-24 01:05:11

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

tags:网站

个人网站:https://wanghualong.cn/


效果展示

本站服务器状态监控:https://status.wanghualong.cn


前言

要搭建服务器监控平台,总共分三步:

第一步,数据采集;

第二步,数据存储;

第三步,数据可视化。

其中,数据存储连接数据采集与数据可视化,是非常重要的中间环节。本文非常凑巧的选择了时序数据库InfluxDB。(@(滑稽)为什么巧,当然不是因为我只会用这个)

InfluxDB是一款优秀的时间序列数据库,适合存储设备性能、日志、物联网传感器等带时间戳的数据。能轻松处理高写入和高查询负载(数据采集与数据可视化非常常见的场景)。具体介绍请参阅InfluxDB官方文档:https://docs.influxdata.com/influxdb/

数据采集方面有非常多的选择,你甚至可以自己开发一个。这里为了方便直接选择Influxdata官方出品的采集工具Telegraf ,毕竟是全家桶产品。Telegraf详情介绍:https://docs.influxdata.com/telegraf

可视化方面选择了超高颜值、功能强大的开源可视化利器Gafana,具体颜值有多高,功能有多强大,本文就不再赘述了,直接上官网:https://grafana.com/grafana

我甚至还给Grafana做了一下中文的本地汉化:https://github.com/WangHL0927/grafana-chinese

Grafana从早期版本就对InfluxDB有着完善的支持。

最终平台的方案:

Telegraf(数据采集)+InfluxDB(数据存储)+Grafana(数据可视化)。


搭建实战

InfluxDB与Grafana直接使用官方容器进行部署,方便快捷。服务器需先安装Docker,具体步骤参考本站文章CentOS7安装Docker

1 部署InfluxDB

docker run -d -p 8086:8086 --name=influxdb influxdb


以上命令dcoker会自动从仓库下载最新版本的influxdb镜像,后台运行一个名为influxdb的容器并映射主机8086端口到容器8086端口。

若想将数据存储到宿主机而非容器内,可使用以下命令启动挂载本地目录到容器内。

# $pwd为当前工作目录,可替换为其它宿主机目录

docker run -d -p 8086:8086 -v $PWD:/var/lib/influxdb --name=influxdb influxdb


启动InfluxDB容器后,通过http接口访问进行测试。

curl -G http://localhost:8086/query --data-urlencode "q=show databases"


若influxdb运行正常,则会返回如下结果:

# 链接查询参数为show databases 数据库会返回所有的数据库名,新安装的influxdb默认只有一个"_internal"
# 数据库。 {"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["telegraf"]]}]}]}

influxdb容器管理

# 启动
docker start influxdb # 停止
docker stop influxdb # 重启
docker restart influxdb

2 安装Telegraf

下载安装

Telegraf为了方便配置调试,选择直接在宿主机安装。

# 以CentOS为例
# 下载Telegraf
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.6.3-1.x86_64.rpm # 安装Telegraf
sudo yum localinstall telegraf-1.6.3-1.x86_64.rpm

配置Telegraf

用户可修改Telegraf配置文件进行采集项的配置。配置文件默认位于/etc/telegraf/telegraf.conf

在本文方案中,需要配置数据输出项(输出到influxdb),其它项使用telegraf默认即可。

按照示例配置influxdb url、database名称

###############################################################################
# OUTPUT PLUGINS #
############################################################################### # Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
## The full HTTP or UDP URL for your InfluxDB instance.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## urls will be written to each interval.
# urls = ["unix:///var/run/influxdb.sock"]
# urls = ["udp://127.0.0.1:8089"] # influxdb http地址,由于是宿主机直接安装,直接访问本地8086端口即可。
urls = ["http://127.0.0.1:8086"] ## The target database for metrics; will be created as needed. # 数据库名,不存在会自动创建,默认"telegraf"
database = "telegraf" ## If true, no CREATE DATABASE queries will be sent. Set to true when using
## Telegraf with a user without permissions to create databases or when the
## database already exists. # 跳过创建数据库
skip_database_creation = false ## Name of existing retention policy to write to. Empty string writes to
## the default retention policy.
# retention_policy = "" ## Write consistency (clusters only), can be: "any", "one", "quorum", "all"
# write_consistency = "any" ## Timeout for HTTP messages. # 超时时间
timeout = "5s" ## HTTP Basic Auth
# username = "telegraf"
# password = "metricsmetricsmetricsmetrics" ## HTTP User-Agent
# user_agent = "telegraf" ## UDP payload size is the maximum packet size to send.
# udp_payload = 512 ## Optional SSL Config
# ssl_ca = "/etc/telegraf/ca.pem"
# ssl_cert = "/etc/telegraf/cert.pem"
# ssl_key = "/etc/telegraf/key.pem"
## Use SSL but skip chain & host verification
# insecure_skip_verify = false ## HTTP Proxy override, if unset values the standard proxy environment
## variables are consulted to determine which proxy, if any, should be used.
# http_proxy = "http://corporate.proxy:3128" ## Additional HTTP headers
# http_headers = {"X-Special-Header" = "Special-Value"} ## HTTP Content-Encoding for write request body, can be set to "gzip" to
## compress body or "identity" to apply no encoding.
# content_encoding = "identity" ## When true, Telegraf will output unsigned integers as unsigned values,
## i.e.: "42u". You will need a version of InfluxDB supporting unsigned
## integer values. Enabling this option will result in field type errors if
## existing data has been written.
# influx_uint_support = false

Telegraf提供的采集内容非常丰富,将相应配置项取消注释并重启Telegraf即可生效。其它更多配置项请参考Telegraf官方文档:https://docs.influxdata.com/telegraf

启动Telegraf

# 启动
systemctl start telegraf # 停止
systemctl stop telegraf # 重启
systemctl restart telegraf # 查看服务状态
systemctl status telegraf

部署Grafana

Grafana同样采用官方docker镜像进行快速部署。

docker run -d -p 3000:3000 --name=grafana grafana/grafana


以上命令docker会拉取最新版grafana镜像,运行名为grafana的容器,并映射宿主机3000端口。

初次启动,grafana会创建数据库,时间稍长,稍后即可访问http://localhost:3000打开grafana登录页面。

输入默认用户名密码登录(admin)。

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

按照主页向导完成初次配置。

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

1 添加数据源

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

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

InfluxDB Details需填写数据名(默认telegraf)、用户名和密码(默认均为root)。

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

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

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


添加仪表板

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

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

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

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

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

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

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

还可添加多条查询,同时在一个panel显示多条曲线。

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

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

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

可以尽情发挥自已创意。

本站Demo:https://status.wanghualong.cn/

默认用户名密码:guest

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

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

Telegraf+InfluxDB+Grafana搭建服务器监控平台的更多相关文章

  1. collectd+influxDB+Grafana搭建性能监控平台

    网上查看了很多关于环境搭建的文章,都比较久远了很多安装包源都不可用了,今天收集了很多资料组合尝试使用新版本来搭建,故在此记录. 采集数据(collectd)-> 存储数据(influxdb) - ...

  2. Docker+Jmeter+InfluxDB+Grafana搭建性能测试监控平台

    搭建需求? jmeter自身的聚合测试报告可视化效果极差,为更加形象的.动态的展示测试过程,需要一个具有时序性的可视区来展示给我们的测试者, 这时候就需要用到后端监控,下面我们来开始搭建符合这种测试需 ...

  3. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(一)

    在做性能测试的时候,重点关注点是各项性能指标,用Jmeter工具,查看指标数据,就是借助于聚合报告,但查看时也并不方便.那如何能更直观的查看各项数据呢?可以通过InfluxDB+Grafana+Jme ...

  4. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(三)

    在之前系列博文中,已经介绍完了数据采集和数据存储,那数据如何展示呢?所以今天就专门来讲下数据如何展示的问题. 以前博文参考: Docker系列--InfluxDB+Grafana+Jmeter性能监控 ...

  5. [转帖] 基于telegraf, influxdb, grafana 建立 esxi 监控

    [系统集成] 基于telegraf, influxdb, grafana 建立 esxi 监控 https://www.cnblogs.com/hahp/p/7677420.html 之前在 nagi ...

  6. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(二)

    在上一篇博文中,主要是讲了InfluxDB的配置,博文链接:https://www.cnblogs.com/hong-fithing/p/14453695.html,今天来分享下Jmeter的配置. ...

  7. [系统集成] 基于telegraf, influxdb, grafana 建立 esxi 监控

    之前在 nagios 上建立了 esxi 监控,指标少.配置麻烦.视觉效果差.最近我把 esxi 监控迁移到了 influxdb+grafana 平台上,无论是监控指标.可操作性还是视觉效果都有了很大 ...

  8. 使用Telegraf + Influxdb + Grafana 监控SQLserver服务器的运行状况

    使用Telegraf + Influxdb + Grafana 监控SQLserver服务器的运行状况 前言 本文在Debian9下采用Docker的方式安装Telegraf + Influxdb + ...

  9. Docker系列——Grafana+Prometheus+Node-exporter服务器监控平台(一)

    在最近的博文中,都是介绍监控平台的搭建,其实并不难,主要是需要自己动手操作,实践一番就会了. 有天在想,云上的服务器,是不是也可以搭建一个监控平台,所以就捣鼓了一下,不过遗憾的是,使用阿里云开源的插件 ...

随机推荐

  1. svn执行clean up命令时报错或被锁定的解决方法

    用SVN经常出现被锁定而无法提交的问题,选择解锁又提示没有文件被锁定,很是头疼.这里整理了一下SVN 被锁定的几种解决方法: 1.出现这个问题后使用“清理”即"Clean up"功 ...

  2. 在一个工程管理多个应用-b

    Demo:http://download.csdn.net/detail/u012881779/9166527 本文的产生是因产品经理提出的特殊需求: 一个针对多所学校的应用,对不同学校需要分别使用一 ...

  3. cf C. George and Number

    http://codeforces.com/problemset/problem/387/C 题意:给你一个大数,让你求个集合,可以通过操作得到这个数,求集合中个数最大值,操作 :从集合中任意取两个数 ...

  4. php_cawler_html嵌套标签清洗

    主要处理 嵌套 div,正则无法很好的处理清洗 比如文本: 想要移除 class =quizPutTag 的div ,内部可能嵌套的还有未知层级的div[前提是html文本段是闭合标签的] 这是&lt ...

  5. Promise (1) 初步接触

    总想着王者荣耀排位赛再提升个等级就弃掉游戏好好学习,然而打了两个周也没升上去,看来是应该换个方向发挥了. 最近看了<javascript Promise迷离书>,对Promise的理解颇有 ...

  6. MySQL数据库性能优化&lpar;享学课堂听课笔记&rpar;

    1.场景: 2张表A表 200W条数据,关联表B表3W条数据,AB有主外键关系. 案例1. 35S 使用关联子查询,查询时间35S 案例2. 19S 使用连表查询 (Left  join ,Inner ...

  7. 在区块链上表白——使用C&num;将一句话放入比特币的区块链上

    最近在看区块链和比特币的知识,顺便简单研究了一下BitCoin的脚本语言,发现OP_RETURN这个命令可以在后面放入自己想说的内容,很多侧链啊,公证之类就是利用了这个特性,可以把一句话,或者一个哈希 ...

  8. BZOJ 1208 宠物收养所 set&plus;二分

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1208 题目大意: 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠 ...

  9. spring mvc防止表单重复提交的代码片段

    1.定义一个token接口 package com.bigbigrain.token; import java.lang.annotation.Documented; import java.lang ...

  10. Mysql 中json 相关函数的使用

    1.JSON_LENGTH: select content from test1 ["1","2","3","4",&q ...