概述:Telegraf收集信息,influxdb时序数据库存储数据,grafana平台展示数据,并进行监控告警,组成一个自动化运维监控平台。

一、influxdb

​ InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

1. 三大特性

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

2. 数据模型

概念 MySQL InfluxDB
数据库 database database
table measurement
column tags(带索引的,非必须)、fields(不带索引)、time(唯一主键,自动生成的时间列)
row point

3. influxdb时间线

​ InfluxDB中的series是一种数据源的合的概念,在同一个database中,相同retention policy、相同measurement、相同tag的数据属于一个series集合,标识这条数据来自哪里,同一个series的数据在物理上按照时间顺序排列在一起;

​ 使用命令 show series from tablename; 可以查看表的series。

4. 系统架构

名称 概念
database 数据库
RP(retention policy 数据保留策略) 数据库级别,非表级别属性,每个数据库有多个保留策略,但是只能有一个默认策略
shardgroup 每个shardgroup只存储指定时间段的数据,不同的shardgroup对应的数据段不会重合;将数据按时间维度进行分区,减少数据查询扫描,提高查询效率;influxdb中数据过期删除的执行粒度就是shardgroup
shard 真正存储数据

5. influxdb的安装

测试机器:10.121.x.x

5.1下载tar包,解压即可用,配置文件基本上不需要改

tar -xzvf influxdb-1.7.8_linux_amd64.tar.gz

得到以下目录结构

5.2 创建influxdb用户

useradd influxdb -s /sbin/nologin

5.3 创建几个目录,并授权

mkdir /var/lib/influxdb/   /var/log/influxdb/  /var/run/influxdb/

chown influxdb.influxdb /var/lib/influxdb/ 

chown influxdb.influxdb /var/log/influxdb/

