Prometheus+grafana监控配置
一、Prometheus架构
Prometheus (中文名:普罗米修斯)是由 SoundCloud 开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus 在2016加入 CNCF ( Cloud Native Computing Foundation ),作为在 kubernetes 之后的第二个由基金会主持的项目。 而这里的Prometheus是广义的概念,其包含了一系列组件,如下表:
1prometheus
2alertmanager //配置告警阀值相关
3blackbox_exporter
4consul_exporter
5graphite_exporter
6haproxy_exporter
7memcached_exporter
8mysqld_exporter
9node_exporter //主机性能及硬件指标采集
10pushgateway
11statsd_exporter
而Grafana 是一个前端界面程序,我之前在《Collectd+Influxdb+Grafana打造监控系统》中有提到 。以上这些组件需要配合使用才能实现一套完整的监控系统(也会用一些非prometheus相关的组件,如容器的监控经常会用到cAdvisor)。而本篇重要点讲的是prometheus + node_exporter + grafana 。其架构如下:
二、node_exporter的安装
node_exporter在主机上的安装上非常简单,打开https://prometheus.io/download/#node_exporter ,下载最新版本并解压到/usr/local/bin目录下即可使用。使用的时候可以不加参数,也可以使用参数,这个根据自己需要进行配置。比如我使用的参数如下:
1/usr/local/bin/node_exporter --collector.systemd \
2--collector.diskstats.ignored-devices=^(ram|loop|fd)d+$ \
3--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|run)($|/) &
启动后,可以看到其采集的相关插件如下
启动后,可以通过如下命令进行验证(也可以浏览器打开验证):
1curl http://127.0.0.1:9100
2curl http://127.0.0.1:9100/metrics //返回当前取得的信息
同样,node_exporter也可以以容器的方式运行,命令如下:
1docker run -d -p 9100:9100 \
2 -v "/proc:/host/proc:ro" \
3 -v "/sys:/host/sys:ro" \
4 -v "/:/rootfs:ro" \
5 --net="host" \
6 quay.io/prometheus/node-exporter \
7 -collector.procfs /host/proc \
8 -collector.sysfs /host/sys \
9 -collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
三、prometheus的安装配置
通过https://prometheus.io/download 下载最新的prometheus,通如下方式解压使用:
1tar xvfz prometheus-*.tar.gz
2cd prometheus-*
解压后,可以找到prometheus.yml 配置文件,修改其内容类似如下:
1global:
2 scrape_interval: 15s
3 evaluation_interval: 15s
4 - job_name: prometheus
5 static_configs:
6 - targets: ['localhost:9090'] //prometheus管理地址和端口
7 labels:
8 instance: prometheus
9 - job_name: linux1
10 static_configs:
11 - targets: ['192.168.1.120:9100'] //运行node_exporter主机的连接信息
12 labels:
13 instance: sys1
14 - job_name: linux2
15 static_configs:
16 - targets: ['192.168.1.130:9100']
17 labels:
18 instance: sys2
简单配置后,可以通过如下命令启动 prometheus :
1./prometheus --config.file=prometheus.yml
默认情况下prometheus的数据会保存在./data (flag –storage.tsdb.path参数可以更改路径)目录下。
实际应用时,我们可以把相同的一组应用保存在一个任务里,比如job名为example-random,其中两台主机运行的为生产组主机主机,另一台主机为canary 版本的,我们可以通过group进行区分他们。如下示例:
1scrape_configs:
2 - job_name: 'example-random'
3 # Override the global default and scrape targets from this job every 5 seconds.
4 scrape_interval: 5s
5 static_configs:
6 - targets: ['192.168.1.120:9100', '192.168.1.121:9100']
7 labels:
8 group: 'production'
9 - targets: ['192.168.1.130:9100']
10 labels:
11 group: 'canary'
具体可以查看官方文档:https://prometheus.io/docs/prometheus/latest/getting_started/ ,配置完成并启动后,可以通过如下targets界面查看相关主机,也可以通过选择configuration查看当前的配置。
四、grafana的安装
grafana的安装需要依赖Golang环境,可以参考 Golang的安装 页面进行go环境的安装。通过如下命令安装grafana:
1wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
2yum localinstall grafana-5.4.2-1.x86_64.rpm
3systemctl daemon-reload
4systemctl enable grafana-server
5systemctl start grafana-server
6# 以下是字体库等相关依赖包
7yum install fontconfig
8yum install freetype*
9yum install urw-fonts
grafana默认用户名密码为admin/admin,如果需要nginx进行反向代理,可以通过如下配置进行配置:
1server {
2 listen 80;
3 server_name grafana.361way.com;
4 charset utf-8;
5 location / {
6 default_type text/html;
7 proxy_pass http://127.0.0.1:3000;
8 }
9}
编辑配置文件/etc/grafana/grafana.ini ,修改dashboards.json段落下两个参数的值:
1[dashboards.json]
2enabled = true
3path = /var/lib/grafana/dashboards
安装仪表盘JSON模版:
1git clone https://github.com/percona/grafana-dashboards.git
2cp -r grafana-dashboards/dashboards /var/lib/grafana/
通过service grafana-server restart命令重新启动服务,并打开URL进行访问,登陆后可以通过如下步骤配置数据源:
如果是通过Provisioning方式安装的(比如ansible\saltstack等工具通过yaml 文件一键安装的),关于prometheus 项的配置如下:
1apiVersion: 1
2datasources:
3 - name: Prometheus
4 type: prometheus
5 access: proxy
6 url: http://localhost:9090
至此,node_exporter + prometheus + grafana 三者的整合就结束了,后面如果要进行告警配置,还需要整合alertmanager 并配置相关rule,这个后面再单独写吧。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/prometheus-grafana/5948.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.