2020-11-06

2020-11-06,第1张

   蓝鲸平台日常维护中遇到的问题【摘要】在蓝鲸平台的日常维护过程中,会遇到一些平台异常的问题,这些问题有一些是常见的,例如bkdata进程异常导致监控数据未上报,有一些是特定情况下遇到的,但经过排查可以解决的,希望通过整理之前处理过的排错,对以后遇到类似的问题有帮助,能够迅速排查解决。

cmdb重启失败【问题描述】重启cmdb所在机器后,发现启动cmdb有报错,出现cmdb_adminserver:ERROR(spawn error) 【排查】查日志发现连接MongoDB失败,使用bk_cmdb用户也无法登陆到MongoDB 【解决方法】在MongoDB里重新对bk_cmdb用户进行授权,授权完之后,再重新启动cmdb1)、重新授权

# source /data/install/utils.fc

# mongo -u $MONGODB_USER -p

$MONGODB_PASS --port $MONGODB_PORT --authenticationDatabase admin

# show dbs

#进入cmdb这个库

# use cmdb

#更新bk_cmdb用户的密码(密码可以从/data/install/.app.token中查找)

# db.updateUser("bk_cmdb",{pwd:"密码"})

# cd /data/install

# ./bkeec stop cmdb

# ./bkeec status cmdb

# ./bkeec start cmdb

# ./bkeec status cmdb

cmdb访问报404【问题描述】cmdb所在机器意外重启之后,访问cmdb出现404的问题。 【排查】检查服务都是正常的,查看cmdb_adminserver的日志之后,发现无法解析zk.service.consul,检查dns后,发现首选dns不是127.0.0.1了。 【解决方法】修改/etc/resolv.conf的nameserver,确保 /etc/resolv.conf 里第一个nameserver是 127.0.0.1,而且option选项不能有rotate。     1.3、SaaS访问异常【问题描述】登录到蓝鲸后,打开SaaS均出现”应用出现异常”的报错。 【排查】1)、在出现异常的时间段内,检查蓝鲸进程运行情况,运行状态显示为RUNNING;                 2)、对CMDB服务进行排查,通过查看cmdb_apiserver.stdout.log和cmdb的nginx访问日志发现,连接cmdb的esb-api接口服务出现timeout,初步怀疑是由于api服务连接不上导致问题的出现。 【解决方法】重启cmdb服务后,该问题解决,SaaS恢复正常访问。在中控机重启cmdb

# cd /data/install

# ./bkeec stop cmdb

# ./bkeec status cmdb

# ./bkeec start cmdb

# ./bkeec status cmdb

组件监控【问题描述】配置组件监控,保存时,报用户没有权限,出现”调用接口失败 execute_platform_task:账户【test】没有该业务的 *** 作权限” 【排查】经咨询开发人员后,确认是以下原因导致:1)、由于exporter是内置在蓝鲸业务的机器下的,下发流程涉及到跨业务分发文件,因此要求用户同时拥有源业务和目标业务的权限,目前还在确定解决方案。2)、 promtheus类型的组件会有这个问题,包括Mencache、SQLServer、Oracle、Haproxy、Weblogic、RabbitMQ、Zookeeper等。 【解决方法】目前将”蓝鲸”这个业务的运维人员加上这个账号,即可解决该问题。  2.2      

主机性能监控【问题描述】cpu5分钟负载突然显示无数据上报. 【排查】在蓝鲸自监控里检查发现,databus的etl服务有异常。 【解决方法】登录到bkdata所在机器,重启etl服务。 

# supervisorctl -c

/data/bkee/etc/supervisor-bkdata-databus.conf status databus_etl

# supervisorctl -c

/data/bkee/etc/supervisor-bkdata-databus.conf restart databus_etl

服务拨测【问题描述】打开服务拨测,出现 【模块:data】接口返回结果错误:database not found:uptimecheck_212 的报错。 【排查】旧的拨测没建库成功的,需要手动触发接口创建 【解决方法】登录到蓝鲸的任意一台机器上执行以下命令创建库。

# curl -X "POST" "http://dataapi.service.consul:10011/tool/tsdb/create_db"  -H 'Content-Type: application/json

  charset=utf-8' \

        -d $'{

  "db_name": "uptimecheck_212",

  "days": "30"

   }'

执行脚本有异常【问题描述】作业平台执行脚本等 *** 作时有问题,出现 " Execution result log always empty. " 的报错。 【排查】经检查,healthz接口正常,nfs挂载也正常,但有一台机的gse_task出现异常情况。 【解决方法】登录到出现gse_task异常的机器上重启gse_task,作业平台即可正常执行脚本等 *** 作。

# cd /data/bkee/gse/server/bin/

# ./gsectl stop task

# ps -ef | grep gse_task

# ./gsectl start task

调整MySQL的innodb_log_file_size参数为4G

# cd /data/bkee/service/mysql/bin/

# ./mysql.sh stop

# vim /data/bkee/etc/my.cnf

# innodb_log_file_size = 4096M

# cd /data/bkee/public/mysql/

# mv ib_logfile0

ib_logfile0.20190424.back

# mv ib_logfile1

ib_logfile1.20190424.back

#启动MySQL服务

# cd /data/bkee/service/mysql/bin/

# ./mysql.sh start

蓝鲸平台部署完成后再添加gse和nginx外网ip

# cd /data/install/

# vi globals.env

         export

  AUTO_GET_WANIP=1

         export

  GSE_WAN_IP=(GSE_WAN_IP GSE_WAN_IP1)

  export NGINX_WAN_IP=(NGINX_WAN_IP NGINX_WAN_IP1)

