内容简介:目前在服务器监控领域, 除了老牌的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的界面如下图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 监控系统 WGCLOUD,新增集群能力
- 使用Prometheus和Grafana构建集群监控系统(二): 一些metric的计算语句
- 【监控系统】配合Graphite使用的报警系统
- WGCLOUD 监控系统更新,集成 ES 在线监控工具
- 告警系统主脚本,告警系统配置文件,告警系统监控项目
- WGCLOUD 监控系统更新,进程监控模块 bug 修复
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
High Performance JavaScript
Nicholas C. Zakas / O'Reilly Media / 2010-4-2 / USD 34.99
If you're like most developers, you rely heavily on JavaScript to build interactive and quick-responding web applications. The problem is that all of those lines of JavaScript code can slow down your ......一起来看看 《High Performance JavaScript》 这本书的介绍吧!