长期支持版本

    1 框架概述

    部署管理主要是基于ansible来对组件进行安装。

    
    ├─ansible_handler
    │  │  README.md
    │  │  
    │  ├─example 模板示例
    │  │  │  example_playbooks.yml 示例playbook
    │  │  │  example_vars.yml 示例变量文件
    │  │  │  
    │  │  └─example 示例角色任务
    │  │      ├─files 组件需要的文件目录,可以是软件包或运行时所需要的其他文件。
    │  │      │      readme.md
    │  │      │      
    │  │      ├─tasks 示例任务
    │  │      │      config_example.yml 配置示例说明
    │  │      │      install_example.yml 安装示例说明
    │  │      │      main.yml 任务入口示例说明
    │  │      │      start_example.yml 启动示例说明
    │  │      │      
    │  │      └─templates 模板文件
    │  │              example.j2 模板配置示例说明
    │  │              
    │  ├─inventory 组件的主机列表
    │  │      elasticsearch
    │  │      fluentd
    │  │      ...
    │  │      
    │  ├─playbooks 组件的playbook入口文件
    │  │      elasticsearch.yml
    │  │      fluentd.yml
    │  │      ...
    │  │      
    │  ├─roles 组件角色任务
    │  │  ├─elasticsearch
    │  │  │  ├─tasks 组件的playbook中的具体task步骤
    │  │  │  │      config_elasticsearch.yml 定义配置具体步骤。
    │  │  │  │      install_elasticsearch.yml 定义安装具体步骤。
    │  │  │  │      main.yml 任务执行的主脚本,会包含install、config、start以及自定义的yml文件。
    │  │  │  │      start_elasticsearch.yml 定义启动步骤。
    │  │  │  │      
    │  │  │  └─templates 组件安装过程中需要的模板文件。安装时会根据配置值生成实际的文件。
    │  │  │          elasticsearch.j2
    │  │  │          
    │  │  └─...
    │  │              
    │  └─vars 组件的变量文件
    │          elasticsearch_vars.yml
    │          fluentd_vars.yml
    │          ...
    
    ├─ansible_runner 调用ansible来执行任务的python接口
    │      ansible_runner.py
    │      inventory_builder.py
    │      vault_handler.py
    │      __init__.py
    
    └─tasks 任务文件,由一系列有序的组件安装步骤组成
            XXX_task.yml
    

    2 添加组件步骤

    2.1 默认组件模板

    2.1.1 默认组件列表

    当前提供的默认组件包括:

    组件名称安装方式版本部署位置
    zookeeperdnf3.6.2all
    kafkadnf2.6.0all
    prometheusdnf2.20.0主节点
    node_exporterdnf1.0.1all
    mysqldnf8.0.26主节点
    elasticsearchdnf(官网镜像)7.14.0(随官网更新)主节点
    fluentddnf1.13.3all
    fluent-plugin-elasticsearchdnf5.0.5all
    adoctor-check-executordnf1.0.1主节点
    adoctor-check-schedulerdnf1.0.1主节点
    adoctor-diag-executordnf1.0.1主节点
    adoctor-diag-schedulerdnf1.0.1主节点
    gala-ragdolldnf1.0.1主节点
    gala-gopherdnf1.0.1all
    gala-spiderdnf1.0.1主节点

    2.1.2 默认组件安装依赖关系

    组件依赖关系

    • 如图所示为默认提供的组件之前的依赖关系。服务正常运行需要提前安装好前置依赖。
    • elasticsearch在aops框架安装时已经安装在主节点,如果没有组建集群的需要,修改配置即可使用,无需额外部署。
    • aops框架中提供的其他组件未在图中具体列出。

    2.1.3 默认任务配置

    (1)zookeeper

    zookeeper主要负责集群管理,并且是kafka运行的基础,需要配置在集群的每个节点中。

    • 主机配置

    主机清单中对集群中每个节点的IP、节点ID进行配置:

    zookeeper_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
          myid: 2 # zookeeper节点ID
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
          myid: 1
        192.168.1.3:
          ansible_host: 192.168.1.3
          ansible_python_interpreter: /usr/bin/python3
          myid: 3
    
    • 变量配置

    zookeeper的变量包括:

    ---
    # zookeeper user group 用户名、用户组
    user: "zookeeper"
    group: "zookeeper"
    
    # zookeeper data path data路径
    data_dir: "data"
    # zookeeper log path 日志路径
    zookeeper_log_path: "log"
    # zookeeper install path 安装路径
    install_dir: "/opt/zookeeper"
    
    # zookeeper port config 端口配置
    leader_port: 2888
    vote_port: 3888
    client_port: 2181
    

    (2)kafka

    • 主机配置

      kafka 需要在安装zookeeper之后再安装。主机清单中需要配置kafka的端口、ID。同时需要配置zookeeper的IP与ID。

    kafka_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
          kafka_id: 2 # kafka id 
          kafka_port: 9092 # kafka 监听端口
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
          kafka_id: 1
          kafka_port: 9092
        192.168.1.3:
          ansible_host: 192.168.1.3
          ansible_python_interpreter: /usr/bin/python3
          kafka_id: 3
          kafka_port: 9092
    zookeeper_hosts: # zookeeper集群IP配置
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
          myid: 2 # zookeeper id
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
          myid: 1
        192.168.1.3:
          ansible_host: 192.168.1.3
          ansible_python_interpreter: /usr/bin/python3
          myid: 3
    
    • 变量配置
    ---
    # zookeeper user group 用户、用户组
    user: "kafka"
    group: "kafka"
    
    # Log Path 日志路径
    kafka_log_path: "log"
    
    # Install path 安装路径
    install_dir: "/opt/kafka"
    
    # zookeeper client port 客户端端口
    zk_client_port: 2181
    

    (3)prometheus

    • 主机配置

      prometheus负责集中采集的kpi数据项。只需要安装在server 节点上。另外,Prometheus需要去node_exporter上抓取数据,需要配置可连接的node_exporter的节点IP。

    node_exporter_hosts:
      hosts:
        192.168.1.1:
          ansible_host: 192.168.1.1
          ansible_python_interpreter: /usr/bin/python3
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
        192.168.1.3:
          ansible_host: 192.168.1.3
          ansible_python_interpreter: /usr/bin/python3
    prometheus_hosts:
      hosts:
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
    
    • 变量配置
    ---
    # prometheus 用户 用户组
    user: "prometheus"
    group: "prometheus"
    
    # prometheus 监听端口
    prometheus_listen_port: 9090
    
    # node_exporter 监听端口
    node_exporter_listen_port: 9100
    
    # prometheus 配置文件路径
    prometheus_conf_dir: "/etc/prometheus"
    

    (4)node_exporter

    • 主机配置

    node_exporter需要安装在所有需要采集数据的主机节点上,主机需要配置IP。

    node_exporter_hosts:
      hosts:
        192.168.1.1:
          ansible_host: 192.168.1.1
          ansible_python_interpreter: /usr/bin/python3
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
        192.168.1.3:
          ansible_host: 192.168.1.3
          ansible_python_interpreter: /usr/bin/python3
    
    • 变量配置
    ---
    # node_exporter user 用户 用户组
    user: "node_exporter"
    group: "node_exporter"
    
    # Listening port 监听端口
    node_exporter_listen_port: 9100
    

    (5)MySQL

    • 主机配置

    MySQL数据库只需要安装在server 节点上。

    mysql_hosts:
      hosts:
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
    
    • 变量配置
    ---
    # mysql 用户、用户组
    user: "mysql"
    group: "mysql"
    

    (6)elasticsearch

    • 主机配置

    elasticsearch数据库只需要安装在server 节点上。需要配置server节点上,并指定节点ID。如果需要配置分布式集群,需要修改主机清单和配置文件elasticsearch.j2。

    elasticsearch_hosts:
      hosts:
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
          elasticsearch_id: elasticsearch_node1
    
    • 变量配置
    ---
    # elasticsearch User Group 用户 用户组
    user: elasticsearch
    group: elasticsearch
    
    # elasticsearch repo config  官方repo源配置
    repo_name: "Elasticsearch"
    repo_description: "Elasticsearch repository for 7.x packages"
    repo_base_url: "https://artifacts.elastic.co/packages/7.x/yum"
    repo_gpgkey: "https://artifacts.elastic.co/GPG-KEY-elasticsearch"
    repo_file: "elasticsearch"
    
    # elasticsearch Install dir 安装目录
    install_dir: /etc/elasticsearch/
    
    # elasticsearch cluster name 集群名称
    elasticsearch_cluster_name: myApp
    
    # elasticsearch init master ip address 默认的集群主节点IP
    elasticsearch_cluster_init_master: 192.168.1.2
    
    # elasticsearch listen port 监听端口
    elasticsearch_listen_port: 9200
    
    # elasticsearch data path 数据目录
    elasticsearch_data_path: "/var/lib/elasticsearch"
    
    # elasticsearch log path 日志目录
    elasticsearch_log_path: "/var/log/elasticsearch"
    
    # elasticsearch network host 网络IP
    elasticsearch_network_host: "{{elasticsearch_cluster_init_master}}"
    

    (7)fluentd

    • 主机配置

    fluentd 负责日志采集,部署在所有需要采集的节点上,最终将日志汇总在elasticsearch上。

    fluentd_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_python_interpreter: /usr/bin/python3
          elasticsearch_host: 192.168.1.1 # elasticsearch监听的IP
        192.168.1.2:
          ansible_python_interpreter: /usr/bin/python3
          elasticsearch_host: 192.168.1.1 # elasticsearch监听的IP
        192.168.1.3:
          ansible_python_interpreter: /usr/bin/python3
          elasticsearch_host: 192.168.1.1 # elasticsearch监听的IP
    
    • 变量配置
    ---
    # fluentd config path
    fluentd_config_dir: /etc/fluentd/
    # 修改history记录的脚本
    change_history_format: true
    change_history_format_scripts:
      - zzz_openEuler_history.csh
      - zzz_openEuler_history.sh
    # 修改demsg记录的脚本
    change_dmesg_format: true
    change_dmesg_format_scripts: fluentd_dmesg.sh
    # demsg端口
    fluentd_demsg_port: 61122
    

    (8) adoctor-check-executor与adoctor-check-scheduler

    • 主机配置

    adoctor-check-executor与adoctor-check-scheduler依赖于aops框架运行,默认都部署在主节点上。executor与scheduler之间通过kafka进行通信。

    adoctor-check-executor主机清单配置:

    adoctor_check_executor_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
    

    adoctor-check-scheduler主机清单配置:

    adoctor_check_scheduler_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1  # 主机IP
          ansible_python_interpreter: /usr/bin/python3
    
    • 变量配置

    adoctor-check-executor变量配置:

    # check executor的配置文件目录
    check_executor_conf_dir: "/etc/aops"
    # check executor连接的kafka服务器列表host:port。ip默认为当前主机IP,port默认为9092
    kafka_server_list: 192.168.1.1:9092
    

    adoctor-check-scheduler变量配置:

    # check scheduler的配置文件目录
    check_scheduler_conf_dir: "/etc/aops"
    # check scheduler连接的kafka服务器列表host:port。ip默认为当前主机IP,port默认为9092
    kafka_server_list: 90.90.64.64:9092
    # check scheduler服务监听的端口,默认为11112
    check_scheduler_port: 11112
    

    (9)adoctor-diag-scheduler与adoctor-diag-executor

    • 主机配置

    adoctor-diag-executor与adoctor-diag-scheduler依赖于aops框架运行,默认都部署在主节点上。executor与scheduler之间通过kafka进行通信。

    adoctor-diag-executor主机清单配置:

    adoctor_diag_executor_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
    

    adoctor-diag-scheduler主机清单配置:

    adoctor_diag_scheduler_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
    
    • 变量配置

    adoctor-diag-executor变量配置:

    # diag executor的配置文件目录
    diag_executor_conf_dir: "/etc/aops"
    # diag executor连接的kafka服务器列表host:port。ip默认为当前主机IP,port默认为9092
    kafka_server_list: 192.168.1.1:9092
    

    adoctor-diag-scheduler变量配置:

    # diag scheduler的配置文件目录
    diag_scheduler_conf_dir: "/etc/aops"
    # diag scheduler连接的kafka服务器列表host:port。ip默认为当前主机IP,port默认为9092
    kafka_server_list: 192.168.1.1:9092
    # diag scheduler服务监听的端口,默认为11113
    diag_scheduler_port: 11113
    

    (10)gala-ragdoll

    • 主机配置

    gala-ragdoll为配置溯源模块的主要组件,部署在主节点上。

    gala_ragdoll_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
    
    • 变量配置
    ---
    # gala-ragdoll服务监听的端口
    gala_ragdoll_port: 11114
    

    (11)gala-gopher与gala-spider

    • 主机配置

    gala-gopher与gala-spider是架构感知模块的主要组件,其中gala-gopher部署在各个远程主机上,进行信息收集,通过kafka将消息推送到主节点的gala-spider上。gala-spider部署在主节点上,对收集到的数据进行分析。

    gala-gopher主机清单配置:

    gala_gopher_hosts:
      hosts:
        192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
        192.168.1.2:
          ansible_host: 192.168.1.2
          ansible_python_interpreter: /usr/bin/python3
        192.168.1.3:
          ansible_host: 192.168.1.3
          ansible_python_interpreter: /usr/bin/python3
    

    gala-spider主机清单配置:

    gala_spider_hosts:
      hosts:
       192.168.1.1: # 主机名
          ansible_host: 192.168.1.1 # 主机IP
          ansible_python_interpreter: /usr/bin/python3
    
    • 变量配置

    gala-gopher变量配置:

    ---
    # gala gopher安装目录
    install_dir: "/opt/gala-gopher/"
    # gala-gopher连接的kafka host,需要配置为管理节点的主机IP
    gala_gopher_kafka_host: 192.168.1.1
    # gala-gopher监听的kafka port
    gala_gopher_listening_kafka_port: 9092
    # gala-gopher探针配置
    probes_example_switch: "off"
    probes_system_meminfo: "off"
    probes_system_vmstat: "off"
    probes_system_tcp: "off"
    probes_system_inode: "off"
    extend_probes_redis: "off"
    

    gala-spider变量配置:

    ---
    # log path
    log_path: "/var/log/spider"
    # install path
    install_dir: "/opt/spider/"
    # kafka host 默认配置为主机IP
    gala_spider_kafka_host: 192.168.1.1
    # Listening port
    gala_spider_listening_kafka_port: 9092
    
    # excluded addr
    exclude_addr: ["192.168.x.x"]
    # basic table name, please don't delete originally contains in the list. And append items in order if necessary:
    base_table_name: ["tcp_link", "lvs_link"]
    other_table_name: ["nginx_statistic" , "lvs_link" , "haproxy_link" , "dnsmasq_link"]
    # gala-spider listening port
    gala_spider_port: 11115
    

    3 执行部署任务

    3.1 修改默认配置

    • 首先task query 查询默认任务id,注意默认任务的主机必须已经被正确添加。

    • 默认任务配置:/etc/aops/default.json。参照Aops框架使用手册章节4配置参数。若已配置,此步骤可忽略。

    vim /etc/aops/default.json
    
    • 修改/etc/ansible/ansible.cfg , 需要取消对配置项host_key_checking 的注释。
    vim  /etc/ansible/ansible.cfg
    
    # uncomment this to disable SSH key host checking
    
    host_key_checking = False 
    

    3.2 任务组件步骤配置

    一个任务由多个步骤组成,基本可以认为每个步骤会安装一个组件,按照步骤组合的先后顺序,可以最终完成一次任务。修改任务的步骤,需要修改tasks/任务名.yml,格式如下:

    ---
    step_list: # 步骤列表
     zookeeper: # 第一步安装kafka,可以使用默认模板
      enable: true  # 置为false则跳过安装步骤,true执行安装步骤
      continue: false # 置为false则安装失败时终止任务,true执行安装失败时继续下一个组件安装
     kafka:
      enable: false
      continue: false
     prometheus:
      enable: false
      continue: false
     node_exporter:
       enable: false
       continue: false
     mysql:
       enable: false
       continue: false
     elasticsearch:
       enable: false
       continue: false
     fluentd:
       enable: false
       continue: false
     adoctor_check_executor:
       enable: false
       continue: false
     adoctor_check_scheduler:
       enable: false
       continue: false
     adoctor_diag_executor:
       enable: false
       continue: false
     adoctor_diag_scheduler:
       enable: false
       continue: false
     gala_gopher:
       enable: false
       continue: false
     gala_spider:
       enable: false
       continue: false
     gala_ragdoll:
       enable: false
       continue: false
    

    3.3 组件部署选项配置

    组件的playbook中会定义几个关键选项的配置,如下:

    ---
    - hosts: example_hosts # 此处需套填写所安装组件配置的主机名。(建议按照统一生成的名称来处理)
      gather_facts: no
      user: root
      vars_files: # 需要引用变量文件时,加入vars文件
        - "../vars/example_vars.yml"
      vars: # 定义安装步骤的变量,在安装过程中可以根据需要修改是否启用
        install_example: true # 安装 example
        config_example: true # 配置 example
        start_example: true # 启动 example service
        create_user: true # 创建新的用户和组
      roles: # playbook中需要完成的角色剧本,可自定义,与顺序相关
        - ../roles/user # (1)创建用户 playbook
        - ../roles/example # (2) 安装 exampl playbook
    

    3.4 认证

    account certificate : key 必须是添加主机时使用的key , 每次重启manager后必须重新执行certificate。

    ps certificate --key xxxx --access_token xxxx
    

    3.5 执行部署任务

    命令行执行:

    xxxxxxxxxx aops task --action execute --task_list 95c3e692ff3811ebbcd3a89d3a259eef --access_token xxx
    

    或网页执行:

    img

    ​ 在部署任务页面,根据要执行的任务ID,点击执行按钮。当前此功能会直接返回成功,执行进度与详细结果可以在/var/log/aops/manager.log中查看。

    文档捉虫

    “有虫”文档片段

    问题描述

    提交类型 issue

    有点复杂...

    找人问问吧。

    PR

    小问题,全程线上修改...

    一键搞定!

    问题类型
    规范和低错类

    ● 错别字或拼写错误;标点符号使用错误;

    ● 链接错误、空单元格、格式错误;

    ● 英文中包含中文字符;

    ● 界面和描述不一致,但不影响操作;

    ● 表述不通顺,但不影响理解;

    ● 版本号不匹配:如软件包名称、界面版本号;

    易用性

    ● 关键步骤错误或缺失,无法指导用户完成任务;

    ● 缺少必要的前提条件、注意事项等;

    ● 图形、表格、文字等晦涩难懂;

    ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

    正确性

    ● 技术原理、功能、规格等描述和软件不一致,存在错误;

    ● 原理图、架构图等存在错误;

    ● 命令、命令参数等错误;

    ● 代码片段错误;

    ● 命令无法完成对应功能;

    ● 界面错误,无法指导操作;

    风险提示

    ● 对重要数据或系统存在风险的操作,缺少安全提示;

    内容合规

    ● 违反法律法规,涉及政治、领土主权等敏感词;

    ● 内容侵权;

    您对文档的总体满意度

    非常不满意
    非常满意
    提交
    根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
    文档捉虫
    编组 3备份