Prometheus是什么
prometheus 是一个开源系统监控和报警的工具集合,由SoundCloud创建(http:// soundcloud.com/ ) , 从2012诞生之后, 今已经有许多公司和组织开始使用它 ,这个开源项目拥有大量的积极参与开发和建设的研发人员以及社区用户. 目前已经是一个独 立运行的开源的
由各公司自行维护的监控项目。 2016年prometheus 加入了Cloud Native Computing Fondation (CNCF) ,并且成为继Kuernets之后第二个加入该组织的成员。
Prometheus安装
安装Prometheus之前我们必须先安装ntp
时间同步,prometheus T_S 对系统时间的准确性要求很高,必须保证本机时间实时同步。本次安装以 centos7 为例。
1. Prometheus下载
首先 我们去到官网 下载版本 prometheus-2.1.0.linux-amd64.tar.gz
下载命令:wget https://github.com/prometheus/prometheus/releases/download/v2.1.0/prometheus-2.1.0.linux- amd64.tar.gz
2. Prometheus安装
直接解压刚才下载好的安装包:tar -xvzf prometheus-2.1.0.linux-amd64.tar.gz
3. Prometheus启动
/prometheus/prometheus-2.1.0.linux-amd64# ./prometheus
level=info ts=2018-09-17T02:52:48.046018649Z caller=main.go:225 msg="Starting Prometheus" version="(version=2.1.0, branch=HEAD, revision=85f23d82a045d103ea7f3c89a91fba4a93e6367a)"
level=info ts=2018-09-17T02:52:48.046110981Z caller=main.go:226 build_context="(go=go1.9.2, user=root@6e784304d3ff, date=20180119-12:01:23)"
level=info ts=2018-09-17T02:52:48.046144704Z caller=main.go:227 host_details="(Linux 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 iZm5eakzlq9sm4ycm9lw0wZ (none))"
level=info ts=2018-09-17T02:52:48.046173673Z caller=main.go:228 fd_limits="(soft=65535, hard=65535)"
level=info ts=2018-09-17T02:52:48.050261133Z caller=main.go:499 msg="Starting TSDB ..."
level=info ts=2018-09-17T02:52:48.050295496Z caller=web.go:383 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2018-09-17T02:52:48.058531965Z caller=main.go:509 msg="TSDB started"
level=info ts=2018-09-17T02:52:48.05861944Z caller=main.go:585 msg="Loading configuration file" filename=prometheus.yml
level=info ts=2018-09-17T02:52:48.059760017Z caller=main.go:486 msg="Server is ready to receive web requests."
level=info ts=2018-09-17T02:52:48.059795986Z caller=manager.go:59 component="scrape manager" msg="Starting scrape manager..."
启动之后默认运行的端口为:9090
, 可以直接通过浏览器的IP+9090
进行访问。
访问效果如下:
需要注意的一点是,通过浏览器直接访问的形式是没有账号密码验证的,如果希望加上验证的操作,可以使用类似apache httppass 方式添加。
4. Prometheus配置
可以看到,在Prometheus的文件夹下面有一个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=` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
下面我们来详细说一下配置文件的具体含义:
- scrape_interval:抓取采样数据的时间间隔, 默认每15秒去被监控机上采样一次。
- evaluation_interval:prometheus多长时间会进行一次监控规则的评估(具体的规则我们可以自定义)。
- Alertmanager:是prometheus的一个用于管理和发出报警的插件
- 接下来是prometheus配置采集节点的设置:
- job_name:定义一个job的名称
- targets:定义监控节点的 targets,targets可以并列写入多个节点,中间使用逗号分割,配置内容为:机器名+端口号
至此, 一个prometheus_server就搭建完成了,prometheus就可以通过配置文件识别监控的节点,持续开始采集数据进行监控。
node-exporter
光有prometheus_server是不够的,我们需要给监控节点搭建第一个exporter 用来采样需要被监控节点的数据。node_exporter是一个以http_server方式运行在后台,并且持续不断采集 Linux
系统中 各种操作系统本身相关的监控参数的程序。
1. exporter下载
去官网下载node_exporter。
下载链接:wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz
2. exporter安装
使用 tar 命令直接解压即可。
3. exporter运行
解压完成之后,系统会默认生成一个node_exporter
的可执行文件,直接运行即可。
运行效果如下:
INFO[0000] Starting node_exporter (version=0.16.0, branch=HEAD, revision=d42bd70f4363dced6b77d8fc311ea57b63387e4f) source="node_exporter.go:82"
INFO[0000] Build context (go=go1.9.6, user=root@a67a9bc13a69, date=20180515-15:52:42) source="node_exporter.go:83"
INFO[0000] Enabled collectors: source="node_exporter.go:90"
INFO[0000] - arp source="node_exporter.go:97"
INFO[0000] - bcache source="node_exporter.go:97"
INFO[0000] - bonding source="node_exporter.go:97"
INFO[0000] - conntrack source="node_exporter.go:97"
INFO[0000] - cpu source="node_exporter.go:97"
INFO[0000] - diskstats source="node_exporter.go:97"
INFO[0000] - edac source="node_exporter.go:97"
INFO[0000] - entropy source="node_exporter.go:97"
INFO[0000] - filefd source="node_exporter.go:97"
INFO[0000] - filesystem source="node_exporter.go:97"
INFO[0000] - hwmon source="node_exporter.go:97"
INFO[0000] - infiniband source="node_exporter.go:97"
INFO[0000] - ipvs source="node_exporter.go:97"
INFO[0000] - loadavg source="node_exporter.go:97"
INFO[0000] - mdadm source="node_exporter.go:97"
INFO[0000] - meminfo source="node_exporter.go:97"
INFO[0000] - netdev source="node_exporter.go:97"
INFO[0000] - netstat source="node_exporter.go:97"
INFO[0000] - nfs source="node_exporter.go:97"
INFO[0000] - nfsd source="node_exporter.go:97"
INFO[0000] - sockstat source="node_exporter.go:97"
INFO[0000] - stat source="node_exporter.go:97"
INFO[0000] - textfile source="node_exporter.go:97"
INFO[0000] - time source="node_exporter.go:97"
INFO[0000] - timex source="node_exporter.go:97"
INFO[0000] - uname source="node_exporter.go:97"
INFO[0000] - vmstat source="node_exporter.go:97"
INFO[0000] - wifi source="node_exporter.go:97"
INFO[0000] - xfs source="node_exporter.go:97"
INFO[0000] - zfs source="node_exporter.go:97"
INFO[0000] Listening on :9100 source="node_exporter.go:111"
可以看到,exporter的默认运行端口为:9100
grafana
Grafana是一款近几年新兴的开源数据绘图工具平台,默认支持以下几种数据源作为输入:
1. grafana下载&&安装
官网下载地址
具体的安装过程,官网给出了详细的教程,在此不在赘述
2. grafana运行
启动命令:service grafana-server start
启动之后,可以使用service grafana-server status
查看grafana的状态。
service grafana-server status
● grafana-server.service - Grafana instance
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2018-08-29 11:11:42 CST; 2 weeks 5 days ago
Docs: http://docs.grafana.org
Main PID: 8493 (grafana-server)
CGroup: /system.slice/grafana-server.service
启动之后,默认的端口为:3000,可以在浏览器上直接通过:IP+3000 访问。
进入grafana主页,设置相应的数据源( Data Sources)
主要需要去设置Type和URL这两项:
之后就进入 new dashboard的 主界面
创建自己所需要的监控数据模版。
dashboard支持导入功能,我们可以直接将一个好的demo导入到自己的监控面板中,具体可以参照如下链接:https://grafana.com/dashboards?utm_source=grafana_search
grafana支持两种导入方式,一种是通过官网固定的ID号码,一种是导入其对应的json文件格式,具体如下图:
至此,一个简单的监控环境就可以运行起来。