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

基于docker方式

前言

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

第一步,数据采集;

第二步,数据存储;

第三步,数据可视化。

  1. Telegraf

  1. 介绍

由influxdata公司开发的用于采集系统数据的服务,用纯go编写,通过插件化方式进行采集各种服务(system,docker,redis,nginx,kafka等)监控指标并且上报给相应的中间件,比如influxdb,opentsdb(商城docker监控使用这个)。Telegraf也是整个TICK(telegraf+influxdb+chronograf+kapacitor)生态栈的第一块组件也是最重要的组件。

特点:

纯go编写,不需要依赖其他组件;

消耗相关系统资源比较小;

plugins支持多种输入输出插件(采集和上报)

 

下载镜像以及安装

  1. 检索: docker search telegraf

在docker 镜像中搜索telegraf ,此时会有很多镜像检索出来,一般情况下我们使用STARTS数量较高,且OFFICIAL为官方的镜像下载

  1. 拉去镜像:

docker pull telegraf

  1. 启动和配置 telegraf 镜像

修改telegraf.conf配置,使其支持docker, telegraf.conf文件可以先启动一次telegraf然后通过

docker cp telegraf:/etc/telegraf/telegraf.conf ./telegraf

 

命令把容器内的配置文件拷贝出来再修改。

 

找到配置文件的# # Read metrics about docker containers然后把下面的内容取消注释

 

[[inputs.docker]]

endpoint = "unix:///var/run/docker.sock"

container_names = []

container_name_include = []

container_name_exclude = []

timeout = "5s"

perdevice = true

total = false

tag_env = ["JAVA_HOME", "HEAP_SIZE"]

docker_label_include = []

docker_label_exclude = []

然后修改influxdb的ip地址

 

urls = ["http://localhost:8086"]

 

创建需要映射的文件夹和文件修改器配置

mkdir -p /root/telegraf/telegraf.conf

 

启动telegraf

 

docker run -d --name=telegraf \

-v /root/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf

-v /var/run:/var/run telegraf

 

通过-v参数,把本地的telegraf.conf放到容器中覆盖默认的配置,同时把/var/run也放入容器内,因为其中有docker.sock这个文件是与docker通信的接口。

  1. InfluxDB

Influxdb 是一个开源的分布式时序、时间和指标数据库,使用 Go 语言编写,无需外部依赖。

Influxdb 有如下三大特性:

①、基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);

②、可度量性:你可以实时对大量数据进行计算;

③、基于事件:它支持任意的事件数据;

 

安装influxdb

 

influxdb是一个时序数据库,非常适合用来记录监控信息。

 

拉取镜像

docker pull tutum/influxdb

 

启动镜像

docker run \

-itd -p 8083:8083 \

-p 8086:8086 \

-e ADMIN_USER="root" \

-e INFLUXDB_INIT_PWD="root" \

-e PRE_CREATE_DB="telegraf" \

--name influxdb tutum/influxdb:latest

 

开放8083和8086两个端口(8083是influxdb的web管理端,8086是数据传输端口)。用户名root,密码root,初始创建数据库telegraf供telegraf保存数据。

 

如果想让数据库只保留1天的数据可以使用RETENTION POLICIES来约束,例如

 

CREATE RETENTION POLICY "1_day" ON "telegraf" DURATION 1d REPLICATION 1 DEFAULT

 

1. 特征:

1. 时序性(Time Series)

与时间相关的函数的灵活使用(诸如最大、最小、求和等);

2. 度量(Metrics)

对实时大量数据进行计算;

3. 事件(Event)

支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。

2. 特点:

  1. schemaless(无结构),可以是任意数量的列;

  2. min, max, sum, count, mean, median 一系列函数,方便统计;

  3. Native HTTP API, 内置http支持,使用http读写;

  4. Powerful Query Language 类似sql;

  5. Built-in Explorer 自带管理工具。

3. 功能及默认

  • 时序数据库

  • 默认端口为Web端8083 , API端8086 , 默认登陆信息admin

4. 主要概念

1) 与SQL的名词做比较

 

 

database

 

数据库

 

数据库

 

measurement

 

数据库中的表

 

fields,tags以及time列的容器

 

points

 

表中的一行数据

 

同一个series中具有相同时间的field set

 

2) InfluxDB的独有概念

Point

 

 

