第六课:Prometheus

matthewhan 2019-12-28

为什么要监控

  • 对系统不间断实时监控
  • 实时反馈系统当前状态
  • 抱枕该业务持续性运行

监控什么

监控分类监控内容
硬件监控温度,硬件故障等
系统监控CPU,内存,硬盘,网卡流量,TCP状态,进程数
应用监控nginx,tomcat,php,mysql,redis等
日志监控系统日志,服务日志,访问日志,错误日志
安全监控WAF,敏感文件监控
API监控可用性,接口请求,响应时间
业务监控例如电商网站,每分钟产生多少订单,注册多少用户,多少活跃用户,推广活动效果等
流量分析根据流量获取用户相关型芯,例如用户地理位置,某页面访问状态,页面停留时间等

Prometheus概述

prometheus 是一个最初在soundcloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,prometheus于2016年加入云原生云计算基金会(CNCF),成为继kubernetes之后的第二个托管项目。

https://prometheus.io
https://github.com/prometheus

prometheus特点:

  • 多维度数据模型,由度量名称和键值对标识的时间序列数据。
  • PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询。
  • 不依赖分布式存储,单个服务器节点可直接工作。
  • 基于HTTP的pull方式采集时间序列数据。
  • 推送时间序列数据通过PushGateway组件支持。
  • 通过服务发现或静态配置发现目标。
  • 多种图形模式及仪表盘支持(grafana)

第六课:Prometheus

prometheus server: 收集指标和存储时间序列数据,并提供查询接口。
clientlibrary: 客户端库。
push gateway: 短期存储指标数据。主要用于临时性的任务。
exporters: 采集已有的第三方服务监控指标并暴露metrics。
alertmanager: 告警。
web UI: 简单的web UI。

实例: 可以抓取的目标称之为实例(instances)。
作业: 具有相同?的实例集合称为作业(job)。

运行prometheus容器

docker run     -p 9090:9090     -v /root/prom/prometheus.yml:/etc/prometheus/prometheus.yml     prom/prometheus

prometheus+grafana监控docker主机

cadvisor(container advisor)用于收集正在运行的容器资源使用和性能信息。grafana是一个开源的度量分析和可视化系统。

https://github.com/google/cadvisor
https://grafana.com/grafana/download
https://grafana.com/dashboards/193

运行cadvisor容器

sudo docker run   --volume=/:/rootfs:ro   --volume=/var/run:/var/run:ro   --volume=/sys:/sys:ro   --volume=/var/lib/docker/:/var/lib/docker:ro   --volume=/dev/disk/:/dev/disk:ro   --publish=8080:8080   --detach=true   --name=cadvisor   google/cadvisor:latest

### 运行grafana容器

docker run -d --name=grafana -p 3000:3000 grafana/grafana

prometheus,cadvisor,grafana三个容器均正常运行后,在grafana web页面(192.168.1.88:3000)登录(初始用户名和密码:admin/admin)后添加prometheus地址(192.168.1.88:9090),还需要修改prometheus.yml文件添加cadvisor的地址及监控job。

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'docker'
    static_configs:
    - targets: ['192.168.1.88:8080']

以上监控添加完成后,需要在grafana的dashboards添加监控仪表盘,通过仪表盘显示监控内容
仪表盘可以从grafana官方获取

https://grafana.com/grafana/dashboards

相关推荐