Giter Site home page Giter Site logo

chenshanping / moon Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aide-family/moon

0.0 0.0 0.0 11.72 MB

prometheus unified rules and alarms management platform

Home Page: https://prometheus.aide-cloud.cn

License: MIT License

JavaScript 0.08% Go 27.24% TypeScript 71.45% CSS 0.02% Makefile 0.84% HTML 0.02% Dockerfile 0.12% Less 0.22%

moon's Introduction

Moon 技术文档

1. 概述

  • 项目简介

    Moon 是由Aide-Cloud团队开发并维护的一款管理工具,专为简化Prometheus监控系统的运维工作而设计。该工具提供了一站式的解决方案,能够集中管理和配置多个Prometheus实例及其相关的服务发现、规则集和警报通知。

  • 体验demo

    https://prometheus.aide-cloud.cn/

    账号:prometheus

    密码:123456

    账号:num1

    密码:68b329da9893e34099c7d8ad5cb9c940

  • 相关博文

2. 快速开始

2.1 系统要求

  • 操作系统:Linux、macOS、Windows
  • Go语言环境:Go 1.20+
  • Docker (可选,用于快速部署)
  • K8s (暂时未尝试)
  • 环境依赖:
    • mysql数据库:8.0+
    • redis数据库(可选)
    • kafka消息队列(可选)

    如果没有这些环境,可以直接进入./deploy/rely录下, 执行docker-compose up -d启动本地默认依赖, 该依赖包含了mysql,redis,kafka等,你可以选择屏蔽掉redis和kafka, 只启动mysql部分

2.2 安装部署

本地开发方式启动

  • 准备如下配置文件
# app/prom_server/configs_local/config.yaml
env:
  name: prometheus-manager_prom_server
  version: 0.0.1
  # local dev两种模式会自动migrate数据库
  env: pro
  metadata:
    description: Prometheus Manager Server APP
    version: 0.0.1
    author: 梧桐
    license: MIT
    email: [email protected]
    url: https://github.com/aide-cloud/prometheus-manager
    
server:
  http:
    addr: 0.0.0.0:8000
    timeout: 1s
  grpc:
    addr: 0.0.0.0:9000
    timeout: 1s

data:
  database:
    driver: mysql
    # mysql数据库地址,替换为自己的数据库实际连接,并创建prometheus_manager数据库
    source: root:123456@tcp(localhost:3306)/prometheus_manager?charset=utf8mb4&parseTime=True&loc=Local
    debug: true
# 开启redis配置,则使用redis作为缓存组件
#  redis:
#    addr: localhost:6379
#    password: redis#single#test
#    read_timeout: 0.2s
#    write_timeout: 0.2s

apiWhite:
  all:
    - /api.auth.Auth/Login
    - /api.auth.Auth/Captcha
    - /api.interflows.HookInterflow/Receive

  jwtApi:

  rbacApi:
    - /api.auth.Auth/Logout
    - /api.auth.Auth/RefreshToken

log:
  filename: ./log/prometheus-server.log
  level: debug
  encoder: json
  maxSize: 2
  compress: true
  
# 添加mq配置,则会使用mq通信
#mq:
#  kafka:
#    groupId: http://localhost:8001/api/v1/interflows/receive
#    endpoints:
#      - localhost:9092
# app/prom_agent/configs_local/config.yaml
env:
  name: prometheus-manager_prom_agent
  version: 0.0.1
  env: pro
  metadata:
    description: Prometheus Manager Agent APP
    version: 0.0.1
    author: 梧桐
    license: MIT
    email: [email protected]
    url: https://github.com/aide-cloud/prometheus-manager
server:
  http:
    addr: 0.0.0.0:8001
    timeout: 1s
  grpc:
    addr: 0.0.0.0:9001
    timeout: 1s

# 开启redis配置,则使用redis作为缓存组件
#data:
#  redis:
#    addr: localhost:6379
#    password: redis#single#test
#    read_timeout: 0.2s
#    write_timeout: 0.2s

watchProm:
  interval: 10s

# mq配置
#mq:
#  kafka:
#    groupId: prometheus-agent
#    endpoints:
#      - localhost:9092

# mq替代配置, 二选一
interflow:
  # prom_server的通信地址
  server: http://prometheus_manager:8000/api/v1/interflows/receive
  # 自身的通信地址
  agent: http://prometheus_manager_agent:8000/api/v1/interflows/receive
  • 按顺序执行启动命令
# 1. 服务端启动
make local app=app/prom_server
# 2. agent启动
make local app=app/prom_agent
# 3. web端启动
make web
docker方式启动
  1. 如果本地没有mysql数据库,可以通过以下命令在本地快速拉起一个mysql容器,然后通过工具创建一个名为 prometheus_manager 的数据库,如果执行完这步则直接跳过第2步,直接执行执行第3步

    docker run -d -p 3306:3306 --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
  2. 准备上述类似配置,通过容器体验该项目时的配置文件地址

  • prometheus-manager/app/prom_agent/configs/config.yaml

  • prometheus-manager/app/prom_server/configs/config.yaml

  1. 进入到项目根目录下执行下述命令,在本地一站式启动服务
make all-docker-compose-up

3. 功能详解

3.1 系统管理

用户管理

  • 功能说明:

主要管理用户信息,包括新增、修改、删除等操作。该系统不提供用户注册功能,用户信息由管理员添加。

  • 注意事项:

角色管理

  • 功能说明:

主要管理角色信息,包括新增、修改、删除等操作。通过权限和角色绑定,实现权限控制,精确到接口粒度。 采用RBAC模式实现,具体请参见RBAC

  • 注意事项:

权限管理

  • 功能说明:

主要管理权限信息,包括新增、修改、删除等操作。这里维护系统全部需要权限控制的接口。系统新增接口, 需要再次录入到权限管理中。

字典管理

  • 功能说明:

主要管理字典信息,包括新增、修改、删除等操作。字典信息主要用于系统中需要使用到的枚举值,比如状态、类型、告警等级等。

3.2 告警配置

  • 功能说明:

主要维护告警规则组、告警规则,通过表单方式维护prometheus规则信息,并支持多数据源场景,我们在配置规则时候,可以选择不同数据源,编写不同的报警规则,完成告警规则配置。 同时,还支持配置报警页面,告警事件发生后,能够把相同类型的各种规则事件归类到同一个报警页面,帮助我们运维同学集中处理告警。

3.3 实时告警

  • 功能说明:

主要是展示产生的告警数据,并按照不同报警页面分类展示。每一条告警数据除了展示基本信息外, 还可以展示持续时常,支持告警静默、强制删除、告警升级等操作。

3.4 历史告警(开发中)

  • 功能说明:

主要用于查询历史告警,提供统计数据大盘,为复盘提供数据支撑

3.5 告警通知

  • 功能说明:

主要提供报警组、报警hook等通信方式维护,为报警策略提供通知对象数据。

4. 功能TODO

5. 常见问题解答

moon's People

Contributors

aide-cloud avatar mmungdong avatar sumengzs avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.