Prometheus+grafana监控配置

2018年11月30日 发表评论 阅读评论

一、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 。其架构如下:

prometheus

二、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)($|/) &

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

node_exporter

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

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查看当前的配置。

prometheus-targets

四、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进行访问,登陆后可以通过如下步骤配置数据源:

grafana-prometheus-sources

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

apiVersion: 1
datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://localhost:9090

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




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: 开源软件 标签: ,
  1. heyc
    2019年4月16日17:20 | #1

    写的不是很具体,比如设置开机启动,监控cpu,hd和客户端安装等等!!

    • admin
      2019年4月17日03:28 | #2

      是的,细化的东西可以看官方文档,之前是计划写个系列专题的,后来因为其他原因搁置了。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.