开发目的
1.为了减少线上业务系统隐患,通过定期运维巡检,洞察网络、软件、业务状态是否正常,及时发现系统/业务安全隐患,对异常状态进行及时修复,以保证线上业务正常运行。
2.通过定期对线上业务进行主动巡检,识别并发现服务状态异常,并引导相关应急与排障动作。巡检工具通过使用Ansible自动检查每台机器的状态,并最终生成巡检报告。
工具架构图:
准备工作
1.创建巡检账号
如果不能使用root账号进行操作,可参考此步骤,如果有root账号,则忽略此步骤
在系统中创建一个巡检专用账号
# 创建账号,并设置账号密码
# useradd test && passwd test
# 输入并确认密码后创建成功
2.授予sudo权限
切换到root用户下,运行visudo命令
# visudo
# 找到包含一下内容的一行:
root ALL=(ALL) ALL
给test添加sudo权限
在”root ALL=(ALL) ALL”这一行下面,再加入一行,保存退出
3.账号测试
切换到普通用户
# su - test
# cd ~
# sudo mkdir test
使用sudo命令执行mkdir test,那么test目录是以root用户来创建的。
[test@VM-0-44-tlinux ~]$ ll
总用量 4
drwxr-xr-x 2 root root 4096 9月 3 10:47 test
使用非root账号巡检说明:
执行巡检命令时,添加--become
# ansible-playbook -i hosts main.yml --become
4.下载巡检工具
上传至K8S集群 第一台Master节点软件程序目录下
巡检内容
巡检工具使用
解压缩包
# tar zxvf Automation_inspector.tar.gz
进入到巡检工具目录
# cd Automation_inspector/
# tree -L 2
.
├── ansible.cfg
├── file
│ ├── bzip2-1.0.6-13.el7.x86_64.rpm
│ ├── bzip2-devel-1.0.6-13.el7.x86_64.rpm
│ ├── bzip2-libs-1.0.6-13.el7.x86_64.rpm
│ ├── cpp-4.8.5-44.el7.x86_64.rpm
│ ├── gcc-4.8.5-44.el7.x86_64.rpm
│ ├── glibc-2.17-317.el7.x86_64.rpm
│ ├── glibc-common-2.17-317.el7.x86_64.rpm
│ ├── glibc-devel-2.17-317.el7.x86_64.rpm
│ ├── glibc-headers-2.17-317.el7.x86_64.rpm
│ ├── glibc-utils-2.17-317.el7.x86_64.rpm
│ ├── libffi-3.0.13-19.el7.x86_64.rpm
│ ├── libffi-devel-3.0.13-19.el7.x86_64.rpm
│ ├── libmpc-1.0.1-3.el7.x86_64.rpm
│ ├── mysql-community-client-5.7.23-1.el7.x86_64.rpm
│ ├── mysql-community-common-5.7.23-1.el7.x86_64.rpm
│ ├── mysql-community-libs-5.7.23-1.el7.x86_64.rpm
│ ├── Python-3.6.13.tgz
│ ├── zlib-1.2.7-18.el7.x86_64.rpm
│ └── zlib-devel-1.2.7-18.el7.x86_64.rpm
├── group_vars
│ └── all
├── hosts
├── main.yml
├── playbooks
│ ├── ceph_cluster.yml
│ ├── check_data_disk.yml
│ ├── compute.yml
│ ├── elasticsearch.yml
│ ├── etcd_client.yml
│ ├── harbor.yml
│ ├── kfk_client.yml
│ ├── mysql_client.yml
│ ├── platform.yml
│ ├── redis_client.yml
│ ├── k8s.yml
│ └── zookeeper_client.yml
├── README.md
└── roles
├── ceph_cluster
├── compute
├── data_disk
├── elasticsearch
├── etcd_client
├── gpu
├── harbor
├── kfk_client
├── mysql_client
├── platform
├── redis_client
├── k8s
└── zookeeper_client
配置hosts文件,根据实际情况进行修改
# vim Automation_inspector/hosts
[all]
master ansible_host=xxxxxx
node_con02 ansible_host=xxxxxxx
node_con03 ansible_host=xxxxxx
#node_con04 ansible_host=
#node_con05 ansible_host=
#node_con06 ansible_host=
ceph_01 ansible_host=xxxxxx
ceph_02 ansible_host=xxxxxx
ceph_03 ansible_host=xxxxxx
[all:vars]
ansible_ssh_pass=xxxxxx
ansible_ssh_port=xxxx
ansible_ssh_user=xxxx
[component]
master
node_con02
node_con03
[ceph]
ceph_01
ceph_02
ceph_03
[gpu]
#node_con04 ansible_host=
#node_con05 ansible_host=
#node_con06 ansible_host=
执行所有巡检项
# ansible-playbook -i hosts main.yml
支持跳过部分巡检项,例如,不检查mysql
# ansible-playbook -i hosts main.yml --skip-tags=mysql
支持只巡检某部分巡检项,例如,只检查mysql
# ansible-playbook -i hosts main.yml --tags=mysql
巡检项支持多选,例如,同时检查mysql和redis
# ansible-playbook -i hosts main.yml --tags=mysql,redis
跳过巡检项支持多选,例如没有部署ceph和gpu,不检查ceph和gpu
# ansible-playbook -i hosts main.yml --skip-tags=ceph,gpu
支持的tag及其对应的检查项:
—— elasticsearch:elasticsearch组件
—— etcd: etcd组件
—— kafka: kafka组件
—— mysql:mysql组件
—— redis:redis组件
—— ceph:ceph组件
—— node:集群节点主机系统状态和docker、k8s组件
—— data_disk:检查主机磁盘空间使用情况
—— gpu:检查GPU节点的驱动和内存使用情况
—— k8s: 检查k8s平台
查看巡检报告
巡检结果文件输出在/data/ti-infra/log/inspector/
最新的report<日期>.txt文件即巡检详细结果,report_summary<日期>.txt文件即巡检summary结果。report_<日期>.tar.gz压缩包文件即上述报告的tar包,便于从服务器导出,查看巡检效果