1-3 docker 安装 prometheus

news/2024/5/18 21:27:12 标签: docker, prometheus, 容器

一、环境

1、环境准备

安装Docker

镜像加速

docker-toc" style="margin-left:120px;">安装 docker

检查版本

安装Docker-compose

二、Docker-compose 安装 Prometheus

docker-compose%20%E5%92%8C%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6-toc" style="margin-left:40px;">1、【方式一】手动创建 docker-compose 和 配置文件

prometheus%E7%9B%91%E6%8E%A7%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9-toc" style="margin-left:80px;">创建prometheus监控的文件夹

创建alertmanager的配置文件 - config.yml

新建grafana的配置文件 - config.monitoring

prometheus%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%20-%C2%A0%C2%A0prometheus.yml-toc" style="margin-left:80px;">新建prometheus的配置文件 -  prometheus.yml

创建alert报警文件 - alert.yml

docker-compose.yaml%E6%96%87%E4%BB%B6-toc" style="margin-left:80px;">新建docker-compose.yaml文件

2、【方式二 - 推荐】通过克隆gitee代码安装 

运行命令

检查容器

检查接口

web访问地址

三、各个容器及应用

prometheus%E7%9A%84%E5%9B%BE%E5%BD%A2-toc" style="margin-left:80px;">1、使用 grafana 展示 prometheus的图形

1、登录Grafana

2、创建 Prometheus 数据源

3、仪表盘

Stage 1:官网搜索

 Stage 2 :复制id

 Stage 3 :Grafana导入id


一、环境

  • localhost

  • ip:192.168.11.61

  • 2核4g

  • Ubuntu 20.04

  • docker 版本23.0.1

  • docker-compose版本1.29.2

1、环境准备

安装Docker

  • 镜像加速

#创建文件夹,父级目录也被自动创建
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://n14or9zx.mirror.aliyuncs.com",
  "https://mirror.ccs.tencentyun.com",
  "http://registry.docker-cn.com",
  "http://docker.mirrors.ustc.edu.cn",
  "http://hub-mirror.c.163.com"],
  "insecure-registries": [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "500m"
  }
}
EOF
#设置下载目录
export DOWNLOAD_URL="http://mirrors.163.com/docker-ce"
curl -fssL https://get.docker.com/ | sh
  • 检查版本
docker -v 
或
systemctl status docker

安装Docker-compose

# 下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 设置文件具备执行权限
chmod +x /usr/local/bin/docker-compose

# 查看版本
docker-compose --version

二、Docker-compose 安装 Prometheus

docker-compose%20%E5%92%8C%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6">1、【方式一】手动创建 docker-compose 和 配置文件

  • prometheus%E7%9B%91%E6%8E%A7%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9">创建prometheus监控的文件夹

#切换到root用户
sudo -i
mkdir /data/docker-prometheus -p
mkdir /data/docker-prometheus/{grafana,prometheus,alertmanager} -p
cd /data/docker-prometheus/

  • 创建alertmanager的配置文件 - config.yml

global:
  #163服务器
  smtp_smarthost: 'smtp.163.com:465'
  #发邮件的邮箱
  smtp_from: 'cdring@163.com'
  #发邮件的邮箱用户名,也就是你的邮箱     
  smtp_auth_username: 'cdring@163.com'
  #发邮件的邮箱密码
  smtp_auth_password: 'your-password'
  #进行tls验证
  smtp_require_tls: false

route:
  group_by: ['alertname']
  # 当收到告警的时候,等待group_wait配置的时间,看是否还有告警,如果有就一起发出去
  group_wait: 10s
  #  如果上次告警信息发送成功,此时又来了一个新的告警数据,则需要等待group_interval配置的时间才可以发送出去
  group_interval: 10s
  # 如果上次告警信息发送成功,且问题没有解决,则等待 repeat_interval配置的时间再次发送告警数据
  repeat_interval: 10m
  # 全局报警组,这个参数是必选的
  receiver: email

