Prometheus+Grafana 基础及简单搭建

〇、前言

监控四要素:监控对象、监控软件、监控时间、报警
prometheus官网下载很慢,阿里云镜像站都有,prometheus以及插件的deb包地址:

https://mirrors.aliyun.com/ubuntu/pool/universe/p/

一、Prometheus概述

1、Prometheus基于时间序列的数值数据的容器监控解决方案,是一套开源的监控&报警&时间序列数据库的组合,适合监控docker容器
2、时间序列:按照时间顺序记录系统、设备状态变化的数据,被称为时序数据
3、基于时间序列数据的特点:
(1)性能好:关系型数据库处理大规模数据适合性能弱,NOSQL可以比较好的处理,但仍比不上时间序列数据库
(2)存储成本低:搞笑的压缩算法,节省存储空间,有效降低IO
4、Prometheus特征:
(1)多维度数据模型
(2)灵活的查询语言
(3)不依赖分布式存储,单个服务器节点即可实现监控
(4)以HTTP方式,通过pull模型拉取时间序列数据
(5)也可以通过中介网关支持push模型
(6)通过服务发现或者静态配置,来发现目标服务对象
(7)支持多种多样的图表和界面显示
5、Prometheus架构图
Prometheus+Grafana 基础及简单搭建
Prometheus根据配置的任务(job)以周期性pull的方式获取指定目标(target)上的指标(metric)。
(1)Prometheus Server: 根据配置完成数据采集, 服务发现以及数据存储。
(2)Push Gateway : 为应对部分push场景提供的插件,监控数据先推送到 Push Gateway 上,然后再由 Prometheus Server 端采集 pull 。由于存在时间较短,可能在 Prometheus 来 pull 之前,jobs就消失了。(若 Prometheus Server 在采集间隔期间,Push Gateway 上的数据没有变化, Prometheus Server 将采集到2次相同的数据,仅时间戳不同)
(3)Exporters(探针): 是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。抓取什么样的数据,就需要什么类型的exporter,比如说抓取mysql状态的数据,就需要mysqld_exporter。
(4)Alertmanager: Prometheus server 主要负责根据基于PromQL的告警规则分析数据,如果满足PromQL定义的规则,则会产生一条告警,并发送告警信息到Alertmanager,Alertmanager则是根据配置处理告警信息并发送。常见的接收方式有:电子邮件,webhook 等。Alertmanager三种处理告警信息的方式:分组,抑制,静默。

二、Prometheus命令参数与配置文件详解

1、命令参数
--web.read-timeout=5m:请求链接的最大等待时间,防止太多的空闲链接占用资源
--web.read-timeout=5m:最大链接数
--storage.tsdb.retention=15d:开启采集监控数据后,会存在内存和硬盘中多少天,很重要
--storage.tsdb.path=”data/”:存储数据路径,很重要,不要随便放在=,避免/被塞满
--query.timeout=2m
--query.max-concurrency=20
这两项是对用户执行prometheus查询适合的优化设置,防止太多用户同时查询,也防止单个用户执行过大的查询而一直不退出
2、配置文件详解
prometheus.yml
重要参数
global:
scrape_interval: 15s 监控每15秒采集一次信息
scrape_configs:

  • job_name: 'prometheus' 任务名称
    static_configs:
    • targets: ['localhost:9090',’mysql:9100’] 设置监控的服务器有哪些,服务器间以,分割,服务器名称需要被prometheus能够解析到

3、数据存放
如图中一些长串字母的目录,是历史数据保留,而当前近期数据,实际保留在内存中,并且按照一定时间间隔存放在wal目录中,防止土壤断电或重启,用来恢复内存中的数据
Prometheus+Grafana 基础及简单搭建
4、node_exporters中一些重要key
(1)node_cpu
(2)node_memory
(3)node_disk

三、Prometheus使用

机器环境:
Prometheus服务器:192.168.114.130
Grafana服务器:192.168.114.131
被检测服务器:192.168.114.132
1、Prometheus安装与使用
官网下载较慢,下载阿里云镜像站

https://mirrors.aliyun.com/ubuntu/pool/universe/p/prometheus/prometheus_2.20.0+ds-1_amd64.deb

