概述


神策环境检测工具主要用于检测服务器是否满足部署神策分析的要求。

主要检测项目有:

  • 硬件:cpu 核数、内存大小、磁盘容量、磁盘读写速率等;
  • 系统:发行版本、内核版本、防火墙设置、当前运行的服务等;
  • 其他:集群之间带宽、是否可正常访问 ntp 服务器、python 标准的 paramiko 库是否可用等。

检测步骤


若检测集群,只需在其中一台机器上下载、配置并运行即可。

获取检测程序


wget http://update.sensorsdata.cn/release/devops/sa-env_checker-2.0.tar.gz
BASH

解压并进入程序目录


tar zxf sa-env_checker-2.0.tar.gz && cd sa-env_checker-2.0
BASH

复制配置模板并编辑配置


cp env.yml.example env.yml
vim env.yml
BASH

配置参数说明


  • 所有符号均需为半角,即英文输入法下的符号;
  • 需遵循 yaml 语法,如冒号后面必需要有空格。
  • ips内网 ip 地址,多个以逗号分隔。不可为空;
  • hosts:正式部署时要修改为的主机名,多个以逗号分隔,需与 ips 一一对应,需符合 FQDN 要求。不可为空;
  • ssh_port:ssh 端口,默认为 22。不可为空;
  • password:ssh 密码,若所有节点密码相同,则只需填写一个字符串,如 Password;若节点之间密码不同,则以列表形式填写,如 ['Passwd1', 'Passwd2', 'Passwd3']。不可为空;
  • meta_disk_path:元数据盘挂载点,目前只支持一块,做了 raid 的 ssd 磁盘。不可为空;
  • data_disk_paths:数据盘挂载点,多块以逗号分隔,一般未做 raid 的裸盘。若为单机版则与 meta_disk_path 保持一致即可不可为空;
  • ntp:ntp server 地址,不能连接外网的客户必须填写,默认检测 0.cn.pool.ntp.org;
  • sudo_need_password:非 root 用户执行 sudo 需要输入密码时,则更改为 True,默认为 False;
  • ex_ips:已有环境的已有主机的 ip 地址,用于增加节点时,测试与已存在主机之间的带宽,非必选;

执行检测


检测全部

./env_checker env.yml
BASH

若数据盘太多,可并行检测 n 块数据盘以缩短检测时间,但需满足 1 <= n <= 6,且 n <= 数据盘数量。例如同时检测 3 块数据盘

./env_checker env.yml --disk_thread 3
BASH

查看检测结果


全部合格输出结果

Check done, you can view the results via https://www.json.cn
Get the results by:
  cat /data/sa-env_checker-2.0/runtime/all_results.json
  cat /data/sa-env_checker-2.0/runtime/all_unmatch.json

Congratulations~ All matched
BASH

有不合格项目输出结果

Check done, you can view the results via https://www.json.cn
Get the results by:
  cat /data/sa-env_checker-2.0/runtime/all_results.json
  cat /data/sa-env_checker-2.0/runtime/all_unmatch.json

10.10.10.10.unmatch:
  cpu count 4 < 16
BASH

提交检测结果


所有检测结果及日志都保存在运行目录的 runtime/ 下,需把 all_results.jsonall_unmatch.json 提交给神策的同学.

检测结果的绝对路径如检测结果输出中的

/data/sa-env_checker-2.0/runtime/all_results.json
/data/sa-env_checker-2.0/runtime/all_unmatch.json
BASH

其他使用方法


获取使用帮助

./env_checker -h
BASH

不分发包直接检测 用于第 n 次检测时使用 n > 1

./env_checker env.yml -s
BASH

只检测集群间带宽

./env_checker env.yml --only_bw
BASH

不检测集群间带宽

./env_checker env.yml --no_bw
BASH

只检测磁盘

./env_checker env.yml --only_disks
BASH

不检测磁盘

./env_checker env.yml --no_disks
BASH

不检测当前运行服务

./env_checker env.yml --no_services
BASH

不检测 ntp server 等服务的可连接性,用于服务器未配置 dns 时检测

./env_checker env.yml --no_connections
BASH

不检测安装包下载速度,用于无外网环境

./env_checker env.yml --no_check_download
BASH