Linux下使用Prometheus和Grafana构建集群监控系统:配置与搭建

一、基础知识

目前在服务器监控领域,除了老牌的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
server3(node_exporter(监听TCP 9100 端口)) 172.25.83.3

三、使用Prometheus和Grafana构建集群监控系统:配置与搭建


 

配置server2:

1、安装node_exporter ,并进行解压

[root@server2 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz


[root@server2 ~]# ls
node_exporter-0.16.0.linux-amd64.tar.gz
[root@server2 ~]# tar zxf node_exporter-0.16.0.linux-amd64.tar.gz 
[root@server2 ~]# ls
node_exporter-0.16.0.linux-amd64  node_exporter-0.16.0.linux-amd64.tar.gz

2、启动node_exporter,并查看9100端口是否存在

[root@server2 ~]# cd node_exporter-0.16.0.linux-amd64
[root@server2 node_exporter-0.16.0.linux-amd64]# nohup ./node_exporter &
[1] 2072
[root@server2 node_exporter-0.16.0.linux-amd64]# nohup: ignoring input and appending output to ‘nohup.out’   #直接敲击空格,退出即可。

[root@server2 node_exporter-0.16.0.linux-amd64]# netstat -antulpe | grep 9100
tcp6       0      0 :::9100                 :::*                    LISTEN      0          23219      2072/./node_exporte 

配置server3:(配置同server2)

配置server1:

1、下载Prometheus对应的安装包并进行安装

[root@server1 ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.4.3/prometheus-2.4.3.linux-amd64.tar.gz


[root@server1 ~]# ls
prometheus-2.4.3.linux-amd64.tar.gz
[root@server1 ~]# tar zxf prometheus-2.4.3.linux-amd64.tar.gz 
[root@server1 ~]# ll
total 87896
drwxr-xr-x 4 3434 3434      132 Oct  4  2018 prometheus-2.4.3.linux-amd64
-r--r--r-- 1 root root 35229462 Apr 21 21:02 prometheus-2.4.3.linux-amd64.tar.gz

2、编写prometheus.yml文件

[root@server1 ~]# cd prometheus-2.4.3.linux-amd64
[root@server1 prometheus-2.4.3.linux-amd64]# ls
console_libraries  LICENSE  prometheus      promtool
consoles           NOTICE   prometheus.yml


[root@server1 prometheus-2.4.3.linux-amd64]# vim prometheus.yml    #添加2个新的job。其中31-41行是新添加的内容
  1 # my global config
  2 global:
  3   scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  4   evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  5   # scrape_timeout is set to the global default (10s).
  6 
  7 # Alertmanager configuration
  8 alerting:
  9   alertmanagers:
 10   - static_configs:
 11     - targets:
 12       # - alertmanager:9093
 13 
 14 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
 15 rule_files:
 16   # - "first_rules.yml"
 17   # - "second_rules.yml"
 18 
 19 # A scrape configuration containing exactly one endpoint to scrape:
 20 # Here it's Prometheus itself.
 21 scrape_configs:
 22   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
 23   - job_name: 'prometheus'
 24 
 25     # metrics_path defaults to '/metrics'
 26     # scheme defaults to 'http'.
 27 
 28     static_configs:
 29     - targets: ['localhost:9090']
 30 
 31   - job_name: 'linux1'
 32     static_configs:
 33       - targets: [172.25.83.2:9100]
 34         labels:
 35           instance: server1
 36 
 37   - job_name: 'linux2'
 38     static_configs:
 39       - targets: [172.25.83.3:9100]
 40         labels:
 41           instance: server2

3、启动prometheus服务,并查看监听端口9090是否存在

[root@server1 prometheus-2.4.3.linux-amd64]# pwd
/root/prometheus-2.4.3.linux-amd64
[root@server1 prometheus-2.4.3.linux-amd64]# nohup ./prometheus &   #直接敲击空格,退出即可。
[1] 2326
[root@server1 prometheus-2.4.3.linux-amd64]# nohup: ignoring input and appending output to ‘nohup.out’


[root@server1 prometheus-2.4.3.linux-amd64]# netstat -antulpe | grep 9090
tcp        0      0 127.0.0.1:39702         127.0.0.1:9090          ESTABLISHED 0          27535      2326/./prometheus   
tcp6       0      0 :::9090                 :::*                    LISTEN      0          27533      2326/./prometheus   

4、测试:

Prometheus自带一个比较简单的Web(监听9090端口)可以查看表达式搜索结果/报警配置/prometheus配置/exporter状态等。

访问http://ip:9090的界面如下图:

在Status菜单下,有Configuration,Rule,Targets等。

(1)Status——>Configuration展示Promethis.yml配置,如下:

(2)Status——>Targets展示监控具体的监控目标

(3)绘图:

访问:http://ip:9090/metrics,查看从exporter具体能抓到的数据,如下:

访问http://ip:9090,在输入框任意输入1个exporter能抓取到的值(也可以在Execute后面的下拉框中进行选择),点击“Execute”与“Graph”按扭,即可见相应抓取数据的图形,同时可对时间与unit作调整,如下:我这里填入的是(go_goroutines)

至此Promethus也就搭建安装部署完成了,下面安装部署Grafana

安装配置Grafana

http://docs.grafana.org/installation/这里提供了在不同系统上安装Grafana的方法,此处提供redhat的rpm包的安装方法(官方安装文档在此https://grafana.com/grafana/download?platform=linux)。

1、下载Grafana对应的安装包并进行安装

[root@server1 ~]# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2-1.x86_64.rpm

[root@server1 ~]# yum install grafana-4.6.2-1.x86_64.rpm -y

2、配置文件

配置文件位于/etc/grafana/grafana.ini,这里暂时保持默认配置即可。

3、启动grafana-server服务,并查看监听端口3000是否存在

[root@server1 ~]# systemctl start grafana-server
[root@server1 ~]# netstat -antulpe | grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      996        28756      2451/grafana-server

4、添加数据源

(1)登陆

访问:http://ip:3000,默认帐号/密码:admin/admin

(2)添加数据源

在登陆首页,点击“Add  data  source”按钮,跳转到添加数据源页面,配置如下:

Name:prometheus(该名字随意给)

Type:Prometheus

URL:http://localhost:9090

Access:proxy

取消default的勾选,其余默认,点击“Add”,如下:

在“Dashboards”页签下有“import”自带的模板,如下:

点击“Add”之后,显示的界面

当看到datasource is working的提示时候,表明你的prometheus工作是正常的。
接着回到首页,添加一个dashboard,配置单个指标的可视化监控面板:

点击“New  dashboard”

点击“Graph”

点击“Panel  Title”——>“Edit”

在default的下拉菜单中选择之前自己添加的资源的名字(我这里是prometheus),并在下面的横栏中填入需要监控的目标,具体的可以监控的指标在 Prometheus 的首页看到,即 http:/ip:9090/graph

在Execute后面的下拉菜单中。

编写之后的页面如下:

点击后面的“小眼睛“进行查看即可

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/89423354