部署Prometheus监控报警系统

一、Prometheus介绍

  Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB);Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本;2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目;Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据),相比功能更完善、更全面;Prometheus性能也足够支撑上万台规模的集群

  1.1  Prometheus的特点

  • 多维度数据模型。
  • 灵活的查询语言。
  • 不依赖分布式存储,单个服务器节点是自主的。
  • 通过基于HTTP的pull方式采集时序数据。
  • 可以通过中间网关进行时序列数据推送。
  • 通过服务发现或者静态配置来发现目标服务对象。
  • 支持多种多样的图表和界面展示,比如Grafana等。

  官网地址:https://prometheus.io/

  1.2  架构图


  1.3  基本原理

    Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

  1.4  服务过程

  • Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。
  • Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
  • Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。
  • PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
  • Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

  1.5  三大套件

  • Server 主要负责数据采集和存储,提供PromQL查询语言的支持
  • Alertmanager 警告管理器,用来进行报警
  • Push Gateway 支持临时性Job主动推送指标的中间网关

二、基础环境

环境/组件       版本       下载地址                                
操作系统 CentOS7   http://archive.kernel.org/centos-vault/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
Prometheus 2.17.1   https://prometheus.io/download/#prometheus
go 1.14.2 https://golang.org/dl/                      
Grafana 6.7.2 https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm

三、CentOS组件安装、更新及配置 

  3.1  防火墙设置

1 systemctl stop firewalld                              //关闭防火墙
2 systemctl disable firewalld //关闭防火墙自启

  3.2  Selinux设置

1 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config    //关闭Selinux
2 sestatus //查询Selinux状态(需重启后查询)

  3.3  组件安装

1 yum install -y net-tools             //安装Ifconfig工具
2 yum install bash-completion -y //安装命令补全工具
3 yum -y install lrzsz //安装文件管理工具

  3.4  更新系统及源码库

1 yum -y update && yum -y upgrade        

四、Prometheus服务端安装

  4.1  安装Go环境

CentOS7安装Go环境

 

下载go(我的当前目录是/data/work)
$wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz
$tar -xvf go1.10.1.linux-amd64.tar.gz

设置环境变量
$vim /etc/profile
添加
export GOROOT=/data/work/go
export GOPATH=/data/work/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存
esc
:wq

测试环境

创建目录 /data/work/gopath/src

$mkdir helloworld

$cd helloworld

$vim main.go

输入

1
2
3
4
5
6
7
package main
 
import "fmt"
 
func main() {
    fmt.Println("Hello, World!")
}

$go run ./main.go

  Prometheus是由go语言开发的,安装Prometheus之前需要先安装go环境

1 cd /opt                //进入opt文件夹目录下
2 rz //上传go安装文件(下图中为上传了本次部署需要用到的所有安装包)

1 tar -xvf go1.14.2.linux-amd64.tar.gz                    //解压缩Go安装包

  4.2  配置环境变量

添加/opt/go/bin目录到PATH变量中(添加到/etc/profile 或$HOME/.profile都可以)

1 vi /etc/profile                     //编辑Profile文件

1 export GOROOT=/opt/go                 //添加在最后一行
2 export PATH=$PATH:$GOROOT/bin

1 source /etc/profile

1 go version                      //检查Go版本号(如果显示版本号,则Go环境安装成功)

五、安装Prometheus

1 tar -xvf prometheus-2.17.1.linux-amd64.tar.gz             //解压缩Prometheus安装包
2 mv prometheus-2.17.1.linux-amd64/ prometheus //移动文件至prometheus文件夹

1 cd prometheus                            //进入prometheus文件夹
2 ./prometheus --config.file=/prometheus/prometheus.yml & //启动prometheus

1 浏览器打开:http://12.172.1.15:9090       //正常打开说明安装没问题

1 vi /etc/systemd/system/prometheus.service          //创建prometheus服务
将以下内容写入文件中:
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System [Service]
ExecStart=/prometheus/prometheus \
--config.file=/prometheus/prometheus.yml \
--web.listen-address=:9090
Restart=on-failure
[Install]
WantedBy=multi-user.target

1 systemctl daemon-reload                        //启动服务
2 systemctl enable prometheus //设置开机自启动
3 systemctl start prometheus //启动服务
4 systemctl status prometheus //检查Prometheus服务开启状态

六、安装Gafana

  Prometheus自带的监控页面显示的内容没有那么直观,需要安装grafana来使监控数据看起来更加直观

  6.1  安装Grafana软件包(之前已上传至OPT文件夹)

1 cd /opt                            //进入OPT文件夹下

1 yum localinstall grafana-6.7.2-1.x86_64.rpm -y        //YUM本地安装Grafana

  6.2  启动Grafana

