Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811
Prometheus

Prometheus监控系统部署方案

Prometheus监控系统部署方案

1 Prometheus简介

Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了强调这一点,并阐明项目的治理结构,Prometheus于2016年加入Cloud Native Computing Foundation,作为继Kubernetes之后的第二个托管项目。

2 特性

  • 多维度数据模型-由指标键值对标识的时间序列数据组成
  • PromQL,一种灵活的查询语言
  • 不依赖分布式存储;单个服务器节点是自治的
  • 以HTTP方式,通过pull模型拉取时间序列数据
  • 支持通过中间网关推送时间序列数据
  • 通过服务发现或者静态配置,来发现目标服务对象
  • 支持多种多样的图表和界面展示

3 组件

  • Prometheus Server:用于收集和存储时间序列数据
  • Client Library:客户端库,为需要监控的服务生成相应的metrics并暴露给Prometheus server。当 Prometheus server来pull时,直接返回实时状态的metrics
  • Exporters:用于暴露已有的第三方服务的metrics给Prometheus
  • Alertmanager:从Prometheus server端接收到alerts后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件、pagerduty、OpsGenie、webhook等
  • Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。目前使用grafana的公司有很多,如paypal、ebay、intel等

4 适用场景

Prometheus适用于记录任何纯数字时间序列。它适用于以机器为中心的监控以及高度动态的面向服务架构的监控。在微服务的世界中,Prometheus的多维度数据收集和查询非常强大。

Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。每个Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务。当基础架构的其他部分损坏时,您可以依赖它,并且您不需要设置大量的基础架构来使用它。

5 目标

Google指出,监控分为白盒监控和黑盒监控之分。

白盒监控:通过监控内部的运行状态及指标判断可能会发生的问题,从而做出预判或对其进行优化。

黑盒监控:监控系统或服务,在发生异常时做出相应措施。

Prometheus监控的目标如下:

  • 根据历史监控数据,对未来做出预测
  • 发生异常时,及时报警,或做出相应措施
  • 根据监控报警及时定位问题根源
  • 通过可视化图表展示,便于直观获取信息

6 部署过程

本次部署一台Server。服务器最低配置要求8G内存,40G硬盘。服务器IP 192.168.4.150。

6.1 关闭SELinux

SeLinux不关闭会发生无法访问的情况。

