prometheus的介绍&环境搭建配置服务启动监控

一、prometheus的介绍&环境搭建配置

1.prometheus+grafana构成
prometheus的介绍&环境搭建配置服务启动监控_第1张图片
2.功能简介

Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。
主要具有如下功能:
多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。
灵活的查询语句(PromQL)。
无依赖存储,支持 local 和 remote 不同模型。
采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
监控目标,可以采用服务发现或静态配置的方式。
支持多种统计数据模型,图形化友好。

prometheus的介绍&环境搭建配置服务启动监控_第2张图片
3.prometheus的优点
1.非常少的外部依赖,安装使用简单
2.已经有非常多的系统集成,例如:docker haproxy nginx jmx等等
3.服务自动化发现
4.直接集成到代码
5.设计思想是按照分布式,微服务架构来实现的

4.prometheus的特性
1.自定义多维度的数据模型
2.非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
3.强大的数据查询
4.轻松实现数据可视化

5.prometheus架构图
prometheus的介绍&环境搭建配置服务启动监控_第3张图片
6.prometheus架构说明

  1. Prometheus server :定期从静态配置的targets或者服务发现(主要是DNS,consul,k8s,mesos等)的targets拉取数据。主要负责数据采集和存储,提供PromQL查询语言的支持
  2. 客户端sdk 官方提供的客户端类库有go、java、scala、python、ruby,其他还有很多第三方开发的类库,支持nodejs、php、erlang等
  3. Push Gateway 支持临时性Job主动推送指标的中间网关;主要使用场景为:
       Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
  4. PromDash 使用rails开发的dashboard,用于可视化指标数据
  5. exporters 支持其他数据源的指标导入到Prometheus,支持数据库、硬件、消息中间件、存储系统、http服务器、jmx等
  6. alertmanager 实验性组件、用来进行报警
  7. prometheus_cli 命令行工具
  8. web-ui:主要通过grafana来实现webui功能;
  9. alertmanager:实现prometheus的告警功能;
  10. exporters:负责向prometheus server做数据汇报的程序统。而不同的数据汇报由不同的exporters实现,比如监控主机有node-exporters,mysql有MySQL server exporter,更多请参考链接。
    总结:实现类似于zabbix-proxy功能;
    从这个架构图,也可以看出 Prometheus 的主要模块包含, prometheus server, exporters, pushgateway, PromQL, Alertmanager, WebUI 等。下面我就简单介绍各个组件实现的功能:

7.prometheus的适用场景
Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

Prometheus,它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统。

8.go环境搭建
1.使用rz命令上传

[root@localhost datas]# rz

2.解压到local下

[root@localhost datas]# tar -zxvf go1.11.9.linux-amd64.tar.gz -C /usr/local/

3.查看路径

[root@localhost go]# pwd
/usr/local/go

4.环境配置

[root@localhost go]# vim /etc/profile

5.编辑
prometheus的介绍&环境搭建配置服务启动监控_第4张图片

#go
export GO_HOME=/usr/local/go
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JMETER_HOME/lib:$ANT_HOME/lib:$GO_HOME/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$PATH:$JMETER_HOME/bin:$ANT_HOME/bin:$GO_HOME/bin

6.立即生效

[root@localhost go]# source /etc/profile

7.验证环境

[root@localhost go]# go version
go version go1.11.9 linux/amd64

9.prometheus环境搭建
1.上传prometheus

[root@localhost datas]# rz

或者在线安装:
wget https://github.com/prometheus/prometheus/releases/download/v2.8.0/prometheus-2.8.0.linux-amd64.tar.gz

2.解压prometheus

[root@localhost datas]# tar -zxvf prometheus-2.9.2.linux-amd64.tar.gz -C /usr/local/

3.查看路径

[root@localhost prometheus-2.9.2.linux-amd64]# pwd
/usr/local/prometheus-2.9.2.linux-amd64

4.配置yml

[root@localhost prometheus-2.9.2.linux-amd64]# vim prometheus.yml

prometheus的介绍&环境搭建配置服务启动监控_第5张图片prometheus的介绍&环境搭建配置服务启动监控_第6张图片10.启动prometheus

