时间序列数据库概览

  categories:资料  author:

背景

目前对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通过使用特殊的存储方式,使得时序大数据可以高效存储和快速处理海量时序大数据,是解决海量数据处理的一项重要技术。该技术采用特殊数据存储方式,极大提高了时间相关数据的处理能力,相对于关系型数据库它的存储空间减半,查询速度极大的提高。时间序列函数优越的查询性能远超过关系型数据库,Informix TimeSeries非常适合在物联网分析应用。

定义

时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

最新时序数据库排名:

特点& 分类:

  • 专门优化用于处理时间序列数据
  1. 该类数据以时间排序
  2. 由于该类数据通常量级大(因此Sharding和Scale非常重要)或逻辑复杂(大量聚合,上取,下钻),关系数据库通常难以处理
  • 时间序列数据按特性分为两类
  1. 高频率低保留期(数据采集,实时展示)
  2. 低频率高保留期(数据展现、分析)
  • 按频度
  1. 规则间隔(数据采集)
  2. 不规则间隔(事件驱动)
  •  时间序列数据的几个前提
  1. 单条数据并不重要
  2. 数据几乎不被更新,或者删除(只有删除过期数据时),新增数据是按时间来说最近的数据
  3. 同样的数据出现多次,则认为是同一条数据

如图:

时间序列数据库关键比对

InfluxDB ElasticSearch
流行(TSDB排行第一) 流行(搜索引擎排行第一)
高可用需要收费 集群高可用容易实现,免费
单点写入性能高 单点写入性能低
查询语法简单,功能强 查询语法简单,功能强(弱于Influxdb)
后端时序数据库设计,写入快 设计并不是时序数据库,后端存储采用文档结构,写入慢

由此可见:高频度低保留期用Influxdb,低频度高保留期用ES。

其他时序数据库介绍:

如何使用

数据的查询与写入:

  • Influxdb与ES都是REST
阅读全文

Grafana+Prometheus打造全方位立体监控系统

  categories:资料  author:

摘要: 前言 本文主要介绍如何使用Grafana和Prometheus以及node_exporter对Linux服务器性能进行监控。下面两张图分别是两台服务器: 服务器一 服务器二 概述 Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。

前言

本文主要介绍如何使用Grafana和Prometheus以及node_exporter对Linux服务器性能进行监控。下面两张图分别是两台服务器:

服务器A

1

服务器B

2

概述

Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。

  • 多维数据模型(时序列数据由metric名和一组key/value组成)
  • 在多维度上灵活的查询语言(PromQl)
  • 不依赖分布式存储,单主节点工作.
  • 通过基于HTTP的pull方式采集时序数据
  • 可以通过push gateway进行时序列数据推送(pushing)
  • 可以通过服务发现或者静态配置去获取要采集的目标服务器
  • 多种可视化图表及仪表盘支持

Prometheus通过安装在远程机器上的exporter来收集监控数据,后面我们将使用到node_exporter收集系统数据。

架构

3

Grafana 是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点。

4

架构

Diagram

安装

Exporter

下载并解压:

#下载
wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-
阅读全文

开源监控利器grafana

  categories:资料  author:

前言:

做运维的很重要的基础工作就是监控,之前都是统计数据入库,然后前端js图表插件出图,费时费力,可定制性差

前几天接触到了ELK(logstash, elasticsearch, kibana)这套日志收集展示工具集,的确很方便,但是手头没有那么大的存储啊

也不是所有的日志数据都需要,然后就发现了grafana + influxdb的解决方案

简介:

先给出这两个工具的官网

http://grafana.org/

http://influxdb.com/

建议各位看官先大体浏览下这两个工具的介绍和文档

grafana是前端展示界面,要放到apache或nginx下,不需要php环境奥

influxdb是一个时间序列的数据库,你插入的每条数据会自动附加上两个字段,一个时间,一个序列号(用来作为主键的)

ps: influxdb的0.8版本不支持centos 5,只能是centos6以上,所以centos5的还是用0.7的版本

安装:

influxdb就一个rpm包,没有其他依赖,是用go语言写的,go发展很迅猛啊

influxdb会监听4个端口