chown influxdb.influxdb /var/run/influxdb/`

5.4 将配置文件复制到/etc/influxdb/influxdb.conf,使用默认配置即可

cp -r influxdb/etc/influxdb /etc/

默认配置:
[meta]
dir = "/var/lib/influxdb/meta"
[data]
dir = "/var/lib/influxdb/data"
wal-dir = "/var/lib/influxdb/wal"
series-id-set-cache-size = 100

5.5 将启动文件复制到/etc/init.d/

cp  influxdb/usr/lib/influxdb/scripts/init.sh  /etc/init.d/influxdb

chmod 755  /etc/init.d/influxdb

5.6 将二进制文件复制到/usr/bin

cp influxdb/usr/bin/* /usr/bin/

5.7 启动

service influxdb start

6、使用方法

6.1 数据库的基本操作

create database name1;

show databases;

use name1;

show measurements;

drop database name1;

show series from table1;

select * from table1 limit 10;

6.2 数据保留策略

Retention Policies - 数据保留策略是用来定义数据的存放时长,或者是保留某一时间段的数据。每个数据库可以有多个数据保留策略,但只能有一个默认策略。

创建保留策略语法:

create retention policy <retention_plocy_name> on <database_name> duration <duration> replication <n> [shard duration <duration>] [deafult]

<retention_plocy_name> 保留策略的名称

<database_name>  为哪个数据库创建的策略

<duration> 该保留策略对应的数据过期时间

replication 副本因子

shard duration 分片组的默认时长

[deafult] 是否为默认策略

查看保留策略语法

show retention policies on database_name;

修改保留期

alter retention policy "retention_plocy_name" on database_name duration 15d

删除保留期

drop retention policy "influx_retention_name" on database_name

6.3 表的增删改查

查看表

show measurements;

插入操作

insert weather,altitude=1000,area=北  tem=11,humi=-4

insert 表名(不存在则自动创建),tags1,tags2   fileds1,fileds

删除表

drop measurement table_name;

6.4 设置时间显示格式

precision rfc3339(Internet标准时间格式)

7. 用户操作

显示用户

show users;

创建用户

create user influx_user with passwrod 'xxxx';

管理员用户

create user "admin"  with password "xxxx" with all privileges;

修改用户密码

set password for influx_user='xxxx';

删除用户

drop user influx_user;

8. 用户权限

授予所有库的权限

grant all privileges to influx_user;

针对某个库的所有权限

grant all privileges on influxdb to influx_user;

撤销权限

revoke all privileges from influx_user;

开启用户登录认证,需在配置文件的[http]模块中开启

[http]

auth-enabled=true

登录方法

bin/influx (无密码)

bin/influx -username  influx_user -password xxxx (有密码)

二、Telegraf

​ telegraf是一个go编写的代理程序,可以收集系统和服务的统计数据,并写入到influxdb数据库。

1. telegraf metirc

是用于在处理期间对数据建模的内部表示。这些指标完全基于influxdb的数据模型,主要包含四个组件:

度量名称(measurement)

标签(tags)

字段(fields)

时间戳(time)

2. 为什么要用telegraf

  • 可以采集多种组件,自动采集上报数据,降低数据获取难度

  • 配置简单

  • 按照时间序列采集数据,与influxdb完美结合

  • 轻量级,占用内存小

3. telegraf 搭建

测试机器 10.121.x.x

3.1 下载解压安装包

tar -xzvf telegraf-1.15.3_linux_amd64.tar.gz

目录结构

3.2 修改配置文件

找到配置文件中的以下模块,添加influxdb的连接配置信息:

[[outputs.influxdb]]

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

database="telegraf" #influxdb创建的数据库

retention_policy="" #如果有的话

username="" #如果有的话

password="" #如果有的话

3.3 启动服务

bin/telegraf --config etc/telegraf/telegraf.conf

会自动收集信息并自动在influxdb的telegraf数据库中创建表,插入数据

3.4 可参考influxdb使用init.sh做成服务,配置开机自启动,也方便后续写脚本自动化部署。

创建用户和创建目录

useradd  -s /sbin/nologin  telegraf

mkdir /var/log/telegraf/  /var/run/telegraf

chown telegraf.telegraf  /var/log/telegraf

chown telegraf.telegraf /var/run/telegraf

拷贝配置文件和可执行文件,启动脚本

cp /root/telegraf/telegraf-1.15.3/usr/bin/telegraf /usr/bin/

cp -r /root/telegraf/telegraf-1.15.3/etc/telegraf /etc/

cp /root/telegraf/telegraf-1.15.3/usr/lib/telegraf/scripts/init.sh /etc/init.d/telegraf

启动

service telegraf start

配置开机自启动

chkconfig telegraf on

启动默认收集的信息

Loaded inputs: kernel mem processes swap system cpu disk diskio

3.5 需要收集什么信息,input的配置可以参考以下链接

三、Grafana

​ Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:

序号 项目 特性
1 展示方式 快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件
2 数据源 Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等
3 通知提醒 以可视方式定义指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过邮件等方式通知
4 混合展示 在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源
5 注释 使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记
6 过滤器 Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询

1. tar包安装

1.1 下载安装包并解压

tar -xzvf grafana-7.2.0.linux-amd64.tar.gz

1.2 启动

./bin/grafana-server web &

2. rmp方式安装

​ grafana建议使用rpm安装,因grafana组件较多,使用rpm安装标准化,方便配置和管理,不存储数据,因此也不用担心会过多占用空间。

2.1 下载并安装

wget https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm
sudo yum install grafana-7.3.6-1.x86_64.rpm

2.2 设置开机自启动等启动命令

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
sudo systemctl enable grafana-server

2.3 安装信息

项目 详细信息
二进制文件 /usr/sbin/grafana-server
init.d 脚本 /etc/init.d/grafana-server
环境变量文件 /etc/sysconfig/grafana-server
配置文件 /etc/grafana/grafana.ini
启动项 grafana-server.service
日志文件 /var/log/grafana/grafana.log
默认配置的sqlite3数据库 /var/lib/grafana/grafana.db

2.4 Grafana 访问

默认端口是3000,访问地址:http://IP:3000

默认账号/密码:admin/admin

Telegraf+Influxdb+Grafana自动化运维监控的更多相关文章

  1. Telegraf+InfluxDB+Grafana快速搭建实时监控系统 监控postgresql

    Telegraf+InfluxDB+Grafana快速搭建实时监控系统  监控postgresql

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

    前言 随着公司postgresql数据库被广泛应用,尤其是最近多个项目在做性能测试的时候都是基于postgresql的数据库,为了确定性能瓶颈是否会出现在数据库中,数据库监控也被我推上了日程.在网上找 ...

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

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

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

    Telegraf+InfluxDB+Grafana搭建服务器监控平台 tags:网站 个人网站:https://wanghualong.cn/ 效果展示 本站服务器状态监控:https://statu ...

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

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

  6. 建设DevOps统一运维监控平台,全面的系统监控 Zabbix VS Nagios VS Open-Falcon OR Prometheus

    前言 随着Devops.云计算.微服务.容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器.虚拟机.物理机不一而足.面对动辄几百上千个虚拟机.容 ...

  7. IT运维监控解决方案介绍

    现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...

  8. SQL Server 自动化运维系列

    本系列为SQL SERVER自动化运维的一些操作技巧点,所有内容都是根据日常运维过程中最经常遇到的问题,并为此形成了一些自动化运维的方式,皆为原创.... 供部分DBA和开发人员浏览借鉴,所应用平台基 ...

  9. CheungSSH国产自动化运维工具开源Web界面

    CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...

随机推荐

  1. 一篇文章彻底搞懂Java的大Class到底是什么

    作者在之前工作中,面试过很多求职者,发现有很多面试者对Java的 Class 搞不明白,理解的不到位,一知半解,一到用的时候,就不太会用. 因为自己本身以前刚学安卓的时候,甚至做安卓2,3年后,也是对 ...

  2. sentinel配置

    登陆接口 QPS5,异常0.8,熔断10s 1.异地登陆同省逻辑降级security 2.可疑用户判断certification 3.是否是危险设备判断account 4.是否是自动化imei,ime ...

  3. 第二十八章、containers容器类部件QStackedWidget堆叠窗口部件详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWi ...

  4. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件的tabBar、count、indexOf方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget的每个选项卡都有一个对应的页面部件对象,可用通过count方法获取选项卡个数,可 ...

  5. Oracle表操作-创建及增删改查

    数据类型: 1.CHAR:定长字符类型,默认长度是1,最长不超过2000字节. 2.CARCHAR2(length):可变字符类型,默认长度是1,最长不超过4000字符. 3.NUMBER(P,S): ...

  6. scrapy爬取微信小程序社区教程(crawlspider)

    爬取的目标网站是: http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1 目的是爬取每一个教程的标题,作者,时间和 ...

  7. robot framework 接口自动化测试和关键字开发

    https://www.cnblogs.com/laoqing/p/10787593.html 1.实战-接口自动化测试实例 1.1 接口测试 接口测试通常是系统之间交互的接口,或者某个系统对外提供的 ...

  8. 跨国合作:Serverless Components 在腾讯云的落地和实践

    导语 | Serverless Components 是 Serverless Framework 推出的最新解决⽅案,具有基础设施编排能⼒,开发者通过使⽤ Serverless Components ...

  9. Llbp2p是什么?

    这是个很好的问题.用一句话来概况就是libp2p是一个模块化的协议系统,它的规范和程序库可以用来开发p2p网络应用程序. 对等节点基础 对于我们对libp2p在上面的概要描述有很多内容需要进一步解释, ...

  10. 团队作业4-Day5

    团队作业4-Day5 项目git地址 1. 站立式会议 2. 项目燃尽图 3. 适当的项目截图 4. 代码/文档签入记录(部分) 5. 每人每日总结 吴梓华:补充了样式代码以方便调试. 白军强:顺利完 ...