timestamp

 

每个数据都需要一个时间戳(主索引&自动生成),在TSM存储引擎中会特殊对待,以为了优化后续的查询操作

 

field

 

1. 各种记录值(必须存在,没有索引的属性),eg:温度 

2. 由field key,field value组成

3. field key和field value对组成field set 

4. 如果使用字段作为查询条件,会扫描符合查询条件的所有字段值,性能不及tag。fields相当于SQL的没有索引的列。

5. field value可以为string,float,integer或boolean类型

 

tag

 

1. 各种有索引的属性,eg:地区 

2. tag key,tag value组成

3. tag key和tag value对组成tag set 

4. tags相当于SQL中的有索引的列

5. tag value只能是string类型

 

series

  • series是共享同一个retention policy,measurement以及tag set的数据集合

  • series相当于是InfluxDB中一些数据的集合。所有在数据库中的数据,都要通过图表展示出来,而series则表示表里面的数据,可以在图表上画成几条线(通过tags排列组合算出来)

shard

每个存储策略下会存在许多shard,每个shard存储一个指定时间段的数据,例如7点-8点的数据落入shard0中,8点-9点的数据落到shard1中,每个shard都对应一个底层的tsm存储引擎,有独立的cache,wal,tsm file。

retention policy

保留策略(RP)是用来定义数据在InfluxDB存放的时间,或者定义保存某个期间的数据。当你创建数据库时,InfluxDB会自动创建一个autogen(具有无限保留的保留策略)

5. 常用命令

1. 用户管理:

  • 显示用户

 

 

SHOW USERS

 

  • 创建用户和设置密码  

 

 

CREATE USER "username" WITH PASSWORD 'password'

 

  • 创建管理员权限的用户

 

CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES

 

  • 删除用户

 

DROP USER "username"

 

授权数据库给指定用户

 

GRANT ALL PRIVILEGES ON cadvisor TO testuse

 

2. database:

  • 创建数据库:

 

 

CREATE DATABASE testDB

 

  • 显示所有数据库:

 

 

SHOW DATABASES

 

  • 删除数据库:

 

DROP DATABASE testDB

 

  • 使用数据库:

 

USE testDB

 

创建默认的数据保留策略,设置保存时间30天,副本为1

 

CREATE RETENTION POLICY "xx_retention" ON "xx" DURATION 30d REPLICATION 1 DEFAULT

 

6. 函数

  • 聚合函数:

 

FILL(), INTEGRAL(),SPREAD(), STDDEV(),MEAN(), MEDIAN()

 

 

  • 选择函数:

 

 

SAMPLE(), PERCENTILE(), FIRST(), LAST(), TOP(), BOTTOM()

 

 

  • 转换函数:

 

DERIVATIVE(), DIFFERENCE()

 

  • 预测函数:

 

HOLT_WINTERS()

 

 

  1. Granfa

grafana是一个用于显示influxdb内容的图形化工具。

Grafana是一个纯html/js的web应用,是一个开源仪表盘工具,访问InfluxDB时不会存在跨域访问的限制,只要配置好数据源后,即可展示监控数据。

 

特点:

1.      丰富的数据源接口,支持InfluxDB、MySQL、ElasticSearch、PostgreSQL等多数据源

2.      丰富的API接口,方便自动化程序调用

3.      监控dashboard导入导出,制作好模板后导入后修改参数即可实现实时监控

4.      支持复杂的告警规则及邮件告警

 

拉取镜像

docker pull grafana/grafana

 

启动grafana

docker run -itd -p 3000:3000 \

-e INFLUXDB_HOST=122.112.166.47 \

-e INFLUXDB_PORT=8086 \

-e INFLUXDB_NAME=telegraf \

-e INFLUXDB_USER=root \

-e INFLUXDB_PASS=root \

--name grafana \

docker.io/grafana/grafana

 

这样就启动了一个连接122.112.166.47:8086端口的influxdb的grafana。在-e参数后面填写用户名密码和连接的数据库。

 

grafana 登录页面

 

 

添加 数据源:

Grfana 数据源支持很多数据源 influxDB, MYSQL ,Elasticsearch 这些都可以做数据源;目前调研使用的是 influxDB数据源

 

可以在官网上下载相应的dashboard 可以很快的搭建出监控系统的dashboard。

如下图

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值