tcp        0      0 0.0.0.0:8099                0.0.0.0:*                   LISTEN      29458/influxdb
tcp        0      0 0.0.0.0:8083                0.0.0.0:*                   LISTEN      29458/influxdb
tcp        0      0 0.0.0.0:8086                0.0.0.0:*                  

阅读全文

可视化工具Grafana简介及安装

  categories:资料  author:

随着业务的越发复杂,对软件系统的要求越来越高,这意味着我们需要随时掌控系统的运行情况。因此,对系统的实时监控以及可视化展示,就成了基础架构的必须能力。

这篇博客,介绍下开源的可视化套件grafana的安装及其功能特点。。。

官网地址:Grafana

官方文档:Grafana文档

 

环境:CentOS7.4 64位

Grafana版本:5.3.2

一、Grafana介绍

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

1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;

2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;

3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;

4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;

5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;

6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

 

二、下载安装

1、下载

官网下载地址:Grafana

安装指南:Grafana安装指南

根据自己的系统版本和配置,下载对应的包,官方提供了如下说明,可直接按照说明进行下载:

2、启动

下载安装完成后,输入命令 service grafana-server start 启动服务,打开浏览器,输入IP+端口,3000为Grafana的默认侦听端口。

系统默认用户名和密码为admin/admin,第一次登陆系统会要求修改密码,修改密码后登陆,界面显示如下:

 

三、Grafana使用方法

1、添加数据源

首先是添加数据源,点击左上角的grafana图标,示例如下:

PS:选择influxdb作为数据源,需要在influxdb中创建该用户以及对应的数据库!

2、创建DashBoard

创建好数据源之后,就需要创建DashBoard(仪表盘),可以自定义,也可以导入你需要的仪表盘,官方提供了很多的可选仪表盘。

BashBoard地址:BashBoard… 阅读全文

在es中用Grafana显示数据

  categories:资料  author:

早期的时候,项目基于ES+echart写了一些仪表盘的展示页面,虽然ES配合这种char界面有着天然的优势,但实际写起代码来,还是很多重复的劳动,在一次偶然中发现Grafana,看到它提供了很多仪表盘式的图型,功能很强大,于是下载下来试了下效果不错。因为全部都是鼠标操作,都不用写代码,真正智能套件。

如题,应用Grafana之前,你需要对es聚合查询知识有一定了解

先看效果

效果图
因为网上这种图比较多,这里就不细看了,目前Grafana如何使用的文章不多,下面是我总结的一些经验,其中有一部份是从官网查到的资源,先把官网地址贴下,至于如何使用,大家可以参考下官网,官网文档对于初学者比较难懂,而我写这篇文章的目的是对于初次使用grafana的同学有个比较底的学习门槛。

1,下载安装

这块省略,自行,对于windows版本和linux版本,我都下载试了下,效果完全一样,使用方式也一样。

2,配置数据源

先上ES索引,这个索引主要存储各应用请求的访问量
image.png
这个是我测试环境ES的索引名称,一般情况索引都是以日期结尾,这点将在grafana建数据源的时候用到,好了,开始操作建数据源
image.png

然后再点击 add datasourch,出现这个界面

image.png
上图中index name里的值是:[hlog-crm3-hig-c-req-elapsed-time-]YYYY.MM.DD

这个是elasticearch-head插件下索引里一条数据,展示这个是为了填Elasticsearch details中对于Time field name字段的理解
image.png
保存成功后数据源就建好了

3,建图表

image.png
建这个表的步骤
image.png
image.png
image.png

把标记的三个点都操作完后,效果就出来了,这个就是按ES的聚合操作来的,这是最简单的求和,意思是在这个时间段内将所有的请求数求和,展示出来的数据表示今天内所有的请求数,注意一点,这个结果值都是按这个聚合时间来算的。
因为是测试数据,所以,数据量比较少。
image.png
这个查询的结果就是,根据sGrp字段分组,查出这个分组下的数据访问量,而这个分组存的主要是各系统的标识,所以,整个翻译过来就是,各系统请求访问量实时监控图。
如果想x轴想展示出group的名称,则可以这样选择
image.png
这样,x轴就从时间变成了各系统名称了
如果我只想展示一种,该如何办了,这个时候就需要用到这个工具的另一个操作了
image.png
目前对于这个query的操作我只发现这样有用,官网上对这个做了详细说明,至于官网上那种用法,读者如有更详细的用法,可以留言给我
这是官网文档地址:

http://docs.grafana.org/features/datasources/elasticsearch/

还有一个就是耗时分布图了,这个图的功能很强大,以前我想到过这样一种工具来展示,无奈echart对这个支持实现起来比较麻烦,但在这里真的点点就可以了
首先,我得拿出我出的es里的数据来解释下
image.png
span是指这个请求的耗时,那么我将要实现一个根据每个请求的耗时来展示出耗时的区间分布
首先是添加一个heatmap
选择数据源后这样操作
image.png
选择平均值,然后再选择字段,注意,这个时间Y轴的值是个数,而我们需要的是时间(毫秒),所以还得更改下Y轴的值

至于颜色设置什么的,不是重点,读者可以自己选择。
这样一来就可以展示出各请求耗时段时间分布了,至于,如何区分出一个系统的,还是不同时间段的都跟前面的图表操作一致
后面还有个饼图的,这里就不再展示,注意,饼图这个是官方提供的插件,要去官网上下载,操作起来也是很简单的。… 阅读全文

elk中Beats数据采集

  categories:资料  author:

Beats是elastic公司的一款轻量级数据采集产品,它包含了几个子产品:

  • packetbeat(用于监控网络流量)、
  • filebeat(用于监听日志数据,可以替代logstash-input-file)、
  • topbeat(用于搜集进程的信息、负载、内存、磁盘等数据)、
  • winlogbeat(用于搜集windows事件日志)

另外社区还提供了dockerbeat等工具。由于他们都是基于libbeat写出来的,因此配置上基本相同,只是input输入的地方各有差异。

本文按照如下的内容依次进行介绍:

  • 背景知识:关于Powershell的使用
  • packetbeat的下载、部署、使用、结果样例
  • filebeat的下载、部署、使用、样例
  • topbeat的样例
  • winlogbeat的样例

关于Powershell

如果你是想在linux下使用,那么可以跳过本节。

elastic中的Beats在windows环境中基本都是使用Powershell的脚本,因此用户必须对Powershell有一定的了解。Powershell可以理解成windows对命令行的高级封装,加了个壳,从而支持更多高级的用法。在windows7开始,系统就内置了Powershell工具。因此如果你的系统是xp这种比较老的版本,就需要自己安装Powershell了。

启动Powershell

在windows下,有两种方式打开Powershell(要以管理员的身份打开)。

通过图标打开

在windows下开启搜索,输入powershell,右键以管理员身份运行。

通过命令行启动

在系统路径C:\Windows\System32下,以管理员身份启动cmd.exe(右键选择 以管理员身份运行)。

输入命令Powershell,进入Powershell命令窗口。

C:\Windows\system32>Powershell
Windows PowerShell
版权所有 (C) 2009 Microsoft Corporation。保留所有权利。

PS C:\Windows\system32>

开启脚本限制

默认的情况下,系统会禁止运行脚本,返回下面的错误提示:

PS E:\packetbeat> 
阅读全文

ELK Packetbeat 部署指南

  categories:资料  author:

Packetbeat 是一个实时网络数据包分析工具,与elasticsearch一体来提供应用程序的监控和分析系统。

Packetbeat通过嗅探应用服务器之间的网络通讯,来解码应用层协议类型如HTTP、MySQL、redis等等,关联请求与响应,并记录每个事务有意义的字段。

Packetbeat可以帮助我们快速发现后端应用程序的问题,如bug或性能问题等等,修复排除故障也很快捷。

Packetbeat目前支持的协议有:

  • HTTP
  • MySQL
  • PostgreSQL
  • Redis
  • Thrift-RPC
  • MongoDB
  • DNS
  • Memcache

Packetbeat可以将相关事务直接插入到elasticsearch或redis(不推荐)或logstash。

Packetbeat可以运行在应用服务器上或者独自的服务器。当运行在独自服务器上时,需要从交换机的镜像端口或者窃听设备上获取网络流量。