1 systemctl daemon-reload
2 systemctl enable grafana-server.service
3 systemctl start grafana-server.service

  6.3  访问Grafana

  浏览器访问http://12.172.1.15:3000即可打开grafana页面,默认用户名密码都是admin,初次登录会要求修改默认的登录密码

七、添加Prometheus数据源

  7.1  点击主界面“Add data source”

  7.2  选择Prometheus

  7.3  填写数据源设置项

    URL处填写Prometheus服务所在的IP地址,此处我们将Prometheus服务与Grafana安装在同一台机器上,直接填写localhost即可

    点击下方 【Save & Test】按钮,保存设置

  7.4  Dashboards页面选择“Prometheus 2.0 Stats”

  7.5  查看监控

  点击Grafana图标,切换到Grafana主页面,然后点击Home,选择我们刚才添加的Prometheus 2.0 Stats,即可看到监控数据

CentOS7部署Prometheus的更多相关文章

  1. centos7部署Prometheus+Grafana

    一.安装Prometheus Server 请从 Prometheus 官方下载 linux 版的二进制压缩包.注意在下载前要选择操作系统为 linux. 执行下面的命令把 prometheus se ...

  2. [原]CentOS7部署osm2pgsql

    转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 部署Postgresql和部署PostGis请参考前两篇文章 本文主要参考GitHub上osm ...

  3. centos7 部署ssserver

    centos7 部署shadowsocks服务端 为什么要选centos7? 以后centos7 肯定是主流,在不重要的环境还是尽量使用新系统吧 centos7 的坑 默认可能会有firewall 或 ...

  4. kubernetes之监控Operator部署Prometheus(三)

    第一章和第二章中我们配置Prometheus的成本非常高,而且也非常麻烦.但是我们要考虑Prometheus.AlertManager 这些组件服务本身的高可用的话,成本就更高了,当然我们也完全可以用 ...

  5. k8s部署prometheus

    https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content ...

  6. centos7 部署 docker compose

    =============================================== 2019/4/10_第1次修改                       ccb_warlock == ...

  7. centos7 部署 docker ce

    =============================================== 2019/4/9_第1次修改                       ccb_warlock === ...

  8. centos7 部署 open-falcon 0.2.0

    =============================================== 2019/4/29_第3次修改                       ccb_warlock 更新 ...

  9. centos7 部署 docker、shipyard

    =============================================== 2019/4/9_第3次修改                       ccb_warlock 更新说 ...

随机推荐

  1. 接口测试进阶接口脚本使用--apipost(预/后执行脚本)

    预执行脚本的作用时间 预执行脚本是一个请求发送前执行的脚本. 预执行脚本的作用 预执行脚本可以完成以下作用: 编写JS函数等实现复杂计算: 变量的打印 定义.获取.删除.清空环境变量 定义.获取.删除 ...

  2. 阿里云服务器上部署java项目(安装mysql)

    安装mysql步骤如下: 1.安装MySQL官方的yum repository: wget -i -c http://dev.mysql.com/get/mysql57-community-relea ...

  3. Java变量命名规范

    java命名规范 所有方法.变量.类名:见名知意 类成员变量:首字母小写.驼峰原则: 例如:lastName 第一个单词首字母小写,其余首字母大写 局部变量:首字母小写.驼峰原则 类名: 首字母小写. ...

  4. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  5. vue+element+echarts柱状图+列表

    前端由vue+element搭建框架,引入vue和element的index.js和css就可以写页面: 页面和js可以echarts官网实例看下都是有的,主要看下如何动态赋值: 柱状图和列表: &l ...

  6. MySQL实战45讲(21--25)-笔记

    21 | 为什么我只改一行的语句,锁这么多? 加锁规则里面:包含了两个"原则".两个"优化"和一个"bug". 原则 1:加锁的基本单位是 ...

  7. FinallShell连接Centos虚拟机

    1.虚拟机下输入ip addr查看网络状态,保证ens33下有ip 2.若没有IP的解决办法 方法一················· 1.输入 cd /etc/sysconfig/network-s ...

  8. Sentry 监控 - Discover 事件大数据查询分析引擎

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  9. Vue3的其他属性和API函数

    customRef() 自定义Ref函数实现Ref()的相关功能 1 <script> 2 import { ref customRef} from 'vue' 3 4 function ...

  10. 在PHP中如何为匿名函数指定this?

    在之前的文章中,我们已经学习过匿名函数的使用,没有看过的小伙伴可以进入传送门先去了解下闭包匿名函数的用法,传送:还不知道PHP有闭包?那你真OUT了. 关于闭包匿名函数,在JS中有个很典型的问题就是要 ...