# monitor_Prometheus **Repository Path**: chenl16/monitor_prometheus ## Basic Information - **Project Name**: monitor_Prometheus - **Description**: 简述Prometheus监控套件以及docker方式部署 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-09 - **Last Updated**: 2024-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # monitor_Prometheus #### 介绍 简述Prometheus监控套件以及docker方式部署 # 监控 监控是确保系统稳定性和性能的关键环节,它可以帮助我们及时发现并解决问题,从而避免潜在的损失和风险。具体来说,监控的重要性体现在以下几个方面: 1. **及时发现故障**:通过监控系统的各项指标,如CPU使用率、内存占用、磁盘空间、网络流量等,可以及时发现系统异常和故障,并迅速采取措施进行修复,避免故障扩大和影响业务运行。 2. **优化系统性能**:监控可以帮助我们了解系统的运行状况和资源使用情况,从而找到性能瓶颈并进行优化。例如,通过监控发现某个服务响应时间过长,可以进一步分析原因并调整配置,提高系统性能。 3. **保障数据安全**:监控还可以帮助我们确保数据的安全性和完整性。通过对数据的访问、传输和存储过程进行监控,可以及时发现潜在的安全威胁并采取措施进行防范,保护用户数据不被泄露或损坏。 4. **满足合规要求**:在某些行业,如金融、医疗等,对数据保护和隐私保护有严格的合规要求。通过监控可以确保系统符合相关法律法规和行业标准的要求,避免因违规操作而面临的法律风险和处罚。 ## **Prometheus 监控套件** Prometheus、Grafana、Node Exporter和Alertmanager是一组用于监控和可视化系统性能的开源工具,它们通常一起使用,形成一个强大的、完整的监控和告警系统。 协同工作 这四个工具协同工作,形成了一个完整的监控和告警系统: - **Node Exporter** 收集主机级别的指标。 - **Prometheus** 存储和查询这些指标,并提供告警功能。 - **Grafana** 提供可视化界面,用于展示 Prometheus 收集的监控数据,并可以基于这些数据定义警报规则。 - **Alertmanager** 接收 Prometheus 触发的告警,并进行处理和管理,最后将告警发送给相关人员。 通过这样的协同工作,整个系统能够实时了解系统的状态、性能和健康状况,并在必要时采取措施,确保系统的稳定运行。 ### 1. Node Exporter **概述**: Node Exporter 是一个用于在 Unix/Linux 系统上暴露系统信息的 Prometheus Exporter。它会收集关于系统资源使用情况、性能指标等方面的信息,并将这些信息提供给 Prometheus 进行监控。 **核心功能**: - **数据采集**:Node Exporter 安装在被监控的服务器上,收集包括 CPU 使用率、内存使用率、磁盘空间、网络流量等在内的系统级指标。 - **暴露数据**:通过 HTTP 接口暴露收集到的数据,供 Prometheus 抓取。 ``` root@docker:~/monitor_Prometheus/node_exporter# ls Dockerfile node_exporter-1.8.0.linux-amd64.tar.gz root@docker:~/monitor_Prometheus/node_exporter# cat Dockerfile FROM ubuntu:22.04 LABEL MAINTAINER=chenlin ADD ./node_exporter-1.8.0.linux-amd64.tar.gz /root/ EXPOSE 9100 CMD ["/root/node_exporter-1.8.0.linux-amd64/node_exporter"] root@docker:~/monitor_Prometheus/node_exporter# docker build -t monitor-exporter:v1.0 . ``` ### 2. Alertmanager **概述**: Alertmanager 是 Prometheus 生态系统中的一个组件,负责处理和管理告警。当 Prometheus 检测到异常或达到某个预定的阈值时,它将生成告警并将其发送到 Alertmanager。 **核心功能**: - **告警处理**:进行静默、分组、抑制和路由告警,以减少告警的噪音,并确保相关人员能够接收到重要的告警。 - **告警通知**:将告警发送到不同的接收端,如电子邮件、Slack、PagerDuty 等,以便相关人员能够及时了解并采取行动。 ``` root@docker:~/monitor_Prometheus/altermanager# ls alertmanager-0.27.0.linux-amd64.tar.gz Dockerfile root@docker:~/monitor_Prometheus/altermanager# cat Dockerfile FROM ubuntu:22.04 LABEL MAINTAINER=chenlin ADD ./alertmanager-0.27.0.linux-amd64.tar.gz /root/ WORKDIR /root/alertmanager-0.27.0.linux-amd64/ EXPOSE 9093 EXPOSE 9094 CMD ["./alertmanager","--config.file=alertmanager.yml"] root@docker:~/monitor_Prometheus/altermanager# docker build -t monitor-alert:v1.0 . ``` ### 3. Prometheus **概述**: Prometheus 是一个开源的监控系统和时间序列数据库,由 SoundCloud 开发,后成为 Cloud Native Computing Foundation (CNCF) 的一部分。它主要用于记录实时指标,如CPU温度、内存使用量或HTTP请求的吞吐量等。 **核心功能**: - **主动式采集**:通过配置 exporter 或直接使用内置的采集方式,主动从目标系统获取监控指标数据。 - **灵活的指标定义**:支持各种类型的指标,如计数器、仪表盘、直方图等。 - **强大的查询语言**:PromQL(Prometheus Query Language)允许用户进行复杂的查询和聚合操作,以便深入分析监控数据。 - **告警机制**:可以基于查询结果设置告警规则,当指标达到特定阈值时触发告警。 - **易于集成**:能够与多种系统和工具集成,如 Grafana 用于数据可视化。 ``` root@docker:~/monitor_Prometheus/prometheus# ls Dockerfile prometheus-2.45.5.linux-amd64.tar.gz root@docker:~/monitor_Prometheus/prometheus# tar -zxf prometheus-2.45.5.linux-amd64.tar.gz root@docker:~/monitor_Prometheus/prometheus# ls Dockerfile prometheus-2.45.5.linux-amd64 prometheus-2.45.5.linux-amd64.tar.gz root@docker:~/monitor_Prometheus/prometheus# cd prometheus-2.45.5.linux-amd64/ root@docker:~/monitor_Prometheus/prometheus/prometheus-2.45.5.linux-amd64# ls console_libraries consoles LICENSE NOTICE prometheus prometheus.yml promtool root@docker:~/monitor_Prometheus/prometheus/prometheus-2.45.5.linux-amd64# vim prometheus.yml root@docker:~/monitor_Prometheus/prometheus/prometheus-2.45.5.linux-amd64# cat prometheus.yml 4# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=` 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: "node" static_configs: - targets: ["monitor-node:9100"] root@docker:~/monitor_Prometheus/prometheus# cat Dockerfile FROM ubuntu:22.04 LABEL MAINTAINER=chenlin ADD ./prometheus-2.45.5.linux-amd64.tar.gz /root/ COPY ./prometheus-2.45.5.linux-amd64/prometheus.yml /data/prometheus/prometheus.yml EXPOSE 9090 CMD ["/root/prometheus-2.45.5.linux-amd64/prometheus","--config.file=/data/prometheus/prometheus.yml"] root@docker:~/monitor_Prometheus/prometheus# docker build -t monitor-prometheus:v1.0 . ``` ### 4. Grafana **概述**: Grafana 是一个开源的数据可视化和监控平台,由 Go 语言开发。它提供了丰富的图表和仪表盘,用于将各种数据源的信息可视化展示。 **核心功能**: - **可视化**:Grafana 提供了快速和灵活的客户端图形,具有多种选项。面板插件为各种不同的方式可视化指标和日志。 - **报警**:支持为最重要的指标定义警报规则,并持续评估这些规则。当数据超过预设阈值时,Grafana 会发送通知。 - **通知**:当警报状态发生变化时,Grafana 可以发送通知,这些通知可以通过电子邮件、短信等方式接收。 - **动态仪表盘**:使用模板变量,用户可以创建动态和可重用的仪表板。 - **混合数据源**:支持在同一个图中混合不同的数据源,用户可以根据每个查询指定数据源。 ``` root@docker:~/monitor_Prometheus/grafana# ls Dockerfile grafana-10.4.2.linux-amd64.tar.gz root@docker:~/monitor_Prometheus/grafana# cat Dockerfile FROM ubuntu:22.04 LABEL MAINTAINER=chenlin ADD ./grafana-10.4.2.linux-amd64.tar.gz /root/ WORKDIR /root/grafana-v10.4.2/ EXPOSE 3000 CMD ["./bin/grafana-server"] root@docker:~/monitor_Prometheus/grafana# docker build -t monitor-grafana:v1.0 . ``` ``` root@docker:~/monitor_Prometheus# ls altermanager docker-compose.yml grafana node_exporter prometheus root@docker:~/monitor_Prometheus# cat docker-compose.yml version: '3' services: monitor-node: container_name: monitor-node image: monitor-exporter:v1.0 ports: - 9100:9100 monitor-alertmanager: container_name: monitor-alertmanager image: monitor-alert:v1.0 ports: - 9093:9093 - 9094:9094 monitor-grafana: container_name: monitor-grafana image: monitor-grafana:v1.0 ports: - 3000:3000 monitor-prometheus: container_name: monitor-prometheus image: monitor-prometheus:v1.0 ports: - 9090:9090 root@docker:~/monitor_Prometheus# docker-compose up -d WARN[0000] /root/monitor_Prometheus/docker-compose.yml: `version` is obsolete [+] Running 5/5 ✔ Network monitor_prometheus_default Created 0.2s ✔ Container monitor-alertmanager Started 1.6s ✔ Container monitor-grafana Started 1.5s ✔ Container monitor-prometheus Started 1.6s ✔ Container monitor-node Started 1.0s ##username: admin ##password: admin ``` ![输入图片说明](grafana01.png) ![输入图片说明](grafana02.png) ![输入图片说明](grafana03.png) ![输入图片说明](grafana04.png) ![输入图片说明](grafana05.png) ![输入图片说明](grafana06.png) ![输入图片说明](grafana07.png) ![输入图片说明](grafana08.png) ![输入图片说明](grafana09.png) ![输入图片说明](grafana10.png)