receivers:
- name: 'email'
  #收邮件的邮箱
  email_configs:
  - to: 'cdring@163.com'
inhibit_rules:
 - source_match:
     severity: 'critical'
   target_match:
     severity: 'warning'
   equal: ['alertname', 'dev', 'instance']

  • 新建grafana的配置文件 - config.monitoring

# admin登录密码为password
GF_SECURITY_ADMIN_PASSWORD=password
GF_USERS_ALLOW_SIGN_UP=false
# 全局配置
global:
  scrape_interval:     15s # 将搜刮间隔设置为每15秒一次。默认是每1分钟一次。
  evaluation_interval: 15s # 每15秒评估一次规则。默认是每1分钟一次。

# Alertmanager 配置
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['alertmanager:9093']

# 报警(触发器)配置
rule_files:
  - "alert.yml"

# 搜刮配置
scrape_configs:
  - job_name: 'prometheus'
    # 覆盖全局默认值,每15秒从该作业中刮取一次目标
    scrape_interval: 15s
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'alertmanager'
    scrape_interval: 15s
    static_configs:
    - targets: ['alertmanager:9093']
  - job_name: 'cadvisor'
    scrape_interval: 15s
    static_configs:
    - targets: ['cadvisor:8080']
      labels:
        instance: Prometheus服务器 

  - job_name: 'node-exporter'
    scrape_interval: 15s
    static_configs:
    - targets: ['node_exporter:9100']
      labels:
        instance: Prometheus服务器 

  • 创建alert报警文件 - alert.yml

groups:
- name: Prometheus alert
  rules:
  # 对任何实例超过30秒无法联系的情况发出警报
  - alert: 服务告警
    expr: up == 0
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "服务异常,实例:{{ $labels.instance }}"
      description: "{{ $labels.job }} 服务已关闭"

  • docker-compose.yaml%E6%96%87%E4%BB%B6">新建docker-compose.yaml文件

version: '3.3'

# 存储卷
volumes:
  prometheus_data: {}
  grafana_data: {}

networks:
  monitoring:
    driver: bridge

services:
  prometheus:
    image: prom/prometheus:v2.37.6
    container_name: prometheus
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro  # 本地时区挂载在镜像中
      - ./prometheus/:/etc/prometheus/
      - prometheus_data:/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' # 控制台模板
      #热加载配置
      - '--web.enable-lifecycle'
      #api配置
      #- '--web.enable-admin-api'
      #历史数据最大保留时间,默认15天
      - '--storage.tsdb.retention.time=30d'  
    networks:
      - monitoring
    links:
      - alertmanager
      - cadvisor
      - node_exporter
    expose:
      - '9090'
    ports:
      - 9090:9090
    depends_on:
      - cadvisor # 等待cadvisor启动完成后prometheus再启动

  alertmanager:
    image: prom/alertmanager:v0.25.0
    container_name: alertmanager
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./alertmanager/:/etc/alertmanager/
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    networks:
      - monitoring
    expose:
      - '9093'
    ports:
      - 9093:9093

# 监控容器
  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    networks:
      - monitoring
    expose:
      - '8080'

  node_exporter:
    image: prom/node-exporter:v1.5.0
    container_name: node-exporter
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command: 
      - '--path.procfs=/host/proc' 
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc|rootfs/var/lib/docker)($$|/)'
    networks:
      - monitoring
    ports:
      - '9100:9100'

  grafana:
    image: grafana/grafana:9.4.3
    container_name: grafana
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    env_file:
      - ./grafana/config.monitoring
    networks:
      - monitoring
    links:
      - prometheus
    ports:
      - 3000:3000
    depends_on:
      - prometheus

2、【方式二 - 推荐】通过克隆gitee代码安装 

mkdir /mnt/docker/
cd /mnt/docker/
git clone https://gitee.com/linge365/docker-prometheus.git
cd docker-prometheus

运行命令

cd /data/docker-prometheus
docker-compose up -d

检查容器

docker ps

检查接口

ss -lntp|egrep "3000|9090|9100|9093"