(1)安装好后输入命令prometheus,
此处若不是dpkg/yum安装方式,打开命令:
/xx/prometheus --config.file=”/xx/prometheus.yml”
打开网页ip:9090
Prometheus+Grafana 基础及简单搭建
或者lsof -i:9090
Prometheus+Grafana 基础及简单搭建
(2)访问网站IP:9090/metrics,获取采集的数据
Prometheus+Grafana 基础及简单搭建
(3)访问IP:9090/targets,获取监控状态,默认为检测自己,此网址等同于点击Status下的Target
Prometheus+Grafana 基础及简单搭建
(4)监控图像
点击graph
Prometheus+Grafana 基础及简单搭建
2、搜集其他设备
(1)需要被检测的设备,需要安装node_exporter组件
在被检测机器上安装node_exporter,在github上下载并安装
node_exporter-1.0.1.linux-amd64.tar.gz
解压后移动到想要的位置,即可使用
比如我的
tar xf node_exporter-1.0.1.linux-amd64.tar.gz
mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter
完成后即可使用命令
nohup /usr/local/node_exporter &
nohup可以帮助我们关闭终端后继续保持该进程,之后测试
Prometheus+Grafana 基础及简单搭建
访问被检测机IP:9090/metrics,显示了采集的信息
Prometheus+Grafana 基础及简单搭建
(2)回到prometheus服务器端,修改配置文件,添加被监控机
Vim /etc/prometheus/prometheus.yml
在配置最下方,修改
Prometheus+Grafana 基础及简单搭建
job name:取个名称
targets:监控目标机器ip,后面接端口
Prometheus+Grafana 基础及简单搭建
保存systemctl restart prometheus
此处若不是dpkg/yum安装方式,pkill掉进程后再启动即可
再访问prometheus服务器,已经出现了被监控机
Prometheus+Grafana 基础及简单搭建
3、pushgateway
(1)打开/etc/prometheus/prometheus.yml,有一段配置,如果没有自行添加。pushgateway可以安装到任何一个节点,只不过这里和prometheus装到了一起,所以使用了localhost
Prometheus+Grafana 基础及简单搭建
pushgateway本身没有任何抓取监控数据的功能,它只是被动的等待数据推送,它接受的是http的post形式,所以需要用户自定义脚本把数据发送给pushgateway
附搜集脚本:

#!/bin/bash

#本机机器名 变量 用于之后的 标签
instance_name=hostname -f | cut -d'.' -f1

#要求机器名 不能是 localhost 不然标签就没有区分了
if [ instance_name == "localhost" ];then
echo "Must FQDN hostname"
exit 1
fi

#定一个新的 key
label="count_netstat_wait_connections"

#定义一个新的数值 netstat中 wait 的数量
count_netstat_wait_connections=netstat -an | grep -i wait | wc -l
echo "label : count_netstat_wait_connections"
echo "label count_netstat_wait_connections" | curl --data- binary @-http://prometheus.server.com:9091/metrics/job/ pushgateway/instance/instance_name

之后结合crontab定时触发
(2)优缺点
优点:快速、灵活,不受约束,中小企业一般使用node和db的exporter就行,其余使用pushgateway就可以
缺点:单点瓶颈,故障后监控数据也没了;问题数据依旧发送给prometheus
4、监控远程mysql
(1)在被管理及安装mysqld_export组件
首先下载mysqld-exporter,之后安装mariadb或者mysql
(2)其次创建mysql账号,用来收集数据
grant select,replication client,process on . to 'prom'@'localhost' identified by '123';
由于只是搜集数据,所以权限没有给写,避免权限过大
(3)在mysqld_exporter组件中配置mysql信息,比如我在/etc/prometheus目录下新建了一个mysqld_export.cnf,其中内容,user与password就是刚才授权的mysql账号
Prometheus+Grafana 基础及简单搭建
之后启动,nohup prometheus-mysqld-exporter --config.my-cnf=/etc/prometheus/mysqld_export.cnf &
Prometheus+Grafana 基础及简单搭建
Prometheus+Grafana 基础及简单搭建
5、prometheus服务器拉取mysql服务器信息
编辑prometheus.yml,添加job_name以及监控设备ip与端口
Prometheus+Grafana 基础及简单搭建
之后重启prometheus服务,再看prometheus的web界面
Prometheus+Grafana 基础及简单搭建
mysql_global_status_threads_connected表示连接mysql用户有多少
Prometheus+Grafana 基础及简单搭建

四、Grafana可视化图形工具

机器环境:
Prometheus服务器:192.168.114.130
Grafana服务器:192.168.114.131
被检测服务器:192.168.114.132
1、引入Grafana的原因
Granfa是一个开源的度量分析和可视化工具,可以通过将采集的数据分析、查询,然后进行可视化的展示,并实现报警。由于prometheus在关闭浏览器后能够显示的数据就没有了,所以需要一个可视化图形工具。
2、安装
去官网https://grafana.com/grafana/download 
进行下载,按照自己的系统进行安装,比如我的官网有提示
Prometheus+Grafana 基础及简单搭建
官网比较慢,找的国内站

https://mirrors.tuna.tsinghua.edu.cn/grafana/debian/pool/main/g/grafana/grafana_7.1.1_amd64.deb