[root@localhost  ~]# setenforce 0
[root@localhost  ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

6.2 关闭防火墙

防止安装时出现各个组件的端口不能访问的问题。

[root@localhost  ~]#systemctl stop firewalld && systemctl disable firewalld                          

6.3 下载安装包

[root@localhost~]#wget\ https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
[root@localhost~]#wget\ https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz 
[root@localhost~]#wget \
https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

6.4 配置Prometheus Server

解压Prometheus压缩包,并配置Prometheus配置文件。

[root@localhost  ~]# mkdir /root/monitor
[root@localhost  ~]# tar -xvf prometheus-2.16.0.linux-amd64.tar.gz -C /root/monitor
[root@localhost  ~]# mv prometheus-2.16.0.linux-amd64 prometheus
[root@localhost  ~]# vi /home/monitor/prometheus/prometheus.yml
global:
  scrape_interval: 30s
evaluation_interval: 30s
scrape_timeout: 10s
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.4.150:9093
rule_files:
  - /root/monitor/prometheus/rule/*.rules
scrape_configs:
- job_name: 'node'
  file_sd_configs:
  - refresh_interval: 1m
    files:
    - node.json
[root@localhost  ~]# vi /root/monitor/prometheus/node.json
[
  {
    "targets": [ "192.168.5.135:9100"],
    "labels": {
      "grafana": "prometheus",
      "tera": "exporter",
      "job": "node"
    }
  }
]

6.5 System配置Prometheus

使用System配置Prometheus实现服务自启。

[root@localhost  ~]# vi /usr/lib/systemd/system/prometheus.service
[Unit]
After=docker.service
[Service]
ExecStart=/root/monitor/prometheus/prometheus \
--config.file=/root/monitor/prometheus/prometheus.yml \ 
--storage.tsdb.path=/root/monitor/prometheus/data/ --web.external-url=http://:9090
Restart=always
[Install]
WantedBy=multi-user.target

6.6 配置Alertmanager

解压Alertmanaget安装包,Alertmanager接收Prometheus监控信息并将告警信息通过邮件发送到接收人。

[root@localhost  ~]# tar -xvf alertmanager-0.20.0.linux-amd64.tar.gz -C /root/monitor
[root@localhost  ~]# mv alertmanager-0.20.0.linux-amd64.tar.gz alertmanager
[root@localhost  ~]# vi /home/monitor/alertmanager/alertmanager.yml
global:
  resolve_timeout: 10m
  smtp_smarthost: ''
  smtp_from: 'email'
  smtp_auth_username: 'email'
  smtp_auth_password: 'password'
  smtp_hello: 'Hello'
  smtp_require_tls: false
templates:
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 1m
  repeat_interval: 360m
  receiver: asterfusion
receivers:
- name: asterfusion
  email_configs:
  - to: '接收人1'
    send_resolved: true Restart=always
[Install]
WantedBy=multi-user.target

6.7 System配置Alertmanager

使用System配置Alertmanager实现服务自启。

[root@localhost  ~]#vi /usr/lib/systemd/system/alertmanager.service
[Unit]想·
After=docker.service
[Service]
ExecStart=/root/monitor/alertmanager/alertmanager  --web.listen-address=192.168.4.150:9093\
--config.file=/root/monitor/alertmanager/alertmanager.yml\  
--storage.path=/root/monitor/alertmanager
Restart=always
[Install]
WantedBy=multi-user.target

6.8 部署Granfana

[root@localhost  ~]# wget https://dl.grafana.com/oss/release/grafana-6.7.1-1.x86_64.rpm 
[root@localhost  ~]# yum -y install grafana-6.7.1-1.x86_64.rpm

6.9 部署Node_exporter

部署Node_exporter采集服务器资源信息。

[root@localhost  ~]# tar -xvf node_exporter-0.18.1.linux-amd64.tar.gz -C /root/monitor
[root@localhost  ~]# mv node_exporter-0.18.1.linux-amd64.tar.gz node_exporter

6.10 System配置Node_exporter

使用Sysytem管理Node_exporter实现服务自启。

[root@localhost  ~]#vi /usr/lib/systemd/system/node.service
[Unit]
After=docker.service
[Service]
ExecStart=/root/monitor/node_exporter/node_exporter 
Restart=always
[Install]
WantedBy=multi-user.target

6.11 添加监控主机

在Prometheus文件夹下创建node.json文件,添加需要监控的主机列表。

[root@localhost  ~]# vi /root/monitor/prometheus/node.json
[
  {
    "targets": [ "192.168.4.150:9100"],
    "labels": {
      "grafana": "controller",
      "tera": "exporter",
      "job": "node"
    }
  },
]

6.12 添加报警

在Prometheus的rule文件夹下定义报警规则,满足条件则把信息推送到Alertmanager。

[root@localhost  ~]# mkdir /root/monitor/prometheus/rule
[root@localhost  ~]# vi /root/monitor/prometheus/rule/node.rules
groups:
- name: nodedown
  rules:
  - alert: nodeDown
    expr: up{tera="exporter"} == 0
    for: 1m
    labels:
      severity: serious
    annotations:
      summary: "Instance {{ $labels.instance }} node is Down"
      description: "{{ $labels.instance }} node is Down"

6.13 启动服务

Prometheus监控所有组件都是用System管理。

[root@localhost  ~]# systemctl start prometheus.service && systemctl enable prometheus.service
[root@localhost  ~]# systemctl start node.service && systemctl enable node.service
[root@localhost  ~]# systemctl start alertmanager && systemctl enable alertmanager
[root@localhost  ~]# systemctl start grafana-server && systemctl enable grafana-server

6.14 监控Web

Prometheus Web URL: http://192.168.4.150:9090

Alertmanager Web URL: http://192.168.4.150:9093

Node_exporter Web URL: http://192.168.4.150:9100

Grafana Web URL : http://192.168.4.150:3000

7 参考资料

  1. Prometheus官网:https://prometheus.io/
  2. Grafana官网:https://grafana.com/

如有其它问题,请填写右侧需求表单联系我们。

A-lab-云网络, A-lab-部署验证

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2