语言Grafana+Prometheus打造全方位立体监控网

前言

正文主要介绍如何使用Grafana和Prometheus以及node_exporter对Linux服务器性能进行监督。下面两张图分别是少数玉服务器监控信息:

服务器A

语言 1

服务器B

语言 2

平等、AMD(异步模块定义)

AMD(异步模块定义)是RequireJS在拓宽过程中对模块定义的规范化产出。AMD是一个概念,RequireJs是本着斯定义的贯彻。比如javascript语言是针对性ECMAscript语言的落实,ECMAscript是一个团组织,RequireJS是者团队之下制定的一律效仿脚本语言。

// 异步的动态的加载js文件
// 依赖别的库,通过数组形式加载库进来['package/lib']
## define定义,依赖lib库,通过['package/lib']加载这个库,通过回调函数接受lib参数,可以得到lib里面的一下方法
define(['package/lib'], function(lib){
    function foo(){
        lib.log("hello world!")
    }
    return {    // return输出
        foo:foo
    }
})
引用的话通过require就可以加载。就是异步模块定义,称为依赖前置(依赖或需要的时候在最上面定义好)

概述

Prometheus是一个开源之劳动监督体系,它通过HTTP协议于远程的机械收集数据并储存在该地的时序数据库及。

  • 多维数据模型(时序列数据由metric名和平等组key/value组成)
  • 在多维度上灵活的询问语言(PromQl)
  • 不依靠分布式存储,单主节点工作.
  • 由此根据HTTP的pull方式收集时序数据
  • 可以经过push gateway进行经常序列数据推送(pushing)
  • 好透过劳动意识或静态配置去赢得要募的靶子服务器
  • 多可视化图表及仪表盘支持

Prometheus通过安装在长距离机器及之exporter来收集监控数据,后面我们以采用及node_exporter收集体系数据。

架构

语言 3

Grafana
是一个开箱即用底可视化工具,具有功能齐全的度量仪表盘和图纸编辑器,有活加上的图形化选项,可以勾兑多种作风,支持多单数据源特点。

语言 4

亚、CMD(同步模块定义)

CMD(同步模块定义)是SeaJS(淘宝团队)在拓宽过程中对模块定义的规范化产出。

// 所有模块都通过define来定义
define(function(require, exports, module){
    // 通过require引入依赖
    var $ = require('jquery');
    var Spinning = require('./spinning');
})

依赖就近(什么时候使用,就什么时候引进来),即用即返回

 

架构

语言 5

三、CommonJS规范

CommonJS规范-module.exports  
是服务端nodeJs后端支持之正规,前端浏览器不支持CommonJS规范。

是服务端进行模块划分的方式
exports.area = function(r){
    return Math.PI * r * r;
}
exports.circumference = function(r){
    return 2 * Math.PI * r;
}
两种输出方式:
module.exports  没有名字的命名输出
exports   带有有名字的输出

 

安装

四、ES6特性 export/import 导出/导入

export default{}  // 默认导出
import router from './router' // 导入

export function formatDate(date, fmt) {} // 向浏览器暴露这个方法
import { format } from 'common/js/utils' // 导入

export let sum = (x,y)=>{ return x+y }
import * as util from './util'    // 通过*封装起来
console.log(`sum:${util.sum(1,6)}`)

相当于:
define('util',function(){
    return {
        sum:function(){

        },
        minus:function(){

        }
    }
})

methods:{
    increment(){
        this.$emit("incre");
        import('./../util')   // 异步加载  与require('...')一样的
    }
}

 

Exporter

下载并解压:

#下载
wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.15.0.linux-amd64.tar.gz -O node_exporter-0.15.0.linux-amd64.tar.gz
# 可自定义解压目录
tar -xvf node_exporter-0.15.0.linux-amd64.tar.gz

运行node_exporter:
## 后台运行 ./node_exporter &

Prometheus

下载地址:https://prometheus.io/download

施行以下命令:

## 下载
wget https://github.com/prometheus/prometheus/releases/download/v2.0.0-rc.3/prometheus-2.0.0-rc.3.linux-amd64.tar.gz
## 可自定义解压目录
tar -xvf prometheus-2.0.0-rc.3.linux-amd64.tar.gz

