24

Prometheus+Grafana实现监控系统

 4 years ago
source link: https://studygolang.com/articles/25115
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

任务背景

某某某公司是一家电商网站,由于公司的业务快速发展,公司要求对现有机器进行业务监控,责成运维部门来实施这个项目。

任务要求

1)部署监控服务器,实现7x24实时监控

2)针对公司的业务及研发部门设计监控系统,对监控项和触发器拿出合理意见

3)做好问题预警机制,对可能出现的问题要及时告警并形成严格的处理机制

4)做好监控告警系统,要求可以实现告警分级

一级报警  电话通知

二级报警  微信通知

三级报警 邮件通知

5)处理好公司服务器异地集中监控问题,K8S内部使用的监控系统就是普罗米修斯

任务分析

为什么要监控?

答: 实时收集数据,通过报警及时发现问题,及时处理。数据为优化也可以提供依据。

监控四要素:

监控对象 [主机状态  服务  资源  页面,url]

用什么监控                [zabbix-server  zabbix-agent] => 普罗米修斯监控

什么时间监控            [7x24    5x8]

报警给谁                    [管理员]

项目选型:

mrtg (Multi Router Traffic Grapher)通过 snmp 协议得到设备的流量信息,并以包含PNG格式的图形的HTML文档方式显示给用户。

cacti (仙人掌) 用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据。官网地址: https://www.cacti.net/

ntop 官网地址: https://www.ntop.org/

nagios 能够跨平台,插件多,报警功能强大。官网地址: https://www.nagios.org/

centreon 底层使用的就是nagios。是一个nagios整合版软件。官网地址: https://www.centreon.com/

ganglia 设计用于测量数以千计的节点,资源消耗非常小。官网地址: http://ganglia.info/

open-falcon 小米发布的运维监控软件,高效率,高可用。时间较短,用户基数小。官网地址: http://open-falcon.org/

zabbix 跨平台,画图,多条件告警,多种API接口。使用基数特别大。官网地址: https://www.zabbix.com/

prometheus 基于时间序列的数值数据的容器监控解决方案。官网地址: https://prometheus.io/

综合分析:Prometheus比较适合公司的监控需求

一、普罗米修斯概述

Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。

https://prometheus.io/docs/introduction/overview/

二、时间序列数据

1、什么是序列数据

时间序列数据 (TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。

应用的场景很多, 如:

无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数据记录下来做分析。

某一个地区的各车辆的行驶轨迹数据

传统证券行业实时交易数据

实时运维监控数据等

2、时间序列数据特点

性能好

关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。

存储成本低

高效的压缩算法,节省存储空间,有效降低IO

Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)

3、Prometheus的主要特征

多维度数据模型

灵活的查询语言

不依赖分布式存储,单个服务器节点是自主的

以HTTP方式,通过pull模型拉去时间序列数据

也可以通过中间网关支持push模型

通过服务发现或者静态配置,来发现目标服务对象

支持多种多样的图表和界面展示

4、普罗米修斯原理架构图

Nnqy6rF.png!web

普罗米修斯原理架构图

三、实验环境准备

eeqaqaE.png!web

环境准备

1、静态ip(要求能上外网)

2、主机名

各自配置好主机名

# hostnamectl set-hostname --static server.cluster.com

三台都互相绑定IP与主机名

# vim /etc/hosts

10.1.1.13  server.cluster.com

10.1.1.14  agent1.cluster.com

10.1.1.15  grafana.cluster.com

3. 时间同步(时间同步一定要确认一下)

4. 关闭防火墙,selinux

# systemctl stop firewalld

# systemctl disable firewalld

# iptables -F


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK