使用Prometheus和Grafana构建集群监控系统(一): 配置与搭建

栏目: 数据库 · 发布时间: 6年前

内容简介:目前在服务器监控领域, 除了老牌的Zabbix和nagios外, Prometheus和Grafana也是目前较为流行的监控方案, 本文介绍Prometheus和Grafana的配置方法.Grafana是一个图形化工具, 它可以从很多种数据源(例如Prometheus)中读取数据信息, 使用很漂亮的图表来展示数据, 并且有很多开源的dashborad可以使用, 制作自己的dashboard也很简单, 总之, 可以快速地搭建起一个高逼格的监控平台TSDB(Time Series Database)时间序列数

1, 基础知识

目前在服务器监控领域, 除了老牌的Zabbix和nagios外, Prometheus和Grafana也是目前较为流行的监控方案, 本文介绍Prometheus和Grafana的配置方法.

什么是Grafana?

Grafana是一个图形化工具, 它可以从很多种数据源(例如Prometheus)中读取数据信息, 使用很漂亮的图表来展示数据, 并且有很多开源的dashborad可以使用, 制作自己的dashboard也很简单, 总之, 可以快速地搭建起一个高逼格的监控平台

什么是TSDB?

TSDB(Time Series Database)时间序列数据库, 简单来说就是存储随时间变化的数据的数据库. 什么是随时间变化的数据呢?举个简单的例子, 比如, CPU使用率, 典型的随时间变化的量, 这一秒是50%, 下一秒也许就是80%了. 或者是温度, 今天是20度, 明天可能就是18度了.

常见的TSDB(时间序列数据库): influxDB, RRDtool, Graphite, OpenTSDB, Kdb+, Druid, KairosDB, Prometheus等.

什么是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接口即可.

什么是exporter?

prometheus可以理解为一个数据库+数据抓取工具, 工具从各处抓来统一的数据, 放入prometheus这一个时间序列数据库中. 那如何保证各处的数据格式是统一的呢?就是通过这个exporter. Exporter是一类数据采集组件的总称. Exporter负责从目标处搜集数据, 并将其转化为Prometheus支持的格式, 它开放了一个http接口(以便Prometheus来抓取数据). 与传统的数据采集组件不同的是, Exporter并不向中央服务器发送数据, 而是等待中央服务器(如Prometheus等)主动前来抓取.

Prometheus提供多种类型的Exporter用于采集各种不同服务的运行状态. 目前支持的有数据库、硬件、消息中间件、存储系统、HTTP服务器、JMX等. https://github.com/prometheus这里有很多写好的exporter, 我们可以直接使用. 本文使用的node-exporter是用来收集节点上的metrics监控数据的 .

2, 环境准备

本文准备了3台机器, 分别是

192.168.33.10, 安装prometheus及Grafana

192.168.33.11, 安装node_exporter(监听TCP 9100 端口)

192.168.33.12, 安装node_exporter(监听TCP 9100 端口)

3, 安装node_exporter

$ wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz

$ tar zxvf node_exporter-0.16.0.linux-amd64.tar.gz

$ cd node_exporter-0.16.0.linux-amd64

$ nohup ./node_exporter-0.16.0.linux-amd64/node_exporter &

这里我们也可以把node_exporter写成systemd服务

$ sudo mv node_exporter-0.16.0.linux-amd64 /usr/local/node_exporter

$ sudo groupadd node_exporter
$ sudo useradd -g node_exporter -m -d /usr/local/node_exporter -s /sbin/nologin node_exporter

$ sudo chown -R node_exporter:node_exporter /usr/local/node_exporter

$ sudo vim /etc/systemd/system/node_exporter.service
[Unit]
Description=Node_exporter
DefaultDependencies=no

[Service]
Type=simple
User=node_exporter
RemainAfterExit=yes
ExecStart=/usr/local/node_exporter/node_exporter --collector.textfile.directory=/usr/local/node_exporter/ --web.listen-address=:9100
Restart=on-failure

[Install]
WantedBy=multi-user.target

$ sudo systemctl start node_exporter.service
$ sudo systemctl enable node_exporter.service

4, 安装prometheus

$ wget https://github.com/prometheus/prometheus/releases/download/v2.4.3/prometheus-2.4.3.linux-amd64.tar.gz

$ tar zxvf prometheus-2.4.3.linux-amd64.tar.gz

$ cd prometheus-2.4.3.linux-amd64

$ vim prometheus.yml    #添加2个新的job
global:
  scrape_interval:     15s
  evaluation_interval: 15s
  # scrape_timeout is set to the global default (10s).
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093
rule_files:

scrape_configs:

  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'linux1'
    static_configs:
      - targets: ['192.168.33.11:9100']
        labels:
          instance: server1
  - job_name: 'linux2'
    static_configs:
      - targets: ['192.168.33.12:9100']
        labels:
          instance: server2
$ nohup ./prometheus &    #运行Prometheus

这里我们可以写成systemd服务

$ cd ..
$ sudo mv prometheus-2.4.3.linux-amd64 /usr/local/prometheus

$ sudo groupadd prometheus
$ sudo useradd -g prometheus -m -d /usr/local/prometheus -s /sbin/nologin prometheus

$ sudo chown -R prometheus:prometheus /usr/local/prometheus

$ sudo vim /etc/systemd/system/prometheus.service  #写入如下内容
[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target

Prometheus自带一个比较简单的Web, 可以查看表达式搜索结果、报警配置、prometheus配置,exporter状态等. 自带Web默认在http://ip:9090.

5, 安装配置Grafana

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

$ wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.3.0_amd64.deb 
$ sudo dpkg -i grafana_5.3.0_amd64.deb 

$ sudo systemctl status grafana-server    #应该是默认进入了运行的状态

$ sudo systemctl enable grafana-server

Grafana默认监听在3000端口上, 所以我们可以打开http://ip:3000来访问Grafana页面, 初始登陆用户名和密码为admin/admin, 第一次登陆时, 可能会要求你设置一个新密码.

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

使用Prometheus和Grafana构建集群监控系统(一): 配置与搭建

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

用户思维+:好产品让用户为自己尖叫

用户思维+:好产品让用户为自己尖叫

[美] Kathy Sierra / 石航 / 人民邮电出版社 / 2017-9 / 69.00元

畅销产品与普通产品的本质区别是什么?若没有巨额预算、不爱营销噱头、不开奢华的产品发布会,如何打造可持续成功的产品?本书针对上述问题提出了新颖的观点:用户并不关心产品本身有多棒,而是关心使用产品时自己有多棒。作者利用其多年的交互设计经验,生动阐释了这一观点背后的科学。可贵的是,本书并不止步于解释“为什么”,还清晰呈现了“怎么做”。 本书风格活泼、图文并茂,其对话式内容既引人入胜,又引人深思,适......一起来看看 《用户思维+:好产品让用户为自己尖叫》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具