-
添加主机组要在Zabbix页面配置主机组,请执行以下步骤:1、以admin用户登录Zabbix前端Portal。2、左边导航栏选择“Configuration > Host groups”。3、在页面右上方单击主机组(Create host group),在表单中输入参数。参数描述Group name输入唯一的主机组名称。在zabbix前端创建一台主机按照以下步骤在Zabbix前端创建一台主机:1、以admin用户登录Zabbix前端Portal。2、切换到“配置 (Configuration)>主机 (Hosts)” 。3、在右侧点击创建主机(Create host) (或者在主机名上编辑一台已有的主机)。在表单中输入主机的相关参数。已经存在的主机上使用Clone和Full clone按钮的形式创建一个新的主机,点击Clone将保留所有的主机参数和模板链接(保留所有的模板入口),Full clone将额外保留直属实体(应用集、监控项、触发器、视图、底层自动发现规则和Web定制的场景)。配置如下:Host标签页包含了通用的主机属性:表1 参数说明属性描述Host name输入一个唯一的主机名。允许有字母、空格、圆点、破折号和下划线。注意: 由于Zabbix agent运行在你所配置的那台主机上,所以此agent配置文件的参数“Hostname”必须和这里输入的主机名是一致的。 在配置主动代理检查的过程中参数中的主机名也是需要的。Visible name显示名称。如果你设置了这个名称,它将会在列表、拓扑图等地方显示。此属性支持UTF-8 。Groups选择主机所属主机组。一个主机必须至少属于一个主机组。Interfaces支持这几种主机接口类型: Agent、SNMP、JMX和IPMI。要增加一个新接口,在Interfaces区域点击“Add” ,输入IP/DNS、Connect to和Port信息。注意: 用在任何监控项的接口都不能被删除,并且Remove链接是灰色的。在SNMP接口使用Use bulk requests选项来为每个接口启用和禁用SNMP请求的批量处理。IP address主机的IP地址(可选),IP和DNS至少填一个。DNS name主机的DNS名称(可选),IP和DNS至少填一个。Connect to点击对应的按钮告诉Zabbix服务器采用哪种模式从代理端获取数据:IP - 连接到主机的IP地址(推荐)。DNS - 连接到主机的DNS名称。PortTCP/UDP端口。默认端口:Zabbix agent 10050,SNMP agent 161,JMX 12345,IPMI 623。Description填写主机描述。Monitored by proxy主机可以被Zabbix服务器或者Zabbix代理服务器监控:(no proxy) - Zabbix服务器监控主机。Proxy name - Zabbix代理服务器“代理服务器名称”监控主机。Enabled选中此项激活主机,准备接受监控。如果没选中,表示主机未激活,不能被监控。Templates选项卡允许你将templates链接到主机。所有实体(监控项、触发器、图表和应用集)将从模板继承。要链接一个新模板,请开始在“Link new templates”区域键入,直到匹配键入的模板列表出现。向下滚动选择你希望链接的模板。当所有的模板链接完成后,单击“Add”。要取消链接模板,请使用Linked templates区域的两个选项之一:Unlink:取消链接模板,但保留它的监控项、触发器和图表。Unlink and clear :取消链接模板并删除所有它的监控项、触发器和图表。列出的模板名可以点击跳转到模板配置表单。
-
第三方接入告警项配置和开发总体流程:
-
英文原文:cid:link_1说明:【】中内容为方便解释自己加的在这篇文章中,我们描述了Pinpoint的技术细节比如请求追踪(transaction tracing)和字节码插装(bytecode instrumentation),同时说明了应用于Pinpoint agent中的优化方法,它可以修改字节码并记录性能数据。分布式事务追踪,基于Google的Dapper基于Google的Dapper,Pinpoint可以追踪到一个事务(transaction)中的分布式请求【这里说白了即指Pinpoint能够追踪到从应用A到应用B的一次分布式请求中的所有数据】Google Dapper 中分布式事务追踪是如何工作的分布式追踪系统的目的就是对于分布式系统中的两个节点Node1和Node2,当有一条消息从Node1发送到Node2时,分布式追踪系统能够识别Node1和Node2之间的关系(如图1所示)图1. 分布式系统中的消息关系问题在于没有方法能够识别消息之间的关系,比如我们无法辨别从Node1发送的N条消息和Node2接收到的N条消息之间的关系,换句话说,当从Node1发送第X条消息时,你无法在Node2收到的N条消息里分辨出Node1发送的第X条消息。有系统尝试在操作系统或者TCP级别追踪这些消息,然而实现复杂度高,同时性能低,因为需要针对每个协议单独实现。此外,很难准确地跟踪消息。Google的Dapper提供了一种解决上述问题的简单方法。方案便是当发送消息的时候,在应用级别给这些消息加上标签,从而能够使这些消息关联起来。例如,对于Http请求,它在Http请求头中加入标签信息,并使用这个标签信息追踪消息。可以查看论文了解Dapper :cid:link_2Pinpoint 基于Google的Dapper中的追踪技术,同时进行了修改,在远程调用的时候,pinpoint会在调用方加入应用级别的标签数据来追踪分布式事务(请求),标签数据由一系列的key组成,在pinpoint中定义为 TraceIdPinpoint中的数据结构在pinpoint中,核心的数据结构包括:Spans,Traces 以及 TraceIdsSpan: RPC(远程过程调用)追踪的基本单元,它代表了远程调用到达时处理的工作并且包含了追踪数据【直白点说,你可以把一个应用当作一个Span】,为了确保代码级别的可见性,Span有子节点,用SpanEvent【这个就相当于一次方法调用,故一个Span可能大部分都会有多个SpanEvent】表示,每个Span都包含一个TraceId,每个Span有一个SpanId和ParentSpanId,如果这个Span为请求的最原始的发起者,ParentSpanId为-1。Trace: Span的集合,由关联的RPC调用组成【这个也就是说在分布式系统中,每个应用代表一个Span,不同应用的一次全链路的请求表示一个Trace,即一个Trace会包含多个Span】,在同一个链路中的Spans共享同一个TransactionId,Trace通过SpanIds和ParentSpanIds排序成分层树结构。TraceId: 一系列key的集合,这些key包括:TransactionId,SpanId和ParentSpanId,TransactionId代表消息的id,这个id在一次追踪过程中唯一,SpanId和ParentSpanId代表远程调用的父子关系。TransactionId(TxId): 一次事务(请求)中分布式系统发送/接收的消息id,在整个请求关联的所有应用服务中必须唯一SpanId: 处理接收RPC消息的应用id,在RPC消息到达某个节点时生成ParentSpanId(pSpanId): 发起RPC调用的父span的 SpandId,如果某个节点时整个事务请求的发起者,那么它没有父span,对于这种情况,我们使用 -1表示这是整个事务请求的根spanGoogle的Dapper和NAVER的Pinpoint的术语的不同处Pinpoint中的术语 TransactionId和Google的Dapper中的术语TraceId意思相同,TraceId在Pinpoint中表示的是一系列key的集合【前面提到的TransactionId,SpanId等】TraceId如何工作?下图展示的是TraceId的行为,里面包括了三次RPC请求以及4个节点【这个就相当于一次请求,即一次transaction】图2. TraceId行为样例在图2中,TransactionId(TxId)表示的是三次不同的调用通过TransactionId(TxId)关联在一起作为一次事务请求(transaction),然而,TransactionId自身并不能明显的描述RPC之间的关系。为了识别RPC之间的关系,我们需要SpanId以及ParentSpanId(pSpanId)。假设节点是tomcat,你可以想象成 SpanId是处理http请求的线程,parentSpanId代表的是发起这次RPC请求的SpanId【这里假设应用A和B,A调B,A和B都是一个Node,同时A是SpanIdA,B是SpanIdB,因为是A调B,那么B的parentSpanId就是SpanIdA了】Pinpoint通过TransactionId查找关联的多个Span,同时根据SpanId和ParentSpanId对他们进行层次关系排序。SpanId和ParentSpanId都是64位的长整型,由于数字是随机产生的,因此可能会有冲突,但是考虑到64位长整型的范围是 -9223372036854775808到9223372036854775807,冲突发生的几率很小。如果真的产生冲突,Pinpoint和Google的Dapper一样,会让开发者知道发生的情况而不是解决冲突。TransactionId由 agentId,JVM启动时间以及一个序列号组成agentId: JVM启动时用户创建的id;在安装了Pinpoint的整个服务器组内必须唯一,最简单的方式是使用主机名hostname,因为通常主机名不会重复,如果你需要在服务器组运行多个JVM,可以在主机名前加下前缀避免重复jvm启动时间:用于保证生成的唯一序列号(SequenceNumber)从0开始【这里没怎么懂】,这个值用来当用户不小心创建了相同的agentId时避免transactionId冲突SequenceNumber: Pinpoint agent产生的id,从0开始递增,每条消息都会产生一个Dapper和Zipkin(Twitter的一个分布式追踪平台),随机生成TraceIds(对应Pinpoint中的TransactionIds),认为id冲突是很常见场景。但是,在Pinpoint中,我们努力避免这种冲突,有两个选择:一是id中的数量量小但是冲突的可能性很高;另外一种是id的数据量大但是冲突的可能性低,Pinpoint选择的是后一种【也就是说pinpoint为了使TransactionId的冲突减少,TransactionId的数据会大点】可能有更好的方法来解决这个问题,我们提出几个想法,比如通过一个中心key服务器来产生key【这里指的应该就是前面的TransactionId】,但是由于性能和网络问题没有实现。目前我们仍然在考虑批量产生key作为替代解决方案。因此在将来,可能会开发出这样的方法,但就目前而言,我们采用了一种简单的方法。在Pinpoint中,TransactionId是可变的数据。字节码注入,无需修改代码前面我们解释了分布式事务追踪。一种方法是让开发者修改自己的代码,当发生RPC调用的时候允许开发者增加标记信息,然后修改代码负担比较重。Twitter的Zipkin使用修改后的类库以及容器(Finagle)来提供分布式追踪的功能,然后它同样需要开发者修改代码,我们想要的是不修改代码就能实现追踪功能,同时提供代码级别的可见性,Pinpoint使用了字节码注入技术(bytecode instrumentation),Pinpoint的Agent干预(拦截)调用RPC的代码以便自动处理标记信息。克服字节码注入的缺点如下所说,有两种方式实现分布式追踪。字节码注入是一种自动的方式手动方式:开发者使用Pinpoint提供的api在关键位置记录数据自动方式:开发者无需修改代码,Pinpoint决定那些代码需要干预和增强两种方式的优缺点如下方法优点缺点手动追踪需要较少的开发资源;API可以变得简单因此bug也少开发者需要修改代码;跟踪级别低【这里的跟踪级别高低怎么理解?】自动追踪开发者无需修改代码;可以收集到更精确的数据需要高素质的开发人员可以快速的识别哪些代码需要跟踪,以及在哪些跟踪点需要处理;由于使用了字节码注入等高级开发技巧,bug也会多字节码注入技术会引入更高的难度和风险,但是有很多益处。尽管字节码注入需要很多的开发资源,但是部署应用的时候几乎不需要(即开发难,部署运行简单)【中间一段无关痛痒的分析字节码注入方式的好处就不翻译了】字节码注入的价值我们使用字节码注入(自动方法)来实现除了上面提到的还有下面一些理由隐藏API如果API是暴露给开发者使用,作为API的提供者,想根据我们的需要修改API时往往会受到限制,这种限制会给我们很多压力我们可能会修改API来纠正错误或者添加新功能,然而如果修改受到限制的话,我们很难完善API,解决此类问题的最佳答案是可扩展的系统设计,这并不是每个人都知道的简单选择。 创建完美的API设计几乎是不可能的,因为我们无法预测未来。通过字节码注入技术,我们不用担心暴露追踪API导致的这些问题,也可以持续完善设计而不用考虑依赖关系。想要使用Pinpoint开发应用的开发者需要注意API可能会修改,因为我们的第一优先级是提高性能和设计。容易开始或者关闭使用字节码注入的缺点是当分析的类库或者Pinpoint本身有问题时,你的应用程序会受到影响,但是你不许需要修改代码,只需要禁用Pinpoint即可解决这种问题通过在JVM启动脚本中添加以下三行(与Pinpoint Agent的配置相关联),可以轻松地为应用程序启用Pinpoint:-javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar-Dpinpoint.agentId=<Agent's UniqueId>-Dpinpoint.applicationName=<The name indicating a same service (AgentId collection)>123如果因为Pinpoint导致什么问题,只需要删除启动参数里的配置字节码注入是如何工作由于字节码注入需要处理Java字节码,往往会增加开发风险同时降低开发效率,此外,开发人员容易犯错误。在Pinpoint中,我们通过抽象出拦截器提高开发效率和可访问性,Pinpoint在类加载时干预应用程序代码,注入必要的代码来跟踪分布式请求以及性能信息,由于跟踪代码直接注入应用程序代码,因此这提高了性能。图3. 字节码注入的基本原理在Pinpoint中,API拦截部分和数据记录部分是分开的。 拦截器被注入到我们想要跟踪的方法中,并调用before()和after()方法来处理数据记录。 通过字节码检测,Pinpoint Agent只从必要的方法记录数据,这使得分析数据的大小变得紧凑。优化Pinpoint Agent的性能下面我们描述下如何优化Pinpoint agent的性能使用二进制格式(Thrift)你可以使用二进制格式(Thrift)加快编码速度,尽管它很难使用和调试,但是可以提高网络利用率以及减小生成的数据大小使用可变长度编码和格式优化记录数据如果你把一个长整型转化成定长的字符串,数据大小是8字节,但是,如果你使用可变长度编码,跟你长整型数字的大小,转化后的数据长度可能是1到10字节。为了减少数据大小,Pinpoint通过Compact Protocol of Thrift将数据编码为可变长度字符串,并记录要针对编码格式进行优化的数据。 Pinpoint Agent通过将基于根方法的剩余时间转换为矢量值来减少数据大小。可以通过Google开发者的 Base 128 Varints来了解更多关于可变长度编码图4.定长编码和可变长度编码的比较如图4,有三个不同的方法开始调用和完成调用,你需要在这6处记录时间,采用定长编码,需要48字节(6处*8字节)。Pinpoint agent使用可变长度编码,并根据其对应的格式记录数据,同时以根方法的起始时间为基准,计算其他方法处与基准的差异(矢量值)来计算时间,由于向量值是一个小数字,它消耗少量字节,因此只消耗13个字节而不是48字节如果执行方法需要更多时间,即使使用可变长度编码,也会增加字节数。 但是,它仍然比固定长度编码更有效。使用常量表替换重复的API信息,SQL语句以及字符串我们希望pinpoint能够实现代码级别的追踪,然而会造成数据变大的问题,每次高精度的数据发送到服务端,数据变大会增加带宽开销。为了解决这种问题,我们采用了一种策略,通过在远程的HBase服务中创建一张常量表,既然每次发送“方法A”的数据到Pinpoint的Collector都有负载,Pinpoint Agent把"方法A"的数据转化成一个ID并在HBase的常量表中存储方法A的信息,并且使用这个ID继续后面的追踪,当用户在网站上检索跟踪数据时,Pinpoint Web会在常量表中搜索相应ID的方法信息并重新组织它们。 使用同样的方法用于减少SQL或常用字符串中的数据大小处理批量请求的采样Naver提供的在线门户服务请求非常庞大。 单个服务每天处理超过200亿个请求。 跟踪此类请求的一种简单方法是根据需要扩展网络基础架构和服务器以满足请求的数量。 但是,这不是处理这种情况的经济有效的方法。在Pinpoint中,您可以只收集采样数据,而不是跟踪每个请求。 在请求很少的开发环境中,每个数据都会被收集。 在请求很大的生产环境中,只收集整个数据的1~5%,这足以分析整个应用程序的状态。 通过采样,您可以最大限度地减少应用程序中的网络开销,并降低网络和服务器等基础设施的花费。Pinpoint中的采样方法:Pinpoint支持一个计数采样器(Counting Sampler),如果设置为10,那么只会收集十分之一的请求。我们计划添加新的采样器来更高效地收集数据使用异步数据传输最小化被终止的应用线程Pinpoint不会干挠应用程序线程,因为数据编码和远程消息传输是通过异步线程实现的通过UDP传输数据与Google的Dapper不同,Pinpoint通过网络传输数据以确保数据速度。 当数据流量突然爆发时,与你的服务共享网络可能是一个问题。 在这种情况下,Pinpoint Agent开始使用UDP协议这样你的服务便有网络连接优先级【这里也是说如果你的服务使用TCP,pinpoint 使用UDP的话,TCP优先级高于UDP?】注意: 数据传输的API可以被替换,因为他是独立的接口,你可以替换成不同的实现,比如通过本地文件Pinpoint应用样例下面是如何在你的应用程序中获取数据的例子,这样你能全面理解上面描述的内容。图5展示当你的TomcatA和TomcatB安装了Pinpoint你可以看到什么,你可以看到单个节点作为单个请求事务的追踪数据,表示的是分布式事务追踪的流图5 实践中的pinpoint样例下面描述了Pinpoint在每个方法中做的事情当请求到达TomcatA时,Pinpoint Agent产生了一个TraceIdTX_ID: TomcatA^ TIME^1SpanId: 10ParentSpanId: -1(根)从Spring MVC controllers中记录数据干预 HttpClient.execute()方法的调用,并在HttpGet中组装TraceId创建子 TraceIdTX_ID: TomcatA^ TIME^ 1 -> TomcatA^ TIME^1SPAN_ID: 10->20PARENT_SPAN_ID: -1->10(父SpanId) ——在HTTP头部中配置子TraceIdHttpGet.setHeader(PINPOINT_TX_ID,“TomcatA^ TIME^1”)HttpGet.setHeader(PINPOINT_SPAN_ID,“20”)HttpGet.setHeader(PINPOINT_PARENT_SPAN_ID,“10”)将打了标记的请求传输到TomcatBTomcatB检查传输过来的请求头部HttpServletRequest.getHeader(PINPOINT_TX_ID)——TomcatB成了子节点,因为它识别到了header中的TraceIdTX_ID: TOMCATA^ TIME^1SPAN_ID: 20PARENT_SPAN_ID: 10注意到子节点的SPAN_ID其实是由父节点创建好的从Spring MVC controllers中记录数据并完成请求当TomcatB中的请求完成时Pinpoint agent将追踪数据发送到Pinpoint Collector存储到HBase来自TomcatB的HTTP调用终止后,TomcatA的请求完成。 Pinpoint Agent将跟踪数据发送到Pinpoint Collector以将其存储在HBase中UI从HBase读取跟踪数据,并通过对树进行排序来创建调用堆栈总结Pinpoint是另一个与你的应用程序一起运行的应用程序。 使用字节码检测使Pinpoint看起来像是不需要修改代码。 通常,字节码检测技术使应用程序容易受到风险的影响; 如果Pinpoint出现问题,它也会影响你的应用程序。 但就目前而言,我们并没有摆脱这些威胁,而是专注于提高Pinpoint的性能和设计。 因为我们认为这使得Pinpoint更有价值。 因此,是否使用Pinpoint是由你决定的。我们仍然需要做大量的工作来改进Pinpoint。 尽管Pinpoint不完整,但它作为一个开源项目被发布了; 我们不断努力开发和改进Pinpoint,以满足你的期望
-
host group:是一个Host的群组,拥有相似属性的host可以组成一个group,方便统一的管理,比如珠海办公室所有的电脑可以组成一个host组。host:被监控的设备,物理服务器,虚拟机,交换机等,是Zabbix监控的基本载体,所有的监控都是基于host 。item:监控指标,CPU使用率,磁盘利用率,是监控项,是监控的基本元素,每一个监控项对应一个被监控端的采集值。Application:是Item的集合,将相似的item放置在同一个application里面便于管理,比如所有监控网络item。Trigger:Trigger是触发器,当Items采集值满足Triggers的触发条件时,就会产生actions。Action:是告警动作,当触发器条件被满足时,就会执行指定的action。Media:即告警方式,Zabbix提供四类Media:Email/SMS/Jabber/Script。Template:模板是可以方便地应用于多个主机的一组实体。而这些实体包括:items、triggers,graphs、applications等。
-
以下图是告警具体上报流程
-
统一运维服务组网结构(由交付与服务完成部署)如下图所示:说明:1、所有容器都是单实例部署;2、运维平台属于管理面,需要和业务集群网络隔离;3、防火墙/安全策略需要根据现场的PaaS平台指导文档进行配置;4、Mysql如果采用RDS服务,要注意通过安全组策略配置,仅允许信任域内访问;公有云和私有云场景部署的区别如表1:表1 场景部署图 场景公有云私有云各容器持久性数据需要用到共享存储SFSNFS ,单独部署NFS双机Portal的访问入口使用负载均衡接入ELB采用双node节点部署Keepalived方式提供高可用能力,或者通过k8s nodeport方式访问。
-
1、无法增加备份服务器背景: 创建两个虚拟机作为管理面和数据面的服务器,由于系统盘内存小,手动挂载了一个100G的磁盘,可增加备份服务器失败定位:在挂载磁盘后,sftpuser用户的用户组变成了root操作步骤:进入“/opt/sftpuser”目录,执行以下命令,恢复成sftpgroup用户组chown sftpuser:sftpgroup sftpboot2、恢复删除的lb容器背景:因lb启动异常,需要删除lb容器,但删除方法错误,lb容器没有自动恢复。错误的删除步骤如图:操作步骤:2.1、在“TOSCA堆栈部署”页面中,点击lb堆栈2.2、点击“卸载”2.3、点击“安装”,根据提示点击“下一步”,不需要修改任何参数。2.4、回到“K8S应用部署”界面,可以看到lb容器已恢复。3、管理面检查时报错,是否存在静态路由定位到没有默认路由“0.0.0.0”情况1:OP(私有化)部署场景下,euler系统,可能原因是bootproto参数为“dhcp”解决方法:在I层添加“0.0.0.0”默认路由,如果I层是FusionComputer,操作步骤如下步骤1:登录管理面虚机,输入以下命令,打开“eth0”网卡vim /etc/sysconfig/network-scripts/ifcfg-eth0步骤2:输入“i”键进入编辑状态,将BOOTPROTO参数改为static步骤3:按“Esc”键退出,输入“:wq”保存步骤4:输入以下命令,重启网络service network restart结果显示:情况2:suse12.5系统,没有手动配置默认路由解决方法:步骤1:以paas用户登录管理面节点,切换到root用户步骤2:打开routes文件,配置默认路由vi /etc/sysconfig/network/routes编辑网关信息如下:default x.x.x.x - -配置完成后保存退出提示:多网络平面,根据场景包中Excel表的DefaultRoute参数配置哪个平面为默认路由。步骤3:重启网络使配置生效service network restart 4、服务器下电时间长,高斯V3启动失败 数据库内部的可见性判断是通过SCN实现的,SCN的机制就是系统时间戳+序列号,启动的时候会根据系统时间来更新时间戳。如果启动之前,系统时间被错误的调整的很大,会导致SCN耗尽。因此新增了一个参数,用于设置系统时间变大的范围。规避手段:1、分别使用root用户登录高斯v3的节点,切换至高斯用户:su - gtsgsdba -s /bin/bash2、执行以下命令cat /opt/gdbservice/data/log/run/zengine.rlog |grep 'System time increased';if [[ $? == 0 ]]; then echo 'SCN跳变问题,尝试恢复' sed -i "s/^_SYSTIME_INCREASE_THREASHOLD.*/_SYSTIME_INCREASE_THREASHOLD = 30/g" /opt/gdbservice/data/cfg/zengine.ini zctl.py -t stop zctl.py -t start info.sh|grep -w OPEN [[ $? == 0 ]] && echo "repair succeeded." || "repair failed."else echo '非SCN跳变问题, repair failed.'fi5、安装完管理中心,登录管理面前台,页面没有显示版本信息定位过程:查看gde-version依赖的软件包DSPBase软件包存在查看gde-version堆栈模板及堆栈,模板存在,但没有创建堆栈gkit前台页面的日志中查看到创建gde-version失败了,但并没有停止安装解决方法:手工创建gde-version堆栈步骤1:依次点击“应用开发”->“堆栈模板”->“部署堆栈”步骤2:部署堆栈页面,填写“堆栈名称”和“base_version”参数,点击“下一步”。堆栈名称:gde-version;base_version:2.1.0步骤3:点击“创建堆栈”步骤4:等待堆栈创建。创建成功后,页面显示版本信息6、2.1升级2.1cp8版本,在管理面检查时预备步骤报错:failde to refresh deploy mode in cluster configuration(未能在群集配置刷新部署模式)定位过程:在/etc/resolv.conf文件下不存在设定好的dns(10.247.0.20),因此无法ping通dns,原因在于配置网卡的时候配置了客户的域名,使得我们固有的10.247.0.20发生变化解决方法:登录管理面后台,vim /etc/resolv.conf文件,加入10.247.0.20域名。在/etc/custom_ resolv.conf文件,加入客户的域名7、 安装管理面时,在安装FusionStage时报错,报错如下 定位过程:查看文件,提示:不能连接docker;查看docker状态,发现docker挂了,并且无法重启查看daemon.json文件,该文件写入了一些内容(客户自定义),在初始环境中,该文件的内容为空解决方法:登录管理面和数据面虚机后台,切换到root用户,删除或置空/etc/docker/daemon.jason文件,再重拉docker8、 检查管理面报错,查看任务详情提示ssh鉴权失败 定位过程:执行以下命令,正常情况下会返回一条“yes”命令,但局点环境返回了两条;sudo cat /etc/ssh/sshd_config | grep ^PasswordAuthentication | awk -F " " '{print $2}'查看/etc/ssh/sshd_config配置文件,与系统原始文件不符,得知修改过该配置文件,为其加固过解决方法:将配置文件恢复成系统初始文件,后重新检查,检查通过提示:在管理中心安装完成之前,不能对系统进行修改
-
规范和要求监控项要求OPS平台可以监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控。标准监控指标按照OS,DB,容器,业务应用的维度,建议伙伴实现如下常用的监控告警项如下:1、接入OPS之后,OS、容器自动监控,不需要伙伴开发监控脚本。2、DB和业务应用需要伙伴自己开发监控脚本。表1 监控指标说明监控大类指标分类指标名称指标说明DB性能类指标QPS数据库每秒处理的请求数量TPS数据库每秒处理的事务数量并发数数据库实例当前并行处理的会话数量连接数连接到数据库会话的数量缓存命中率查询命中缓存的比例高可用指标可用性数据库是否可以正常对外服务阻塞当前阻塞的会话数慢查询慢查询情况主从延迟主从延迟时间主从状态主从链路是否正常死锁查看死锁信息OSCPUCPU steal timeCPU使用内部虚拟机运行任务的时间占CPU总时间的百分比CPU softirq timeCPU软中断时间CPU nice time用户进程空间内改变过优先级的进程占用CPU百分比CPU iowait time用户进程等待磁盘IO而使CPU处于空闲状态的比例CPU system time空闲CPU百分比CPU idle time空闲时间CPU interrupt time中断时间Processor load (15 min average per core)CPU 15分钟负载Processor load (5 min average per core)CPU 5分钟负载Processor load (1 min average per core)CPU 1分钟负载Context switches per second每秒上下文切换数磁盘Free disk space磁盘剩余百分比Free inodes磁盘inodeRead: Bytes/sec磁盘读速度Write: Bytes/sec磁盘写速度内存Total memory内存总量Available memory可用内存大小Total swap space交换分区大小Free swap space in %空闲交换分区百分比网络Incoming network traffic每秒进入字节数Outgoing network traffic每秒出去字节数net performance网络性能监控(重传、丢包率、拥塞)OSNumber of logged in users登录用户数Maximum number of processes系统设置的最大进程数Maximum number of opened files系统设置的最大打开文件数容器k8s容器容器应用的CPU使用率容器应用的CPU使用率容器应用每分钟内存增长容器应用每分钟内存增长容器应用内存使用率(不含cache)容器应用内存使用率(不含cache)容器CPU的限额容器CPU的限额容器应用消耗的CPU的时间容器应用消耗的CPU的时间容器应用内存限额容器应用内存限额容器应用内存占用量(不含cache)容器应用内存占用量(不含cache)容器CPU的总时间容器CPU的总时间容器状态监控容器状态监控业务和应用监控业务监控指标交易量反映业务系统的交易量大小交易成功率反映业务交易执行是否正常交易时长反映业务系统的交易的性能是否正常应用监控指标Web应用返回码反映Web应用运行是否有异常应用响应时间反映应用的性能状况会话数、会话连接反映应用的可用性及负载监控项示例:1、OS101003_{HOST.IP} has just been restarted! [主机已重启]101009_{HOST.IP}_{HOST.IP}_{#FSNAME}_Free disk space is not enough on volume! [磁盘空间不足]101027_{HOST.IP}_CPU usage pecentage is high! [操作系统CPU利用率过高]2、DB101031_{HOST.IP}_elastalert_{HOST.IP}_Slow sql found! [RDS中有sql执行时长超过60秒。详情: {ITEM.VALUE}]101035_{HOST.IP}_{#APPNAME}_Mysql slave_IO/SQL_Running status error![MySQL主从复制异常:Slave_IO_Running状态异常]101037_{HOST.IP}_{#APPNAME}_connect status check failed![MySQL {#APPNAME} 检查连接异常]101040_{HOST.IP}_Process restart! [DB进程重启]3、容器101019_{HOST.IP}_Docker CPU usage percentage is high! [容器内CPU使用率过高]101021_{HOST.IP}_Docker memory usage percentage is high! [容器内内存使用率过高]101039_{HOST.IP}_Docker_ {#IMAGES} container_id_list change[{#IMAGES}容器id发生变化]4、业务应用106003_{HOST.IP}_DataTool job scheduling error! [DataTool作业调度异常]106042_{HOST.IP}_BatchFileProcessBO__export_File {fileName}({fileSize}) is over size[批处理导出的文件大小超过了上限值]106023_{HOST.IP}_Found airflow gunicorn process missing![DataTool的airflow gunicorn进程消告警ID规则1、伙伴(第三方厂家)告警ID编号规则:{厂家名称缩写}{产品名称缩写}_{产品内告警定义序号}。例如BPIOT_000012、告警名称规则:{告警ID}_{描述}表2 告警名称规则和示例规则示例{厂家名称缩写}{产品名称缩写}_{产品内告警定义序号}_{描述}新基点IOT的告警ID和告警名称:BPIOT_00001_xxx模块有xxx异常奥看的告警ID和告警名称:Allcam_00001_xxx模块有xxx异常伟岸GIS的告警ID和告警名称:VRGVGIS_S0001_xxx模块cpu占用率高巡检项ID规则巡检项编号用于唯一区分每个巡检项目。巡检项编号由10个字符组成,字符包括A~Z的字母和0~9的数字。例如HI1500101B表3 巡检项ID规则 字符位置解释第1、2、3位表示巡检标准代号,固定为“HI1”表示为HiCampus inspection standardard version 1。第4、5位子系统编号,代表智慧园区解决方案里的子系统,如下子系统已经预定义编号,如果有新增子系统,需要申请新的编号,以免出现编号重叠冲突。01:ABC/Bingo02:ROMA03:数据平台(包括DataTool)04:操作系统OS通用巡检项,包括VM、物理服务器等05:数据库DB通用巡检项(gaussdb、mysql)06:HiCampus Core巡检项(IO、BO、DO)07:HiCampus 业务巡检项(空间&设备&GIS&环境、综合安防、综合态势、系统管理&便捷通行等)08:AI巡检项09:原生服务巡检项50及以后:伙伴定制定制巡检项第6、7位子系统内的各类模块/网元的编号,由子系统内部自行编号,取值从00,01,02,…,99,A0,A1,…,Z9。第8、9位巡检项目编号。从00开始编写,取值01,02,…,99,A0,A1,…,Z9的方式递增。第10位巡检项目的问题性质,用“A”、“B”和“C”表示,如下表所示。A:表示重要问题,指参数配置或数据设定等会对设备运行带来重大隐患或致命的问题,必须整改,否则应记录到工程备忘录(因客户原因造成),并在质检(自检)报告中说明原因。扣分权重大于等于3分。B:表示次要问题,指对设备运行会造成影响,但不会发生严重损害的问题,必须整改,否则在质检(自检)报告中说明原因。扣分权重大于等于1分。C:表示其他问题,指对设备的运行影响非常小或没有,但属于需要规范的数据问题,建议整改。扣分权重大于等于0.5分。
-
【问题来源】 比亚迪【问题简要】 在执行ADB UCMSBR是配置认证密码,要配置成一个复杂密码,如何配置成一个简单密码,比如一串数字【问题类别】【必填】 UAP9600 【AICC解决方案版本】【必填】 UAP9600 V100R005C00SPC108【期望解决时间】 尽快【问题现象描述】【必填】在执行ADB UCMSBR是配置认证密码,要配置成一个复杂密码,如何配置成一个简单密码,比如一串数字
-
概念谈到运维,监控应该是运维的重中之重。监控应该是运维的第三只眼睛,一个好的监控平台对运维工作本身来说,应该有很大的帮助。运维的核心工作其实是监控和故障处理。两个方面的工作首先是对这个业务系统运维要有一个精确的完善的监控。那么目的就是能够保证在第一时间去发现问题并且去通知相关人员解决问题。其实出现问题了并不可怕,可怕的是运维很久没有发现问题,那么最终被客户发现运维的业务系统出现故障,那么就是个很严重的问题了,这些都是靠监控平台来完成的。OPS运维平台介绍图1 OPS运维平台介绍总体场景说明:资源监控:监控虚拟机、容器、应用进程资源状态。应用监控:监控应用的时延、负载、使用率、错误等。监控拨测:定时检查APP/BO是否正常。告警管理:可管理资源监控产生的告警,或者日志产生的告警,或者应用通过接口上报的告警。日志管理:可管理OS、容器平台和应用的日志信息。巡检总览:提供系统巡检框架,展示巡检状态。配置总览:提供配置下发功能,保持配置变更。平台与应用资源采集包含以下两种场景:虚拟/容器类平台:OPS配置后,采集资源信息。应用类采集:配置相应的进程信息,OPS根据对接进程资源进行监控。平台与应用日志采集有以下两种方式:主动采集日志:ops可以通过配置对采集os、docker日志,对于应用类日志,通常需要是文本、且存放位置可访问才可采集。对接采集日志:对于未符合采集要求的应用,可以ops提供日志上报接口,可以由应用调用ops接口上报日志。告警、KPI、日志接入园区的运维台的方案图2 接入园区的运维台方案介绍说明:目前所有部署形态(例如HC,HCS,Cube)下都可以接入本地线下运维台,但是Cube部署形态能够接入线上运维台。产品的KPI和告警: 通过Zabbix Agent或者Zabbix Sender上报给Zabbix Proxy,或者直接调用Zabbix的API接口上报。需要支持同时上报到两个Zabbix Proxy。 Grafana可以读取Zabbix Server中的KPI数据展示图标。产品使用的中间件的监控KPI和告警也有对应产品负责。产品的日志文件:日志通过Filebeat采集,上报给园区OPS的logstash,logstash对日志进行规整和解析后存入ElasticSearch。运维人员可以通过Kibana检索日志,Grafana可以读取ES中的KPI数据展示图标。ES触发的告警、Grafana触发的告警可以通过Webhook上报给Zabbix Server。伙伴开发流程定义监控的KPI和告警。开发SDK或脚本来上报KPI和告警。开发Zabbix的主机模板、KPI模板、告警模板等。filebeat的采集配置。设计和开发Grafana上的视图模板、告警模板等。
-
背景:由于有些场景在启用Ranger情况下,客户在分配权限时候对高权限有特别要求,尽可能给用户设置低权限,无法在ranger中设置用户为 is Role admin权限(hive管理员权限)测试版本:MRS-3.1.2版本(hive启用ranger鉴权)操作流程:1、在Ranger中配置用户具有udf创建查看权限以rangeradmin用户登录Ranger——>点击hive添加一个新的策略创建策略(注意步骤2可以选择指定库,步骤3中默认是table要选成udf,值可以定义为*)(步骤4选择添加的用户,步骤5中至少要给create权限,drop权限为删除udf函数权限可选是否给)2、在客户端安装节点,把UDF函数jar包打包(如AddDoublesUDF.jar),并上传到HDFS指定目录下(例如“/user/hive_examples_jars”)。创建函数的用户与使用函数的用户都需要具有该文件的可读权限。示例语句:hdfs dfs -put ./hive_examples_jars /user/hive_examples_jarshdfs dfs -chmod 777 /user/hive_examples_jars3、安全模式,需要使用具有udf create管理权限的用户登录beeline客户端,执行如下命令:kinit Hive业务用户beeline4、在Hive Server中定义该函数,以下语句用于创建永久函数:(其中addDoubles是该函数的别名,用于SELECT查询中使用)CREATE FUNCTION addDoubles AS 'com.huawei.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar';以下语句用于创建临时函数:CREATE TEMPORARY FUNCTION addDoubles AS 'com.huawei.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar';•addDoubles是该函数的别名,用于SELECT查询中使用。•关键字TEMPORARY说明该函数只在当前这个Hive Server的会话过程中定义使用。5、在Hive Server中使用该函数,执行SQL语句:SELECT addDoubles(1,2,3);6、在Hive Server中删除该函数,执行SQL语句:DROP FUNCTION addDoubles;
-
1、安装管理面,在安装FusionStage报错:无法连接pass-core01节点的22端口定位过程:①登录paas-core01节点,输入ss -anot命令,发现没有om网卡ip放通22端口②查看sshd_config文件,发现om网卡ip没有监听解决方法:进入/etc/ssh/sshd_config文件,增加OM网卡ip监听地址2、数据面adc-batch服务安装异常,error:adc-batch status is abnormal定位过程:登录管理面前台页面查看到,该服务的实例正常,但堆栈状态异常,堆栈创建失败。该服务的日志也没有报错且服务安装成功。Gkit页面因堆栈状态刷新失败,仍显示之前安装失败结果。解决方法:刷新adc-batch堆栈状态①登录管理面前台,依次点击“应用上线”->“TOSCA堆栈部署”->“adc-abtch堆栈”,点击重载。②登录Gkit前台页面,点击“继续安装”。3、2.1版本升级2.3版本,升级数据面时报,报错:invoke lb api to delete original adc lb config route_adc_dmz_210.config failed原因:ADC预置证书失效解决方法:①以paas用户远程登录Linux虚机,进入Gkit目录②进入 adc-upgrade-package 证书路径cd tenant/adc-upgrade-package-2.3.0/scripts/adc-lb③将附件中 client-adc-enc.key 和 client-adc.pem 证书文件上传拷贝至当前目录,修改属主和权限,与现网环境当前目录下保持一致④替换证书后,Gkit页面点击“继续升级”。4、2.1升级2.3版本后验证,管理中心无法推送第三方推送的数据定位:进入adc-intg容器,日志中得出无法识别“default”原因:升级到2.3版本后追加了xms服务,xms服务没有对接intg服务,因此显示“default”解决方法:登录管理面前台页面,重启adc-intg服务。5、2.3.0升级2.3spc20版本,管理面准备阶段失败,报错:thinpool空间不足定位:以paas用户登录管理面后台,切换root用户,lvs查看到数据占有率较高。解决方法:清理管理面节点的thinpool操作步骤:以paas用户登录管理面后台,切换到root用户,执行以下命令。res=$(docker images | grep -v canal-agent | grep -v lib-roa | grep -v euler | grep -v cfe-pause | grep -v middleware | grep -v sles | grep -v db-preinstall | grep -v dpa-elasticsearch | grep -v kubenode-upload | grep -v coredns | grep -v ecm-upload | grep -v preset-broker | grep -v cfe-addons | awk '{print $3}');for i in ${res[@]}; do docker rmi -f $i; done如清理冗余后,Data%值仍为50%以上,大概率需要为thinpool扩容。
-
通过yum命令安装的perf,在执行时报错 yum install perf perf --help -bash: /usr/bin/perf: cannot execute binary file: Exec format error操作系统版本:euleros2.0linux版本:Linux version 5.10.0-60.18.0.50.h322_1.hce2.x86_64perf版本:perf-5.10.0-60.18.0.50.r665_5.hce2.x86_64
-
背景: OP(私有化)环境部署后,运维页面和管理中心是以“ip+端口”形式访问,如访问形式改为“域名+端口”,需要在系统中添加域名访问方式。 前提条件: 已申请域名,此域名映射为公网ip 操作步骤 按照文档:见附件
-
【问题来源】深圳星网【问题简要】CMS登陆报401错误【问题类别】【必填】AICC-CMS【AICC解决方案版本】【必填】 【MYSQL 5.7数据库】 【AICC 8.22.100】 【UAP UAP9600 V100R005C00SPC100】 【CTI ICD V300R008C25SPC007】 【期望解决时间】【选填】尽快问题现象描述】【必填】附相关日志
上滑加载中