# ./bkeec sync common

# ./bkeec render gse

# ./bkeec stop gse

# ./bkeec start gse

# ./bkeec install nginx 1

# ./bkeec stop nginx

# ./bkeec start nginx

1.前言

本文示例效果可参考3.1处的配置完后浏览器访问,输入用户名和密码,点击设备管理,即可查看效果。

2. 建议:对以下知识点有一些了解并能简单应用

2.1 python:python官方中文文档

2.2 django:The Django Book

2.3 前端知识(除了常见的HTML/CSS/JQuery,还需了解Mako):mako官网

2.4 gitlab:Git思维导图

3.准备

3.1 搭建蓝鲸社区版:单机蓝鲸平台或多机版蓝鲸部署 或参考官方安装文档

若不想自己搭建,直接使用已搭建好的,需在本地配置hosts文件后访问。

例:用notepad++打开C:\Windows\System32\drivers\etc\hosts,添加以下内容、保存

172.16.44.104 paas.blueking.com

172.16.44.104 cmdb.blueking.com

172.16.44.104 job.blueking.com

172.16.44.104 bknetwork.blueking.com

打开浏览器,输入相应的账号密码(admin/hjMRN1L4bt)即可访问。

1

2

3

4

5

6

7

8

3.2 基于Pycharm搭建Python本地开发环境,完成HelloWorld

官方文档

3.3 提示

3.3.1 若是自己在本地另外安装Python环境时,版本需与framework代码里requirements.txt中版本一致。’

3.3.2 pycharm社区版不支持django,专业版才支持,下载时注意下的是什么版本。

3.3.3 在继续后面的步骤前,没有敲HelloWorld的伙伴请确认以下提到的内容,若有哪项有问题,请参考准备工作:有可访问的社区版蓝鲸;已有安装、配置好的Python环境;在Python环境能导入django包;配置的数据库可通信;pycharm项目配置均配置OK;本地git和gitlab可通信;在我的应用中有自己新建的应用,没有请新建。tips:社区版的蓝鲸可直接使用已搭建好的(详见3.1)可不用自己搭gitlab,直接使用已搭好的,让伙伴帮忙创个git账号,自己再登录gitlab网页新建project。

4.编写简单的CRUD

4.1 前期

4.1.1配置:

4.1.1.1 修改conf目录下的default.py

APP_ID 为创建应用后得到的应用 ID

APP_TOKEN 为创建应用后得到的应用 TOKEN

BK_PAAS_HOST 为3.1中提到的在hosts文件里配置的要访问的社区版PaaS平台域名

1

2

3

4.1.1.2 数据库配置:

创建本地数据库,数据库名字为应用ID;测试环境和正式数据库创建(本例中开发测试环境正式环境用同一个数据库),并分别配置好文件:

开发环境:settings_devlopment.py

测试环境:settings_testing.py(HOST 为社区版 mysql 服务所在的内网 IP,如不知道是哪台可在社区版安装目录下的 install.config 查看,或者执行 echo $MYSQL_IP 查看)

正式环境:settings_production.py

1

2

3

4

4.1.2 项目:若不想新建project可在刚刚的HelloWorldd的project中直接继续写

若想再熟悉可以另外重新新建project导入framework代码,更改配置,编写简单的CRUD。参考基于PyCharm熟悉Django开发来配置,跟着该链接做到3.3步骤,3.4开始不用。

4.1.3 应用:不管有没有新建project都可以在自带的home_application应用中编写

若想新建应用:需在终端输入python manage.py startapp app_id_name(注意:习惯上app_id_name就是你在新建应用中新建的应用名)

4.2 model

4.2.1 编写model

本文在作者自己新建的应用里的models.py文件中编写model(没有新建应用的伙伴则在home_application应用的models.py中编写,后续类似情况不再特地说明)。本文实例的models.py代码地址。读者可试着自己设计不同的model,不一定和示例一模一样。

# !/usr/bin/env python

# encoding:utf8

from django.db import models

class ServerDevice(models.Model):

server_device_choice = (

('offline', u'下线'),

('online', u'上线'),

('to_be_online', u'待上线'),

('test_server', u'测试'),

)

"""

服务器设备

"""

# 定义一个名称字段,blank没有设置默认为False不能为空,且unique=True必须唯一

name = models.CharField(u'主机名称', max_length=100, unique=True)

# 定义SN编号字段, blank=True可以为空

sn = models.CharField(u'SN号', max_length=200, blank=True)

# 公网IP字段,可以为空

public_ip = models.CharField(u'外网IP', max_length=200, blank=True)

# 私网IP,可以为空

private_ip = models.CharField(u'内网IP', max_length=200, blank=True)

# 定义mac地址字段

mac = models.CharField(u'MAC地址', max_length=200, blank=True)

# 定义 *** 作系统字段

os = models.CharField(u' *** 作系统', max_length=200, blank=True)

# 定义磁盘信息字段

disk = models.CharField(u'磁盘', max_length=200, blank=True)

# 定义内存信息字段

mem = models.CharField(u'内存', max_length=200, blank=True)

# 定义CPU信息字段

cpu = models.CharField(u'CPU', max_length=200, blank=True)

# 机器状态,默认都为在线状态

status = models.CharField(max_length=10, choices=server_device_choice, default=u'下线')

# 定义备注字段

memo = models.CharField(u'备注', max_length=200, blank=True)

def __unicode__(self):

return self.name

class Meta:

db_table = 'server_device'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11798285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存