对第七层信息解码后,Packetbeat关联与请求相关的响应,称之为事务。每个事务,Packetbeat插入一个json格式文档到elasticsearch。然后可通过kibana进行分析展示。

安装

先配置beats yum 源,参见前文。

配置

选择要从哪个网卡嗅探网络通讯,默认是所有的网络接口。

Filebeat中文指南

  categories:资料  author:

一、概述

Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。

以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

(个人理解,filebeat是一个轻量级的logstash,当你需要收集信息的机器配置或资源并不是特别多时,使用filebeat来收集日志。日常使用中,filebeat十分稳定,笔者没遇到过宕机。)

二、Filebeat入门

开始配置使用filebeat之前,你需要安装并配置好这些依赖程序:

Elasticsearch 作为存储和索引这些数据。

Kibana 作为展示平台。

Logstash(可选)去插入数据到elasticsearch。

详见 beat和elastic的入门

 

在安装完毕elastic集群之后,阅读接下来的选项学习怎样安装,配置,与运行filebeat。

 

第一步:安装filebeat

请选择你系统中的下载安装命令来下载安装filebeat。(deb for Debian/Ubuntu, rpm for Redhat/Centos/Fedora, mac for OS X, and win for Windows).

如果你使用yum或者apt,你可以从我们的安装仓库中更方便的安装或更新到新版本。

deb:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb

sudo dpkg … 阅读全文

浅析ES的安全模块

  categories:资料  author:

前言

Elasticsearch(以下简称ES)广泛应用于互联网企业(Github,Netflix,DigitalOcean…),ES并未提供免费的安全插件来守护ES集群,对于一家商业公司这么做无可厚非,但这更说明ES安全模块的重要性。本文将简单介绍ES、ES的插件体系并着重介绍ES安全模块的实现。

ES 简介

ElasticSearch 是一个分布式,实时,全文搜索引擎。底层实现基于Lucene全文搜索引擎并提供了RESTful接口实现,数据以JSON文档的格式存储索引,不需要预先规定范式。

通用的应用场景包括:搜索引擎、NOSQL存储、ELK。

ES除了充分利用的Lucene提供的全文搜索功能还扩展了以下功能:

可搜索的分布式文件存储

实时分析的分布式搜索引擎

横向扩展非常容易,可处理PB级数据

ES 插件体系

和很多系统一样,ES也通过插件来增强系统核心功能。ES主要支持两种类型的插件:

Java插件 (Shield,SearchGuard)

该类型插件只包含Jar文件,通过拦截请求实现功能,且须安装在集群中的每个节点上并且需要重新启动后才能生效。

Site插件 (kopf,marvel)

site插件主要包含WEB资源文件,如Js、HTML、CSS,通过ES内嵌的服务器,可直接访问http://es-cluster:9200/_plugin/plugin 来查看相应的插件。

基于插件的安全实现

根据ES提供的插件机制,我们可以通过插件拦截请求实现以下安全控制:

拦截、认证HTTP、Transport请求

用户权限验证

审计功能

节点通信证书加密

SearchGuard简介

Search Guard 2(以下简称SG2)是一个提供了加密、认证、授权功能的ES开源插件(依赖Search Guard SSL插件)并且提供了细粒度到文档、字段级别的权限控制,是商业版Shield插件的开源替代。SG和Shield的实现大同小异,通过分析SG即可了解ES的安全模块的设计与实现 。另:SG1版已废弃,不推荐使用。

下面简单介绍集成配置和关键源码(伪代码)简析。

配置

安装SG、SG-SSL插件

bin/plugin install -b

阅读全文

ELK原理与介绍

  categories:资料  author:

为什么用到ELK:
一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。

一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

一个完整的集中式日志系统,需要包含以下几个主要特点:

  • 收集-能够采集多种来源的日志数据
  • 传输-能够稳定的把日志数据传输到中央系统
  • 存储-如何存储日志数据
  • 分析-可以支持 UI 分析
  • 警告-能够提供错误报告,监控机制

ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。

ELK简介:

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat隶属于Beats。目前Beats包含四种工具:

  1. Packetbeat(搜集网络流量数据)
  2. Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
阅读全文


快乐成长 每天进步一点点      京ICP备18032580号-1