Prometheus+Grafana监控-基于docker-compose搭建

前言

Prometheus

Prometheus 是有 SoundCloud 开发的开源监控系统和时序数据库,基于 Go 语言开发。通过基于 HTTP 的 pull 方式采集时序数据,通过服务发现或静态配置去获取要采集的目标服务器,支持多节点工作,支持多种可视化图表及仪表盘。
贴一下官方提供的架构图:

Prometheus+Grafana监控-基于docker-compose搭建

Pormetheus 几个主要模块有,Server,Exporters,Pushgateway,PromQL,Alertmanager,WebUI等,主要逻辑如下:

  • Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。
  • 当新拉取的数据大于配置内存缓存区时,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。
  • Prometheus 配置 rules,然后定时查询数据,当条件触发时,会将 alert 推送到配置的 Alertmanager。
  • Alertmanager 收到警告时,会根据配置,聚合、去重、降噪等操作,最后发送警告。
  • 可以使用 API,Prometheus Console 或者 Grafana 查询和聚合数据。

Grafana

Grafana 是一个开源的度量分析及可视化套件。通过访问数据库(如InfluxDB、Prometheus),展示自定义图表。

Exporter

Exporter 是 Prometheus 推出的针对服务器状态监控的 Metrics 工具。目前开发中常见的组件都有对应的 exporter 可以直接使用。常见的有两大类,一种是社区提供的,包含数据库,消息队列,存储,HTTP服务,日志等,比如 node_exporter,mysqld_exporter等;还有一种是用户自定义的 exporter,可以基于官方提供的 Client Library 创建自己的 exporter 程序。
每个 exporter 的一个实例被称为 target,Prometheus 通过轮询的方式定期从这些 target 中获取样本数据。

Prometheus+Grafana监控-基于docker-compose搭建

原理简介

Prometheus+Grafana监控-基于docker-compose搭建

安装数据收集器 node-exporter

安装 node-exporter

cd /opt
wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0-rc.0/node_exporter-1.4.0-rc.0.linux-amd64.tar.gz
tar xvf node_exporter-1.4.0-rc.0.linux-amd64.tar.gz
mv node_exporter-1.4.0-rc.0.linux-amd64 node_exporter
mv node_exporter /usr/local/

运行如下命令测试 node-exporter 收集器启动情况,正常情况下会输出服务端口。

/usr/local/node_exporter/node_exporter

添加到系统服务

vim /etc/systemd/system/node_exporter.service
添加如下内容

[Unit]
Description=mysqld_exporter
After=network.target
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

加载并重启服务

加载配置
systemctl daemon-reload
启动服务
systemctl restart node_exporter.service
查看服务状态
systemctl status node_exporter.service
配置开机启动
systemctl enable node_exporter.service

查看数据收集情况

重新起一个终端,查看数据收集情况。也可以在浏览器中查看。

curl http://127.0.0.1:9100/metrics

安装 prometheus 和 grafana

安装 docker&docker-compose

本文介绍的安装方法是基于 docker-compose 的,所以需要先安装相关 docker 环境。相关方法可以见笔者的其他文章,本文中不做详细介绍。

安装 prometheus 和 grafana

可以直接 clone 这个项目来快速搭建:
https://github.com/FX-Max/docker-install-everything/tree/master/prometheus

该项目是笔者弄的一个使用 docker-compose 搭建软件开发常见服务的项目,大家觉得有帮助,可以帮忙点个 star,感谢。

根据实际情况,修改 prometheus.yml 文件中的内容,将ip修改为上面安装了 node-exporter 的服务器ip即可。
然后在该目录下执行 docker-compose up -d即可, docker ps查看服务启动情况。

CONTAINER ID   IMAGE              COMMAND                  CREATED        STATUS        PORTS                                      NAMES
6f360e9ab242   grafana/grafana    "/run.sh"                25 hours ago   Up 25 hours   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp  grafana
97b92b65aca6   prom/prometheus    "/bin/prometheus --c..."   25 hours ago   Up 21 hours   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp  prometheus
3f5906f07bf6   prom/pushgateway   "/bin/pushgateway"       25 hours ago   Up 25 hours   0.0.0.0:9091->9091/tcp, :::9091->9091/tcp  pushgateway
f556168c1b8b   prom/alertmanager  "/bin/alertmanager -..."   25 hours ago   Up 25 hours   0.0.0.0:9093->9093/tcp, :::9093->9093/tcp  alertmanager

docker-compose.yml 内容:

version: "3"
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    user: root
   restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./conf/prometheus:/etc/prometheus
      - ./data/prometheus/prometheus_db:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
    networks:
      - net-prometheus

  grafana:
    image: grafana/grafana
    container_name: grafana
    user: root
   restart: always
    ports:
      - "3000:3000"
    volumes:
      #- ./conf/grafana:/etc/grafana
      - ./data/prometheus/grafana_data:/var/lib/grafana
    depends_on:
      - prometheus
    networks:
      - net-prometheus

  pushgateway:
    image: prom/pushgateway
    container_name: pushgateway
    user: root
   restart: always
    ports:
      - "9091:9091"
    volumes:
      - ./data/prometheus/pushgateway_data:/var/lib/pushgateway

  alertmanager:
    image: prom/alertmanager
    hostname: alertmanager
    container_name: alertmanager
    user: root
   restart: always
    ports:
      - "9093:9093"
    volumes:
      - ./data/prometheus/alertmanager_data:/var/lib/alertmanager

networks:
  net-prometheus:

prometheus.yml 内容:

global:
  scrape_interval:     5s
  evaluation_interval: 5s

  external_labels:
      monitor: 'dashboard'

alerting:
 alertmanagers:
 - static_configs:
    - targets:
        - "alertmanager:9093"

rule_files:
  #- 'alert.rules'

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['prometheus:9090']

  - job_name: node
    static_configs:
      - targets: ['192.168.0.103:9100','pushgateway:9091']

  - job_name: 'mysql-131'
    static_configs:
     - targets: ['192.168.0.131:9104']
       labels:
          instance: mysql

查看 prometheus

访问 http://127.0.0.1:9090/targets,效果如下,上面我们通过 node_exporter 收集的节点状态是 up 状态。

Prometheus+Grafana监控-基于docker-compose搭建

配置 Grafana

访问 http://127.0.0.1:3000,登录 Grafana,默认的账号密码是 admin:admin,首次登录需要修改默认密码。

Prometheus+Grafana监控-基于docker-compose搭建

按照如下添加 data sources,将 prometheus 添加到 data sources 中。

Prometheus+Grafana监控-基于docker-compose搭建
Prometheus+Grafana监控-基于docker-compose搭建
Prometheus+Grafana监控-基于docker-compose搭建
添加 prometheus 服务地址,此处由于服务是基于 docker-compose 构建的,没有填写ip,直接填写服务名即可。

添加监控模版

Prometheus+Grafana监控-基于docker-compose搭建

输入官方模版 id,1860,点击 load。然后按照下图选择确认即可。

Prometheus+Grafana监控-基于docker-compose搭建

导入成功后,会自动跳转到监控面板页面,如下图。

Prometheus+Grafana监控-基于docker-compose搭建

结语

本文简单介绍了 prometheus + grafana 服务搭建流程,初步跑通了整个服务。当然它还有很多功能,后续笔者会开新的文章来分享。

参考文档

官方模板库:https://grafana.com/grafana/dashboards/
node 模板:https://grafana.com/grafana/dashboards/1860
MySQL 模板:https://grafana.com/grafana/dashboards/7362
docker 搭建 prometheus&grafana:https://blog.51cto.com/keep11/4261521

Original: https://www.cnblogs.com/immaxfang/p/16621417.html
Author: immaxfang
Title: Prometheus+Grafana监控-基于docker-compose搭建

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582234/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux三种网络配置详解

    在介绍网络模式之前,使用几个关于网络的简单命令 [En] Before introducing the network mode, the use of several simpl…

    Linux 2023年5月27日
    076
  • 【k8s】kubeadm init 时报错 unknown service runtime.v1alpha2.RuntimeService

    在测试机器中准备搭建 k8s 集群,在 master 节点执行 kubeadm init 时出现报错, unknown service runtime.v1alpha2.Runti…

    Linux 2023年6月7日
    0111
  • 模拟MBR Grub故障修复

    1. MBR故障修复 破坏mrb 重启后镜像界面显示找不到引导系统, 连接光驱,进入紧急救援模式到shell字符界面还原备份 挂载硬盘并备份groub.conf文件 破坏grub并…

    Linux 2023年6月8日
    085
  • 学习一下 JVM (二) — 学习一下 JVM 中对象、String 相关知识

    一、JDK 8 版本下 JVM 对象的分配、布局、访问(简单了解下) 1、对象的创建过程 (1)前言Java 是一门面向对象的编程语言,程序运行过程中在任意时刻都可能有对象被创建。…

    Linux 2023年6月11日
    0102
  • MybatisPlus拓展——实现多数据源操作

    多数据源 适用:一般工作时候会有多个数据库,每个库对应不同的业务数据。程序如果每次数据都访问同一个数据库,该数据库压力很大访问会很慢。 1、导入依赖 com.baomidou dy…

    Linux 2023年6月7日
    068
  • 【Linux】【虚拟机】 IP地址的动态与静态设置

    配置文件的修改 配置文件的修改 vim /etc/sysconfig/network-scripts/ifcfg-ens33 IP配置方式(不指定:none,静态:static,动…

    Linux 2023年6月14日
    097
  • 清空Redis集群所有节点的数据工具

    FLUSHALL和FLUSHDB是单机命令,所以清空集群需要在所有Master节点上均执行一次。下载:https://github.com/eyjian/redis-tools/b…

    Linux 2023年5月28日
    095
  • Gitlab 403 forbidden 并发引起IP被封

    问题 在工作中自搭建的Gitlab。但今天打开页面的时候显示的是空白页面,上面还有一次文本Forbidden。 原因 Gitlab使用rack_attack做了并发访问的限制。 解…

    Linux 2023年6月14日
    070
  • redis的事件处理机制

    redis的事件处理机制 redis是单进程,单线程模型,与nginx的多进程不同,与golang的多协程也不同,”工作的工人”那么少,可那么为什么redi…

    Linux 2023年5月28日
    095
  • CTF中的一些图形密码

    1.传统猪圈密码 猪圈密码又称为亦称朱高密码、共济会暗号、共济会密码或共济会员密码;是一种以特定符号来替换字母的加密方式在线解密网址:http://moersima.00cha.n…

    Linux 2023年6月6日
    0108
  • Linux显示IP和主机名

    (1) ifconfig:Linux ifconfig命令用于显示或设置网络设备。 语法: ifconfig [网络设备][down up -allmulti -arp -prom…

    Linux 2023年6月8日
    098
  • 回顾乐信集团工作经历

    2019年入职乐信用户增长部门,负责开发开放平台的需求和合作方技术支持。乐信金融开放平台提供了金融业务API以及配套SDK等组件,为合作商户的产品赋予分期支付和小额贷款能力,子系统…

    Linux 2023年6月6日
    090
  • zabbix自定义监控进程和日志

    自定义监控 进程 日志 mysql主从状态 mysql主从延迟 自定义监控 进程 [root@client ~]# cd /usr/local/etc/ [root@client …

    Linux 2023年6月7日
    0145
  • PWN学习总结

    一、栈溢出原理 什么是栈溢出?栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分…

    Linux 2023年6月8日
    088
  • 关于连接服务器redis的教程

    第一步:下载RedisDesktopManager 这个百度一搜就有了,但是现在的版本ssh用不了建议找可以用的版本,这个百度,懂得都懂。 第二步:服务器宝塔redis设置 在配置…

    Linux 2023年6月11日
    075
  • gerrit系统如何配置访问控制

    .版本:v0.3作者:河东西望日期:2022-7-13. gerrit系统的上手使用有两个难点: 想要上手使用gerrit的同仁们,搭建部署好gerrit系统之后,会发现gerri…

    Linux 2023年6月7日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球