内容简介:ubuntu安装详见:docker安装详见:docker-compose安装详见:
环境说明:
主机名 | Docker版本 | Prometheus版本 | Node exporter版本 | cAdvisor版本 | Grafana版本 | ip地址 |
---|---|---|---|---|---|---|
docker01 | 18.09.2 | 2.9.2 | 0.18.0 | v0.32.0 | v6.1.6 | 172.27.9.71 |
docker02 | 18.09.2 | / | 0.18.0 | v0.32.0 | / | 172.27.9.75 |
ubuntu安装详见: Ubuntu16.04.5以lvm方式安装全记录
docker安装详见: Ubuntu16.04安装Docker
docker-compose安装详见: Docker Compose实践
一、Prometheus简介
Prometheus是一套开源的系统监控报警框架,提供了监控数据搜集、存储、处理、可视化和告警一套完整的解决方案,该项目于2012年在SoundCloud上创建,拥有非常活跃的开发人员和用户社区,许多公司和组织都采用了Prometheus。作为一个独立的开源项目,Prometheus于2016年正式加入Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes的项目。
Prometheus特点:
- 多维数据模型,其中时间序列数据通过metric名和键值对来区分。
- 灵活而强大的查询语句(PromQL)
- 不依赖分布式存储,可直接在本地工作
- 通过HTTP使用pull模式采集时间序列数据
- 可以采用push gateway的方式把时间序列数据推送至 Prometheus server 端
- 可以通过服务发现或者静态配置去获取监控的 targets
- 支持多种图形和仪表盘模式
二、Prometheus架构
组件:
Prometheus生态圈由多个组件组成,其中许多是可选的:
- Prometheus Server: 用于抓取和存储时间序列数据。
- Client Library:为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。
- Push Gateway:主要用于短期的jobs。
- Exporters: 用于暴露已有的第三方服务的metrics给Prometheus。
- Alertmanager: 用于处理告警。
- 其他的支持工具。
大多数普罗米修斯组件都是用 go 编写的,这使得它们很容易作为静态二进制文件进行构建和部署。
工作流程:
1.Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。
2.Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。
3.Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
4.在图形界面中,可视化采集数据。
三、Prometheus搭建
1. 环境说明
主机名 | Prometheus Server | Node Exporter | cAdvisor | Grafana |
---|---|---|---|---|
docker01 | √ | √ | √ | √ |
docker02 | × | √ | √ | × |
通过Prometheus监控 docker 01和docker02,其中Node Exporter用于监控host,cAdvisor用于监控容器,这两个监控软件两个节点都部署。Prometheus Server和Grafana只在docker01上部署,充当监控监控服务器。
2. 监控主机部署
2.1 docker-compose.yml配置
root@docker02:~# more docker-compose.yml version: '3.7' services: node-exporter: image: prom/node-exporter:latest network_mode: 'host' container_name: node-exporter restart: unless-stopped ports: - '9100:9100' command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' volumes: - /proc:/host/proc - /sys:/host/sys - /:/rootfs cadvisor: image: google/cadvisor:latest network_mode: 'host' container_name: cadvisor restart: unless-stopped ports: - '8080:8080' volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro
2.2 运行docker-compose
root@docker02:~# docker-compose up -d
2.3 查看Node Exporter监控数据
http://172.27.9.75:8080/metrics
2.4 查看cAdvisor监控数据
http://172.27.9.75:8080/metrics
3. 监控服务器部署
3.1 prometheus.yml配置
root@docker01:~# more prometheus.yml global: # 全局设置,可以被覆盖 scrape_interval: 15s # 抓取采样数据的时间间隔,每15秒去被监控机上采样,即数据采集频率 evaluation_interval: 15s # 监控数据规则的评估频率,比如设置文件系统使用率>75%发出告警则每15秒执行一次该规则,进行文件系统检查 external_labels: # 与外部通信时用的外部标签 monitor: 'nodecontainer-monitor' scrape_configs: # 抓取配置 - job_name: 'prometheus' # 任务名,全局唯一 scrape_interval: 5s # 本任务的抓取间隔,覆盖全局配置 static_configs: # 静态目标配置 # 抓取地址,路径为默认的/metrics - targets: ['localhost:9090','localhost:8080','localhost:9100','172.27.9.75:8080','172.27.9.75:9100']
3.2 docker-compose.yml配置
root@docker01:~# more docker-compose.yml version: '3.7' services: prometheus: image: prom/prometheus:latest network_mode: 'host' container_name: prometheus restart: unless-stopped ports: - '9090:9090' volumes: - /root/prometheus.yml:/etc/prometheus/prometheus.yml depends_on: - cadvisor node-exporter: image: prom/node-exporter:latest network_mode: 'host' container_name: node-exporter restart: unless-stopped ports: - '9100:9100' command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' volumes: - /proc:/host/proc - /sys:/host/sys - /:/rootfs cadvisor: image: google/cadvisor:latest network_mode: 'host' container_name: cadvisor restart: unless-stopped ports: - '8080:8080' volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro grafana: image: grafana/grafana:latest network_mode: 'host' container_name: grafana restart: unless-stopped ports: - '3000:3000' user: '0' volumes: - ./data/grafana:/var/lib/grafana environment: - GF_SECURITY_ADMIN_PASSWORD=admin - GF_SERVER_ROOT_URL=http://172.27.9.71:3000
grafana登陆地址为http://172.27.9.71:3000 ,密码为admin,容器grafana要以root用户执行,否则会报权限错误。
3.3 运行docker-compose
root@docker01:~# docker-compose up -d
3.4 查看Prometheus监控数据
3.4.1 配置文件查看
3.4.2 监控信息查看
3.4.3 查看指定监控项
比如查看cpu五分钟负载
四、Grafana配置
1. 登陆grafana
2. 添加DataSource
选择Prometheus
配置DataSource
3. Dashboards配置
3.1 下载Dashboards
3.2 导入 Dashboards
分别导入docker-monitoring_rev1.json和node-exporter-full_rev13.json用于展示container和host的监控
4. Grafana监控展示
4.1 容器监控展示
4.2 host监控展示
五、钉钉告警配置
1. 钉钉添加机器人
钉钉通过机器人来接收告警信息
选择自定义
添加
机器人名称自定义为:loong576,添加到工作通知loong576,也可以添加到群
复制webhook,完成机器人添加
2. Grafana新增告警项
新增告警通道DingDing
Name为自定义Ding-Alerts,Type选择DingDing,url为之前复制的webhook,测试正常,保存
3. 新增告警项
本文以监控容器内存使用率为例介绍grafana如何通过钉钉机器人发送告警信息
3.1 编辑Memory Usage
3.2 创建Alert
3.3 Alert配置
当容器内存使用率大于150M时发送告警信息
3.4 验证告警配置
3.5 保存告警配置
3.6 告警信息查看
手机端也会同步收到告警信息
至此完成钉钉告警信息的发送,当然,也可以新增dashboard,选择Graph方式自定义展示和告警项
目前Grafana只支持Graph添加报警规则,有一定局限性。
docker-compose和prometheus配置文件已上传github: https://github.com/loong576/prometheus.git
本文参考:
1. https://grafana.com/docs/features/datasources/prometheus/ ;
2. https://prometheus.io/docs/introduction/overview/ ;
3. https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq ;
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。