CentOS7部署Prometheus
部署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等。
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 mainimport "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的更多相关文章
- centos7部署Prometheus+Grafana
一.安装Prometheus Server 请从 Prometheus 官方下载 linux 版的二进制压缩包.注意在下载前要选择操作系统为 linux. 执行下面的命令把 prometheus se ...
- [原]CentOS7部署osm2pgsql
转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 部署Postgresql和部署PostGis请参考前两篇文章 本文主要参考GitHub上osm ...
- centos7 部署ssserver
centos7 部署shadowsocks服务端 为什么要选centos7? 以后centos7 肯定是主流,在不重要的环境还是尽量使用新系统吧 centos7 的坑 默认可能会有firewall 或 ...
- kubernetes之监控Operator部署Prometheus(三)
第一章和第二章中我们配置Prometheus的成本非常高,而且也非常麻烦.但是我们要考虑Prometheus.AlertManager 这些组件服务本身的高可用的话,成本就更高了,当然我们也完全可以用 ...
- k8s部署prometheus
https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content ...
- centos7 部署 docker compose
=============================================== 2019/4/10_第1次修改 ccb_warlock == ...
- centos7 部署 docker ce
=============================================== 2019/4/9_第1次修改 ccb_warlock === ...
- centos7 部署 open-falcon 0.2.0
=============================================== 2019/4/29_第3次修改 ccb_warlock 更新 ...
- centos7 部署 docker、shipyard
=============================================== 2019/4/9_第3次修改 ccb_warlock 更新说 ...
随机推荐
- 关于通用Mapper new Example使用记录
关于通用MapperExample使用记录 环境准备 需要集成 mybatis 的 generator 插件,方便自动生成 实体类和 mapper 类,还可以生成xml,不过一般我们都不用 xml b ...
- 高并发HHTP实践
当今,正处于互联网高速发展的时代,每个人的生活都离不开互联网,互联网已经影响了每个人生活的方方面面.我们使用淘宝.京东进行购物,使用微信进行沟通,使用美图秀秀进行拍照美化等等.而这些每一步的操作下面, ...
- RabbitMQ之消息模式2
消费端限流 什么是消费端的限流? 假设一个场景,首先,我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法 ...
- hibernate01
什么是hibernate ORM框架/持久层框架 jdbc的一个框架 object reference mapping 通过管理对象来改变数据库中的数据 通过管理对象来操作数据库 hibernate的 ...
- ☕【Java技术指南】「并发编程专题」Fork/Join框架基本使用和原理探究(基础篇)
前提概述 Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行. 我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一 ...
- 20210803 noip29
考场 第一次在 hz 考试.害怕会困,但其实还好 看完题感觉不太难,估计有人 AK. T3 比较套路,没办法枚举黑点就从 LCA 处考虑,在一个点变成黑点时计算其他点和它的 LCA 的贡献,暴力跳父亲 ...
- 性能测试必备命令(4)- pstree
性能测试必备的 Linux 命令系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1819490.html 介绍 显示进程树 语法格式 ps ...
- [AtcoderABC200E]Patisserie
[AtcoderABC200E]Patisserie 题面翻译 对于一个三元组\((i,j,k)\) 我们对它按如下要求进行升序排序: 第一关键词 \(i + j + k\) 即三者总和 第二关键词 ...
- CodeForce-762B USB vs. PS/2(贪心)
USB vs. PS/2 CodeForces - 762B 题意:有三种电脑,分别有a.b.c个,第一种只有USB接口,第二种只有PS/2接口,第三种有两种接口,有m个鼠标,告诉你价钱和接口类型,问 ...
- 【PHP数据结构】栈和队列的应用
通过栈和队列的学习,我们似乎会感觉到其实数据结构还是非常简单的嘛.当然,这只是一个开始,我们从顺序表.链表开始,到现在的栈和队列,其实都是为了将来在铺路.在树和图的遍历算法中,都可以见到栈和队列的身影 ...



