开源监控 prometheus初体验

开源监控 prometheus初体验

1.prometheus介绍

官方网站:https://prometheus.io/
Prometheus 非官方中文手册:https://github.com/1046102779/prometheus
Prometheus的主要特征有:
多维度数据模型
灵活的查询语言
不依赖分布式存储,单个服务器节点是自主的
以HTTP方式,通过pull模型拉去时间序列数据
也通过中间网关支持push模型
通过服务发现或者静态配置,来发现目标服务对象
支持多种多样的图表和界面展示,grafana也支持它
组件

Prometheus生态包括了很多组件,它们中的一些是可选的:

主服务Prometheus Server负责抓取和存储时间序列数据
客户库负责检测应用程序代码
支持短生命周期的PUSH网关
基于Rails/SQL仪表盘构建器的GUI
多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式
警告管理器
命令行查询工具
其他各种支撑工具
多数Prometheus组件是Go语言写的,这使得这些组件很容易编译和部署。

架构

下面这张图说明了Prometheus的整体架构,以及生态中的一些组件作用: Prometheus Arhitecture


Prometheus服务,可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL和其他API可视化地展示收集的数据

适用场景

Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。

Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

不适用场景

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

2.初次运行promethues

2.1.1下载、解压

下载:选择合适的平台和版本下载 https://prometheus.io/download/
解压: tar xvfz prometheus-*.tar.gz
cd prometheus-*

2.1.2配置运行

prometheus是通过http拉取目标机器上的程序指标,prometheus server程序也会暴露自己运行所产生的数据。对于初次实验来说,可以配置拉取prometheus自己的指标。 在运行前要指定配置文件,目前官方最新版2.0.0已经带了默认配置文件 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).

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'codelab-monitor'

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first.rules"
  # - "second.rules"
  #  - "prometheus.rules"
# 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=` to any timeseries scraped from this config.
  # promrtheus self monitor
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ['192.168.x.x:9090']

详细的配置文档参考官方文档:
https://prometheus.io/docs/operating/configuration/

配置完后启动prometheus服务

./prometheus

日志会打印

[elk@stes04 prometheus-2.0.0-beta.0.linux-amd64]$ ./prometheus
INFO[0000] Starting prometheus (version=2.0.0-beta.0, branch=master, revision=2b5d9159537cbd123219296121e05244e26c0940)  source="main.go:202"
INFO[0000] Build context (go=go1.8.3, user=root@fc24486243df, date=20170712-12:21:13)  source="main.go:203"
INFO[0000] Host details (Linux 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 stes04 (none))  source="main.go:204"
INFO[0000] Starting tsdb                                 source="main.go:216"
INFO[0003] tsdb started                                  source="main.go:222"
INFO[0003] Loading configuration file prometheus.yml     source="main.go:351"
INFO[0003] Listening on 0.0.0.0:9090                     source="web.go:286"
INFO[0003] Starting target manager...                    source="targetmanager.go:67"
ts=2017-08-04T08:00:00.509734185Z caller=db.go:867 msg="created head block" ulid=01BPP447C81JM9X134YDJYTTME mint=1501833600000 maxt=1501840800000

浏览器打开http://localhost:9090/metrics, 直接查看Prometheus服务收集到的自身数据。
开源监控 prometheus初体验_第1张图片
http://localhost:9090/graph
开源监控 prometheus初体验_第2张图片
能够看到Prometheus的指标,大功告成!
到此Prometheus第一次实验完成,接下来可以尝试Prometheus抓取其他应用的数据。

3.此次试用prometheus主要是监控elk中的elasticsearch和logstash

prometheus的clicent收集数据,并提供http服务,由prometheus server主动pull数据。

3.1 elasticsearch数据由es插件

实现: https://github.com/vvanholl/elasticsearch-prometheus-exporter

3.1.1 插件下载

目前试用的是es5.4,https://github.com/vvanholl/elasticsearch-prometheus-exporter/releases 下载对应版本的插件

3.1.2 安装插件

sh ./bin/elasticsearch-plugin install file:///home/elk/elasticsearch-prometheus-exporter-5.4.0.0.zip ,重启es。 默认指标目录:http://192.168.x.x:9200/_prometheus/metrics
http://192.168.x.x:9200/_prometheus/metrics能够看到es的prometheus指标,说明插件安装成功。
开源监控 prometheus初体验_第3张图片

3.2配置prometheus server 来pull es数据

# 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).

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'codelab-monitor'

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first.rules"
  # - "second.rules"
  #  - "prometheus.rules"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # es motitor
  - job_name: elasticsearch
    scrape_interval: 10s
    metrics_path: "/_prometheus/metrics"
    static_configs:
      - targets: ['192.168.x.x:9200']

ps:es指标的路径必须为/_prometheus/metrics ,否则prometheus server拉取不到es的指标数据。
开源监控 prometheus初体验_第4张图片

到此 prometheus能够正常展示es指标。

你可能感兴趣的:(prometheus)