一、基础知识
目前在服务器监控领域,除了老牌的Zabbix和nagios外,Prometheus和Grafana也是目前较为流行的监控方案,本文介绍Prometheus和Grafana的配置方法。
1、什么是Grafana?
Grafana是一个图形化工具,它可以从很多种数据源(例如Prometheus)中读取数据信息,使用很漂亮的图表来展示数据,并且有很多开源的dashborad可以使用,制作自己的dashboard也很简单,总之,可以快速地搭建起一个非常精美的监控平台。
2、什么是TSDB?
TSDB(Time Series Database)时间序列数据库,简单来说就是存储随时间变化的数据的数据库。什么是随时间变化的数据呢?举个简单的例子,比如,CPU使用率,典型的随时间变化的量,这一秒是50%,下一秒也许就是80%了。或者是温度,今天是20度,明天可能就是18度了。
常见的TSDB(时间序列数据库):influxDB,RRDtool,Graphite,OpenTSDB,Kdb+,Druid,KairosDB,Prometheus等。
3、什么是Prometheus?
Prometheus(中文名:普罗米修斯)是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation),将Prometheus纳入其下第二大开源项目。
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
Prometheus获取数据的策略是Pull而不是Push,也就是说,它会自己去抓取,而不用你来推送。抓取使用的是HTTP协议,在配置文件中指定目标程序的端口,路径及间隔时间即可。这也就意味着任何程序想要使用Prometheus存储数据都很简单,定义一个HTTP接口即可。
4、什么是exporter?
prometheus可以理解为一个数据库+数据抓取工具,工具从各处抓来统一的数据,放入prometheus这一个时间序列数据库中。那如何保证各处的数据格式是统一的呢?就是通过这个exporter. Exporter是一类数据采集组件的总称。Exporter负责从目标处搜集数据,并将其转化为Prometheus支持的格式,它开放了一个http接口(以便Prometheus来抓取数据)。与传统的数据采集组件不同的是,Exporter并不向中央服务器发送数据,而是等待中央服务器(如Prometheus等)主动前来抓取。
Prometheus提供多种类型的Exporter用于采集各种不同服务的运行状态。目前支持的有数据库、硬件、消息中间件、存储系统、HTTP服务器、JMX等。https://github.com/prometheus这里有很多写好的exporter,我们可以直接使用。本文使用的node-exporter是用来收集节点上的metrics监控数据的。
二、实验环境(rhel7.3版本)
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
---|---|
server1(prometheus,Grafana) | 172.25.83.1 |
server2(node_exporter(监听TCP 9100 端口)) | 172.25.83.2</ |