web访问地址

应用访问地址账号密码
prometheushttp://xxx.116.6.228:9090
grafanahttp://xxx.116.6.228:3000admin/password
altermanagerhttp://xxx.116.6.228:9093
node-exporterhttp://xxx.116.6.228:9100/metrics

三、各个容器及应用

prometheus%E7%9A%84%E5%9B%BE%E5%BD%A2">1、使用 grafana 展示 prometheus的图形

  • 通过 grafana 添加数据源,展示 node-exporter数据

1、登录Grafana

  • 登录 Grafana :http://192.168.11.61:3000/
  • 用户名: admin
  • 密码: password

2、创建 Prometheus 数据源

3、仪表盘

  • 从 Grafana.com 导入仪表板
Stage 1:官网搜索

 Stage 2 :复制id

 Stage 3 :Grafana导入id

 

 

 


http://www.niftyadmin.cn/n/5155365.html

相关文章

01-Spring中事务的实现之编程式事务和声明式事务,以及事务的属性之传播行为,隔离级别,事务的回滚

银行账户转账异常 需求: 实现act-001账户向act-002账户转账10000,要求两个账户的余额一个减成功一个加成功,即执行的两条update语句必须同时成功或失败 实现步骤 第一步: 引入项目所需要的依赖 <?xml version"1.0" encoding"UTF-8"?> <proj…

Linux 实现原理 — NUMA 多核架构中的多线程调度开销与性能优化

前言 NOTE&#xff1a;本文中所指 “线程” 均为可执行调度单元 Kernel Thread。 NUMA 体系结构 NUMA&#xff08;Non-Uniform Memory Access&#xff0c;非一致性存储器访问&#xff09;的设计理念是将 CPU 和 Main Memory 进行分区自治&#xff08;Local NUMA node&#x…

【开题报告】基于SpringBoot的童装销售商城的设计与实现

1.研究背景 童装市场一直是一个持续增长的行业&#xff0c;随着人们对孩子的关注度不断提高&#xff0c;对童装的需求也在逐渐增加。传统的实体店面销售方式已经无法满足人们的需求&#xff0c;电子商务成为了童装销售的主要渠道之一。而基于Spring Boot的童装销售商城的选题背…

CentOS 定期清理日志

在CentOS上设置一个定期的任务来自动清理项目日志。以下是一种常用的方法&#xff1a; 创建一个脚本文件来清理日志。使用文本编辑器&#xff08;如vi&#xff09;创建一个新文件&#xff0c;命名为log_cleanup.sh&#xff08;或者你喜欢的其他名称&#xff09;&#xff0c;并…

代码随想录打卡第62天|● 503.下一个更大元素II ● 42. 接雨水

● 503.下一个更大元素II 题目&#xff1a;给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个数字之后的第…

Django实战项目-学习任务系统-配置定时调度任务

接着上期代码内容&#xff0c;继续完善优化系统功能。 本次增加配置定时调度任务功能&#xff0c;学习任务系统定时任务管理添加的定时学习任务&#xff0c;需要通过配置调度任务&#xff0c;定时发布周期性的学习任务。 以及每天定时发送学生用户属性值&#xff0c;积分值等信…

echarts的y轴上面的数字过长导致无法完全显示的问题

解决办法 少量的遮挡可以使用grid grid: { top: “15%”, left: “2%”, right: “2%”, bottom: “2%”, containLabel: true }, 大量的遮挡还是改变单位吧 如果y轴长度是自适应的&#xff0c;那么只需要改变数据即可 &#xff0c;从后端获取数据之后直接全部除以10000&…

软考高级系统架构设计师系列之:软件可靠性基础

软考高级系统架构设计师系列之:软件可靠性基础 一、软件可靠性内容大纲二、软件可靠性基本概念三、软件可靠性建模四、软件可靠性管理五、软件可靠性设计六、软件可靠性测试与评价一、软件可靠性内容大纲 软件可靠性: 软件可靠性基本概念软件可靠性建模软件可靠性管理软件可…