如何使用 Prometheus 轻松实现监控?
Posted 高效运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用 Prometheus 轻松实现监控?相关的知识,希望对你有一定的参考价值。
1、Prometheus 对比 Zabbix
Zabbix 的客户端 agent 可以比较方便的通过脚本来读取机器内数据库、日志等文件来做上报。而 Prometheus 的上报客户端则分为不同语言的SDK和不同用途的 exporter 两种,比如如果你要监控机器状态、mysql性能等,有大量已经成熟的 exporter 来直接开箱使用,通过http通信来对服务端提供信息上报(server去pull信息);
而如果你想要监控自己的业务状态,那么针对各种语言都有官方或其他人写好的 sdk 供你使用,都比较方便,不需要先把数据存入数据库或日志再供 zabbix-agent 采集。
2、安装 Prometheus
可以去 Prometheus 的官网下载页面获取最新版本的信息,比如现在的最新版本是2.7.2,那就下载相应系统的安装包,然后解压
$ wget https://github.com/prometheus/prometheus/releases/download/v2.7.2/prometheus-2.7.2.linux-amd64.tar.gz
$ tar xvfz prometheus-2.7.2.linux-amd64.tar.gz
$ cd prometheus-2.7.2.linux-amd64
// 查看版本
$ ./prometheus --version
// 运行server
$ ./prometheus --config.file=prometheus.yml
命令中的 prometheus.yml 文件其实就是配置文件,也在当前目录下,在其中可以配置一些东西。
3、配置 Prometheus
$ cat prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
其大致分为四部分:
-
global:全局配置,其中 scrape_interval 表示抓取一次数据的间隔时间,evaluation_interval 表示进行告警规则检测的间隔时间; alerting:告警管理器(Alertmanager)的配置,目前还没有安装Alertmanager;
rule_files:告警规则有哪些;
-
scrape_configs:抓取监控信息的目标。一个 job_name 就是一个目标,其 targets 就是采集信息的 IP 和端口。这里默认监控了 Prometheus 自己,可以通过修改这里来修改 Prometheus 的监控端口。 Prometheus 的每个 exporter 都会是一个目标,它们可以上报不同的监控信息,比如机器状态,或者 mysql 性能等等,不同语言 sdk 也会是一个目标,它们会上报你自定义的业务监控信息。
4、Prometheus 界面
如果访问不了,看看是不是端口没有打开或者允许外网访问。
界面非常简单(所以我们还需要Grafana),上面标签栏中,Alerts是告警管理器,暂时还没安装。Graph是查看监控项的图表,也是访问后的默认页面,Status中可以查看一些配置、监控目标、告警规则等。
5、添加机器状态监控
// 下载最新版本,可以在github的release中对最新版本右键获取下载链接
$ wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
// 解压
$ tar xvfz node_exporter-0.17.0.linux-amd64.tar.gz
// 进入解压出的目录
$ cd node_exporter-0.17.0.linux-amd64
// 运行监控采集服务
$ ./node_exporter
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'server'
static_configs:
- targets: ['localhost:9100']
如果新加的 target 的 status 是“UP”的话,就说明监听成功了。
此时去Graph中,输入框输入node可以发现有很多 node 开头的监控项了,都是和机器状态有关的,可以自己执行看一看。
安装 Grafana
因为 Prometheus 的界面看起来非常简单,所以我们还需要 Grafana 这个非常强大也是最常用的监控展示框架。
我们直接下载并解压:
$wget [https://dl.grafana.com/oss/release/grafana-6.0.0.linux-amd64.tar.gz](https://dl.grafana.com/oss/release/grafana-6.0.0.linux-amd64.tar.gz)
$ tar -zxvf grafana-6.0.0.linux-amd64.tar.gz
这个页面给出的是最新版本的安装命令,右上角可以选择切换其他版本的安装命令。
解压后会出现 grafana-6.0.0 目录,进入该目录,然后就可以运行 Grafana 了:
$ cd grafana-6.0.0
// 启动Grafana。$ ./bin/grafana-server web
通过log信息可以看到Grafana默认运行在3000端口,这个也可以通过配置文件进行修改:创建名为 custom.ini 的配置文件,添加到 conf 文件夹,复制 conf/defaults.ini 中定义的所有设置,然后修改自己想要修改的。
在 Grafana 展示监控信息
在界面左边是一竖排选项,选择设置图标中的Data Source,添加Prometheus的数据源,URL 就填上面你给 Prometheus Server 设置的ip+端口号就行了,如果没改过且在本机运行的话,那就是 localhost:9090。
复制右边那个面板ID,然后在 Import 界面输入ID,Load 后配置好数据源为我们的Prometheus,就可以出现我们自己机器的状态监控面板了,很炫酷吧。
这个面板需要安装一个饼图的插件(页面上有说明),安装 Grafana 插件的方法为:
// 进入Grafana/bin目录
./grafana-cli plugins install [插件名]
// 安装成功后重启Grafana
近期好文:
以上是关于如何使用 Prometheus 轻松实现监控?的主要内容,如果未能解决你的问题,请参考以下文章
超级实用,解密云原生监控技术,使用prometheus轻松搞定redis监控