[root@localhost prometheus-2.9.2.linux-amd64]# ./prometheus &

1.访问prometheus
在浏览器中输入:http://192.168.102.130:9090/graph 进行访问
错误1:无法访问
分析1:是否网络通,ping一下
分析2:防火墙问题
分析3:yml文件配置问题

看报错信息:

问题1:level=error ts=2018-11-19T06:01:05.697957445Z caller=main.go:625 
err="opening storage failed: lock DB directory: resource temporarily unavailable

解决:删除 lock 文件
rm -f /opt/prometheus/data/lock

问题2:level=error ts=2018-11-19T06:04:47.83421089Z caller=main.go:625 
err="error starting web server: listen tcp 0.0.0.0:9090: bind: address already in use"

解决:查找使用9090端口的PID并删掉
lsof -i :9090
kill -9

问题3:-bash: netstat: 未找到命令
解决:执行安装命令

yum install net-tools
[root@localhost ~]# netstat -tln
[root@localhost ~]# netstat -tln |grep 9090
tcp6       0      0 :::9090                 :::*                    LISTEN    
[root@localhost ~]# lsof -i :9090

提示:lsof:未找到命令 去安装 yum install lsof

[root@localhost ~]# lsof -i :9090
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
prometheu 9504 root    6u  IPv6  32578      0t0  TCP *:websm (LISTEN)
prometheu 9504 root    7u  IPv4  32580      0t0  TCP localhost:55048->localhost:websm (ESTABLISHED)
prometheu 9504 root    8u  IPv6  32581      0t0  TCP localhost:websm->localhost:55048 (ESTABLISHED)
prometheu 9504 root    9u  IPv4  30618      0t0  TCP localhost.localdomain:46854->localhost.localdomain:websm (ESTABLISHED)
prometheu 9504 root   10u  IPv6  32616      0t0  TCP localhost.localdomain:websm->localhost.localdomain:46854 (ESTABLISHED)
[root@localhost ~]# kill -9 9504

再次启动,依旧无法访问,去查看防火墙状态

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
去关闭防火墙,关闭防火墙命令:systemctl stop firewalld.service

再次启动

[root@localhost prometheus-2.9.2.linux-amd64]# ./prometheus &

成功打开
prometheus的介绍&环境搭建配置服务启动监控_第7张图片
去点击targets,未显示zookeeper的,why?
原因:需要重启prometheus,配置才会生效,但是未配置prometheus的自定义启动服务,无法重启,只能手动杀掉进行,再次启动,才能看到配置的zookeeper

11.prometheus的关闭
关闭需要关闭prometheus 的进程
查看是否启动状态:netstat -tln |grep 9090
查看端口的pid :lsof -i :9090
杀掉进程:kill -9 pid
杀掉进程后,再次启动服务,看到变化
prometheus的介绍&环境搭建配置服务启动监控_第8张图片如何让zookeeper服务的状态为up?

12.zookeeper配置
1.上传zookeeper-exporter到 /usr/local/bin 下

[root@localhost bin]# rz
[root@localhost bin]# ll
总用量 10776
-rw-r--r--. 1 root root 11033305 11月 20 16:28 zookeeper_exporter
赋予权限:chmod 775 /usr/local/bin/zookeeper_exporter

启动zookeeper:/usr/local/bin/zookeeper_exporter

[root@localhost bin]# /usr/local/bin/zookeeper_exporter
INFO[0000] zookeeper_exporter, version v1.0.2 (branch: HEAD, revision: d6e929223f6b3bf5ff25dd0340e8194cbd4d04fc)
  build user:       @bd731f434d23
  build date:       2018-05-01T20:40:14+0000
  go version:       go1.10.1 
INFO[0000] Starting zookeeper_exporter                  
INFO[0000] Starting metric http endpoint on :9141  

刷新后查看服务:
prometheus的介绍&环境搭建配置服务启动监控_第9张图片
点击/metrics,可查看数据
prometheus自带的监控,界面观看数据不美观,不方便,所以可以采用grafana去更好的监控数据

你可能感兴趣的:(linux,性能测试)