1 Star 0 Fork 0

tking / service-deploy

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
监控方案 prometheus+grafana+alertmanager 的简要介绍.md 5.93 KB
Copy Edit Web IDE Raw Blame History
tking authored 2022-03-20 10:15 . style

监控方案入门

本文将简要介绍一套监控主机或是虚拟主机或是服务的监控、警告方案。

解决场景

  • 监控中心可收集各个主机、虚拟主机的资源指标(Cpu、内存、网络IO等)信息
  • 设置阈值,和告警策略
  • 实时通知(mail、钉钉等)到管理员

组件简介

此图说明了 Prometheus 的架构及其一些生态系统组件:

2ada1ece66fcc81d704c2ba46f9dd7d3.png

prometheus

Prometheus是一个开源系统监控和警报工具包

主要特点是:

  • 具有由度量名称和键/值对标识的时间序列数据的多维数据模型
  • PromQL,一种 利用这种维度的灵活查询语言
  • 不依赖分布式存储;单个服务器节点是自治的
  • 时间序列收集通过 HTTP 上的拉模型进行
  • 通过中间网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 多种图形模式和仪表板支持

更多介绍参考: https://prometheus.io/docs/introduction/overview/

grafana

Grafana 是一个完整的可观察性堆栈,可让您监控和分析指标、日志和跟踪。它允许您查询、可视化、提醒和了解您的数据,无论数据存储在何处。

更多介绍参考: https://grafana.com/docs/grafana/latest/introduction/

alertmanager

Alertmanager处理由 Prometheus 服务器等客户端应用程序发送的警报。它负责对它们进行重复数据删除、分组并将它们路由到正确的接收器集成,例如电子邮件、PagerDuty 或 OpsGenie。它还负责警报的静音和抑制。

更多介绍参考: https://prometheus.io/docs/alerting/latest/alertmanager/

搭建部署

at first,先动手搭建部署,这里使用docker-compose。

  1. 一台虚拟主机(Vmware),这里使用Esxi 创建(1核4G),OS: Ubuntu
  2. 提前安装docker 和 docker-compose
  3. 为了快捷学习实践,借鉴开源项目 https://github.com/Einsteinish/Docker-Compose-Prometheus-and-Grafana( 使用Prometheus、Grafana、cAdvisor、 NodeExporter和 AlertManager 警报的Docker 主机和容器监控解决方案)
  4. docker-compose 启动
  5. 创建 .env:
     ADMIN_USER=admin  
     ADMIN_PASSWORD=admin
  1. 在你的 Docker 主机上克隆这个存储库,cd 到 test 目录并运行 compose up:
git clone https://github.com/Einsteinish/Docker-Compose-Prometheus-and-Grafana.git
cd Docker-Compose-Prometheus-and-Grafana
docker-compose up -d
  • Prometheus(度量数据库)http://:9090
  • Prometheus-Pushgateway(用于临时和批处理作业的推送接受器)http://:9091
  • AlertManager(警报管理)http://:9093
  • Grafana(可视化指标)http://:3000
  • NodeExporter(主机指标收集器)
  • cAdvisor(容器指标收集器)
  • Caddy(prometheus 和 alertmanager 的反向代理和基本身份验证提供程序)
  1. 登入 grafana dashboard:user: admin pwd :admin

  2. 查看主机指标

    1. 创建仪表盘 “+ -- import + 输入1860 + Load”

    66bf1d41931c4a04082e7b5b2d047295.png

    查看结果:

    68e6779f84b25e4881d24388b05b74f2.png

  3. 查看altermanager

    7a8830cd45ac9e53b4dbd17d46542c0b.png

    输出

    6a17ca8b4930c2448fc3b402e656f9e4.png

监控其他主机

接着为需要监控的目标主机启动指标收集器

  1. docker-compose 运行 https://github.com/Einsteinish/Docker-Compose-Prometheus-and-Grafana/blob/master/docker-compose.exporters.yml
  2. 修改配置
$dockprom/prometheus# vim prometheus.yml

# A scrape configuration containing exactly one endpoint to scrape.
scrape_configs:
  - job_name: 'mcbg'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.1.112:9100']  //默认端口为9100

再访问http://:9090 的targets 会多出这台主机的 Endopoints

fced1e2e6a5d89ee8329f3ef3b51a270.png

说明已经支持收集到指标数据,接着需要配置 alert对数据进行分析和警报

设置警报

这里是以企业微信邮箱为例: 修改alertmanager配置

vi alertmanager/config.yml

增加配置:

global:
  smtp_smarthost: 'smtp.exmail.qq.com:465'  //465为邮箱端口
  smtp_from: 'service@yourdomain' //yourdomain为企业邮箱
  smtp_auth_username: 'service@yourdomain'
  smtp_auth_password: '企业微信密码'
  smtp_require_tls: false

route:
  # If an alert has successfully been sent, wait 'repeat_interval' to resend them.
  repeat_interval: 10s
  #  A default receiver
  receiver: team-mails

receivers:
  - name: 'team-mails'
    email_configs:
    - to: 'james@yourdomain'  //企业员工-James具体邮箱
    - to: 'kobe@yourdomain' //企业员工-Kobe具体邮箱

最后为了测试,你可以修改 prometheus/rules

- alert: high_memory_load
    expr: (sum(node_memory_MemTotal_bytes) - sum(node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) ) / sum(node_memory_MemTotal_bytes) * 100 > 85
    for: 30s
    labels:
      severity: warning
    annotations:
      summary: "Server memory is almost full"
      description: "Docker host memory usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."

这里把85改成1,表示当内存超过1% 时会给上面设定的邮箱发送邮件,邮件内容大概如下: 74e0bb9bf26678b520366ba38ff61294.png

完成。

参考:

Comment ( 0 )

Sign in to post a comment

Go
1
https://gitee.com/lucktk/service-deploy.git
git@gitee.com:lucktk/service-deploy.git
lucktk
service-deploy
service-deploy
master

Search