配置prometheus,vi prometheus.yml

global:
  scrape_interval:     15s
  evaluation_interval: 15s

  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  - job_name: linux1
    static_configs:
      - targets: ['192.168.1.120:9100']
        labels:
          instance: sys1

  - job_name: linux2
    static_configs:
      - targets: ['192.168.1.130:9100']
        labels:
          instance: sys2

IP对应的凡咱内网的服务器,端口则是对应之exporter的监听端口。

运行Prometheus

./prometheus 
level=info ts=2017-11-07T02:39:50.220187934Z caller=main.go:215 msg="Starting Prometheus" version="(version=2.0.0-rc.2, branch=HEAD, revision=ce63a5a8557bb33e2030a7756c58fd773736b592)"
level=info ts=2017-11-07T02:39:50.22025258Z caller=main.go:216 build_context="(go=go1.9.1, user=root@a6d2e4a7b8da, date=20171025-18:42:54)"
level=info ts=2017-11-07T02:39:50.220270139Z caller=main.go:217 host_details="(Linux 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 iZ2ze74fkxrls31tr2ia2fZ (none))"
level=info ts=2017-11-07T02:39:50.223171565Z caller=web.go:380 component=web msg="Start listening for connections" address=0.0.0.0:9090
......

启航成功之后咱们可由此Prometheus内置了web界面访问,http://ip:9090
,如果起以下界面,说明配置成功

语言 6

Grafana

执行以下安装命令:

## 安装依赖grafana运行需要go环境
yum install  go -y
## 安装 grafana
yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1-1.x86_64.rpm -y

安包信息:

次进制文件: /usr/sbin/grafana-server
init.d 脚本: /etc/init.d/grafana-server
环境变量文件: /etc/sysconfig/grafana-server
配备文件: /etc/grafana/grafana.ini
启动项: grafana-server.service
日记文件:/var/log/grafana/grafana.log
默认配置的sqlite3数据库:/var/lib/grafana/grafana.db

汝可以实行以下启动命令:

service grafana-server start

起步grafana,并安装开机启动:

systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server.service

劳动器端图像(PNG)渲染是可选的成效,但在共享可视化时很有因此,例如当警报通知被。
假使图像缺少文本,请确保已经安装字体包。

yum install fontconfig
yum install freetype*
yum install urw-fonts

拜Grafana通过Nginx代理,默认登录用户名密码:admin/admin,需立即修改。

server {
        listen       80;
        server_name  grafana.52itstyle.com;

        charset utf-8;

        location / {
            default_type text/html;
            proxy_pass http://127.0.0.1:3000;
        }

}

编辑配置文件/etc/grafana/grafana.ini
,修改dashboards.json段得到下零星个参数的价:

[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards

安装仪表盘JSON模版:

git clone https://github.com/percona/grafana-dashboards.git
cp -r grafana-dashboards/dashboards /var/lib/grafana/

末了,通过service grafana-server
start命令启动服务,访问地址:http://grafana.52itstyle.com

语言 7

接下来于Data Sources选项中添加数据源:

语言 8

加上成功以后,我们便得查到文章开始的效应图了。

总结

谈话道理,这同一套东西还是异常强劲的,各种开源组间一整合圆搭建起一致拟监督网。当然了以上就是系的一个监察,Grafana以及exporter组间还得实现对Nginx、MySql、Redis以及MongDB的督查。

监督无是目的,目的是出新问题能够及时发现并解决问题。

Grafana+Prometheus系统监控之邮件报警功能

Grafana+Prometheus系统监控之锁钉报警功能

Grafana+Prometheus系统监控之Redis

Grafana+Prometheus系统监控之MySql

参考资料

https://grafana.com/

https://prometheus.io/

https://github.com/prometheus

https://github.com/prometheus/node_exporter

https://github.com/percona/grafana-dashboards

https://www.percona.com/blog/2016/02/29/graphing-mysql-performance-with-prometheus-and-grafana/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图