prometheus命令_Prometheus+grafana监控配置

一、Prometheus架构

Prometheus (中文名:普罗米修斯)是由 SoundCloud 开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus 在2016加入 CNCF ( Cloud Native Computing Foundation ),作为在 kubernetes 之后的第二个由基金会主持的项目。 而这里的Prometheus是广义的概念,其包含了一系列组件,如下表:

prometheus

alertmanager //配置告警阀值相关

blackbox_exporter

consul_exporter

graphite_exporter

haproxy_exporter

memcached_exporter

mysqld_exporter

node_exporter //主机性能及硬件指标采集

pushgateway

statsd_exporter

而Grafana 是一个前端界面程序,我之前在《Collectd+Influxdb+Grafana打造监控系统》中有提到 。以上这些组件需要配合使用才能实现一套完整的监控系统(也会用一些非prometheus相关的组件,如容器的监控经常会用到cAdvisor)。而本篇重要点讲的是prometheus + node_exporter + grafana 。其架构如下:

二、node_exporter的安装

node_exporter在主机上的安装上非常简单,打开https://prometheus.io/download/#node_exporter ,下载最新版本并解压到/usr/local/bin目录下即可使用。使用的时候可以不加参数,也可以使用参数,这个根据自己需要进行配置。比如我使用的参数如下:

/usr/local/bin/node_exporter --collector.systemd \

--collector.diskstats.ignored-devices=^(ram|loop|fd)d+$ \

--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|run)($|/) &

启动后,可以看到其采集的相关插件如下

启动后,可以通过如下命令进行验证(也可以浏览器打开验证):

curl http://127.0.0.1:9100

curl http://127.0.0.1:9100/metrics //返回当前取得的信息

同样,node_exporter也可以以容器的方式运行,命令如下:

docker run -d -p 9100:9100 \

-v "/proc:/host/proc:ro" \

-v "/sys:/host/sys:ro" \

-v "/:/rootfs:ro" \

--net="host" \

quay.io/prometheus/node-exporter \

-collector.procfs /host/proc \

-collector.sysfs /host/sys \

-collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

三、prometheus的安装配置

通过https://prometheus.io/download 下载最新的prometheus,通如下方式解压使用:

tar xvfz prometheus-*.tar.gz

cd prometheus-*

解压后,可以找到prometheus.yml 配置文件,修改其内容类似如下:

global:

scrape_interval: 15s

evaluation_interval: 15s

- job_name: prometheus

static_configs:

- targets: ['localhost:9090'] //prometheus管理地址和端口

labels:

instance: prometheus

- job_name: linux1

static_configs:

- targets: ['192.168.1.120:9100'] //运行node_exporter主机的连接信息

labels:

instance: sys1

- job_name: linux2

static_configs:

- targets: ['192.168.1.130:9100']

labels:

instance: sys2

简单配置后,可以通过如下命令启动 prometheus :

./prometheus --config.file=prometheus.yml

默认情况下prometheus的数据会保存在./data (flag --storage.tsdb.path参数可以更改路径)目录下。

实际应用时,我们可以把相同的一组应用保存在一个任务里,比如job名为example-random,其中两台主机运行的为生产组主机主机,另一台主机为canary 版本的,我们可以通过group进行区分他们。如下示例:

scrape_configs:

- job_name: 'example-random'

# Override the global default and scrape targets from this job every 5 seconds.

scrape_interval: 5s

static_configs:

- targets: ['192.168.1.120:9100', '192.168.1.121:9100']

labels:

group: 'production'

- targets: ['192.168.1.130:9100']

labels:

group: 'canary'

具体可以查看官方文档:https://prometheus.io/docs/prometheus/latest/getting_started/ ,配置完成并启动后,可以通过如下targets界面查看相关主机,也可以通过选择configuration查看当前的配置。

四、grafana的安装

grafana的安装需要依赖Golang环境,可以参考 Golang的安装 页面进行go环境的安装。通过如下命令安装grafana:

wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm

yum localinstall grafana-5.4.2-1.x86_64.rpm

systemctl daemon-reload

systemctl enable grafana-server

systemctl start grafana-server

# 以下是字体库等相关依赖包

yum install fontconfig

yum install freetype*

yum install urw-fonts

grafana默认用户名密码为admin/admin,如果需要nginx进行反向代理,可以通过如下配置进行配置:

server {

listen 80;

server_name grafana.361way.com;

charset utf-8;

location / {

default_type text/html;

proxy_pass http://127.0.0.1:3000;

}

}

编辑配置文件/etc/grafana/grafana.ini ,修改dashboards.json段落下两个参数的值:

[dashboards.json]

enabled = true

path = /var/lib/grafana/dashboards

安装仪表盘JSON模版:

git clone https://github.com/percona/grafana-dashboards.git

cp -r grafana-dashboards/dashboards /var/lib/grafana/

通过service grafana-server restart命令重新启动服务,并打开URL进行访问,登陆后可以通过如下步骤配置数据源:

如果是通过Provisioning方式安装的(比如ansible\saltstack等工具通过yaml 文件一键安装的),关于prometheus 项的配置如下:

apiVersion: 1

datasources:

- name: Prometheus

type: prometheus

access: proxy

url: http://localhost:9090

至此,node_exporter + prometheus + grafana 三者的整合就结束了,后面如果要进行告警配置,还需要整合alertmanager 并配置相关rule,这个后面再单独写吧。


版权声明:本文为weixin_39909859原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。