安装完成后,systemctl start grafana && systemctl enable grafana
3、安装后验证
lsof -i:3000
Prometheus+Grafana 基础及简单搭建
浏览器登录grafanaIP:3000
Prometheus+Grafana 基础及简单搭建
界面默认用户名密码均为admin,登录后会提示修改密码,修改后登录
4、接入prometheus服务器数据源
点击add data source
Prometheus+Grafana 基础及简单搭建
点击Prometheus
Prometheus+Grafana 基础及简单搭建
注:此前grafana选择在下图红框的type,现在为上图中自行选择后才进入setting
Prometheus+Grafana 基础及简单搭建
继续添加数据
Prometheus+Grafana 基础及简单搭建
其余模块
Prometheus+Grafana 基础及简单搭建
Prometheus+Grafana 基础及简单搭建
6、为添加好的数据源添加图形
(1)点击+,选择dashboard
Prometheus+Grafana 基础及简单搭建
之后出现图形
Prometheus+Grafana 基础及简单搭建
若是之前版本,会出现下图,只要按图示点击edit即可
Prometheus+Grafana 基础及简单搭建
点击这里,选择刚才建立的数据源
Prometheus+Grafana 基础及简单搭建
点击这里进行选择
Prometheus+Grafana 基础及简单搭建
可以看到有很多东西
Prometheus+Grafana 基础及简单搭建
点击+ QUERY,可以增加查询的内容
Prometheus+Grafana 基础及简单搭建
选好查询内容后,即可出图形
Prometheus+Grafana 基础及简单搭建
图像观看说明
Prometheus+Grafana 基础及简单搭建
完成后点击右上角,save是保存监测策略,apply点击后界面出现
Prometheus+Grafana 基础及简单搭建
点击apply后
Prometheus+Grafana 基础及简单搭建
(2)根据条件查看监测的设备:
Prometheus+Grafana 基础及简单搭建
instance是按照ip和端口筛选数据
job是按照job_name,也就是prometheus.yml里的各个job_name筛选数据

五、Prometheus+Grafana+Mariadb监控数据

1、在grafana上修改配置文件安装模板,并下载安装mysql监控的dashboard,包含相关json文件,这些json文件可以看作是监控模板
网站:github.com/percona/grafana-dashboards
vim /etc/grafana/grafana.ini,配置文件最后添加以下三行:
path指定的是dashboards存放路径

#git clone https://github.com/percona/grafana-dashboards.git
#cd grafana-dashboards
#cp -ar dashboards /etc/grafana/
#systemctl restart grafana-server
在本机使用git命令拉取,之后拷贝grafana的dashboards到对应的path路径下,之后重启grafana
2、导入json文件
Prometheus+Grafana 基础及简单搭建
在上图点击完3后,加载json文件,选择mysql
Prometheus+Grafana 基础及简单搭建
配置好后点击import
设置后图表无数据源,需要我们连接数据源,该模板连接名称为Prometheus
Prometheus+Grafana 基础及简单搭建
之后点击dashboards,回到刚才导入的模板
Prometheus+Grafana 基础及简单搭建
已经有内容了,报错地方是没有饼图统计显示的插件
Prometheus+Grafana 基础及简单搭建
注意:此处添加的是prometheus服务器,而不是mariadb服务器,它是接收prometheus的metrics数据,用图表形式反馈给用户的

六、Grafana报警

1、prometheus报警需要使用alertmanager这个组件,而且报警规则需要手动编写,所以这里选用grafana中的email报警
(1)报警之前,需要我们将服务器时间设置一致,使用ntpdate命令
(2)新建报警渠道
Prometheus+Grafana 基础及简单搭建
进入后点击type下拉菜单,可以看到很多第三方报警平台,包括了钉钉
Prometheus+Grafana 基础及简单搭建
这里我们打开了email报警,email报警需要设置stmp服务
vim /etc/grafana/grafana.ini
[smtp]
enabled = true
host = smtp.163.com:25 #smtp服务器的地址:端口 (服务器地址不同公司可能不相同)
user = 你的邮箱
#If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
password = 你的密码
;cert_file =
;key_file =
skip_verify = true #Verify SSL for smtp server? defaults to false
from_address = 你的邮箱
from_name = Grafana
结束后可以save
(3)回到之前最初建立的dashboards,或者新建的dashboards,在alert设定规则
Prometheus+Grafana 基础及简单搭建
代表意思:A查询语句中,检测时长,从现在到1min的变化显示
Prometheus+Grafana 基础及简单搭建
查询语句、检测时长、显示范围时间等都可以选择
Prometheus+Grafana 基础及简单搭建
Prometheus+Grafana 基础及简单搭建
Prometheus+Grafana 基础及简单搭建
报警取值范围:超过、低于、范围外、范围之内、没有该值
Prometheus+Grafana 基础及简单搭建
(4)报警条件设置
Prometheus+Grafana 基础及简单搭建
如果没有数据或所有值为满,则设置状态到:
如果程序成错或者超时,则设置状态到:
完成后点击test rule,测试报警规则
Prometheus+Grafana 基础及简单搭建

猜你喜欢

转载自blog.51cto.com/13873498/2554844