首页 文章 精选 留言 我的

精选列表

搜索[第四期热点征文-C],共10016篇文章
优秀的个人博客,低调大师

玩转OurBMC第四期:深入探索BMC日志管理模块(上)

栏目介绍:“玩转OurBMC”是OurBMC社区开创的知识分享类栏目,主要聚焦于社区和BMC全栈技术相关基础知识的分享,全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过“玩转OurBMC”栏目,帮助开发者们深入了解到社区文化、理念及特色,增进开发者对BMC全栈技术的理解。 欢迎各位关注“玩转OurBMC”栏目,共同探索OurBMC社区的精彩世界。同时,我们诚挚地邀请各位开发者向“玩转OurBMC”栏目投稿,共同学习进步,将栏目打造成为汇聚智慧、激发创意的知识园地。 本期内容我们将深入探索 BMC 日志管理模块。首先,我们将对 BMC 日志管理模块的框架进行全面解析,了解其组件间的交互与协同工作。其次,通过实际案例的剖析,深入探讨功能模块的具体作用,并展示其在日常运维中的实际应用操作。这不仅能够帮助读者更好地理解和使用 BMC 日志管理模块,还将为服务器的稳定运行和故障排查提供有力的支持。 日志管理框架 在OpenBMC中,日志处理是一项核心任务,确保系统事件、错误、警告和其他重要信息得到妥善记录和管理。其主要采用 rsyslog 作为日志处理工具,下图为 OpenBMC 日志管理流程图: 1. 日志生成:系统中的各个组件和应用在运行时会产生日志消息。这些消息包含了系统运行的重要信息,如错误、警告、通知等。 2. 日志发送:日志消息通常会被发送到日志管理进程。在 OpenBMC 中,常用的日志管理进程是 systemd-journald(简称 journald )。systemd-journald 负责收集、存储和管理来自系统各个部分的日志消息。 3. 日志同步:rsyslog 进程包含一个名为 imjournal 的模块,该模块负责同步 systemd-journald 中的日志消息。这意味着 rsyslog 能够获取到系统中所有关键事件的日志记录。 4. 日志筛选与格式化:rsyslog 根据其配置文件中的规则,筛选特定的日志消息。同时,根据用户定义的格式,rsyslog 将筛选后的日志消息转换为易于阅读和理解的格式。 5. 日志存储与管理:格式化后的日志消息会被保存到指定的文件中。这些文件通常位于系统的标准日志目录下,如 /var/log。通过这种方式,能确保日志消息的持久化存储,方便后续查看和分析。同时,为避免日志文件过大导致性能问题或存储空间不足,OpenBMC 使用 logrotate 进程来管理日志文件。logrotate 可以根据配置规则定期轮转、压缩、删除旧的日志文件,从而确保日志系统的高效运行。 下面我们将结合实际的案例,介绍各个功能模块的作用和实际使用的操作。 systemd-journald systemd-journald 是 systemd 项目的一部分,它是一个守护程序,用于收集、存储和检索来自各种系统组件的日志消息。systemd-journald 功能强大,它使用二进制格式在文件系统中存储日志,这允许它快速地将日志转换为文本或 JSON 格式,便于检索和分析。它由以下三部分组成:守护程序(systemd-journald)、配置文件(/etc/systemd/journald.conf)和调试工具(journalctl),同时 Linux 还提供了一个快速生成日志的工具 logger,允许用户或应用程序直接向 systemd-journald 发送日志消息。 日志显示格式有多种,systemd-journald 支持以 JSON 格式输出日志,这使得日志消息更加结构化和易于解析。一条 JSON 格式的日志消息主要由 [KEY:VALUE] 键值对组成,如下所示,主要由时间、消息内容、日志等级、日志产生者等关键信息组成。 在使用 journalctl 查看系统日志时,主要显示 MESSAGE 字段的值,同时,也可以通过添加需要的KEY来筛选所需的信息。当应用层需要记录自定义的日志信息时,可以通过 sd_journal_send 函数调用来实现。下图是 OpenBMC 中产生一条 SEL 消息的实现方式,主要通过 MESSAGE_ID 来标识SEL消息,同时将该函数注册到到D-Bus方法 ipmiSelAdd 上,当其他应用调用该函数或者 D-Bus 方法时,即可产生一条 SEL 日志消息到系统中。 systemd 库也提供了 journal 日志的读取遍历的接口,通过 sd_journal_open、sd_journal_get_data、sd_journal_close来完成。在 OpenBMC 环境中,日志管理程序 phosphor-logging 创建 D-Bus 日志正是基于 systemd 库提供的接口。具体来说,phosphor-logging 通过调用 sd_journal_send() 函数向 systemd-journald 守护程序发送一条固定格式的日志消息。然后遍历 journal,获取对应 ID 的日志消息,将其对应属性创建到 D-Bus 上。 总的来说,systemd-journald 是一个功能强大的日志系统,为 systemd 提供了高效的日志收集、存储和查询功能,为系统管理和开发提供了有力的支持。 本期重点介绍了 BMC 日志管理框架和 systemd-journald 模块,下期我们将继续探索 BMC 日志管理模块中的其它功能模块,欢迎大家持续关注。 欢迎大家关注OurBMC社区,了解更多技术干货。 OurBMC社区官方网站: https://www.ourbmc.cn/

优秀的个人博客,低调大师

SOA不是“万能钥匙” [SOA征文]

SOA技术在IT界掀起巨大的狂潮,然而它不同于以前的技术变革:模块化编程、面向对象、Web技术等,不论多难理解,总是能很快被大家接受,SOA之所以让很多人觉得难以理解,是因为它不再单纯地从IT人的角度理解IT系统,而是从业务人员的角度分析IT业务系统。 有两种现象相继呈现:一方面是企业SOA改造,精简企业业务流程,提升企业市场竞争与创新的能力,企业IT部门成为了企业管理的核心链条---“神经系统”;另一方面很多企业觉得无从下手,SOA太空无实,业务部门人员不愿支持,业务流程改造单靠IT部门是难以完成的,而企业内非IT部门,尤其是管理层对SOA了解的还很少… 一、 SOA是业务驱动的,不是技术驱动的 SOA概念的提出是在上个世纪了,但近两年在许多大公司相关产品与业绩推动下,SOA一下进入了实际应用的黄金阶段。 SOA的出发点是从业务角度重用应用系统的开发元素,最大程度地降低IT系统开发与维护的成本。很多企业的CIO都面临一个共同的问题:随着网络建设的浪潮涌过,各种业务系统的开发如雨后春笋,在大一些的企业,需要维护成百上千个业务系统是很常见的事,从机房配置、服务器管理、各种支撑系统的维护都让IT部门难以应付,更不用说病毒攻击过后的系统清理与业务恢复,仅仅是查看一下各个业务系统的状态,就需要工作人员花很长时间,要是业务的持续性保障,更是望尘莫及。业务系统的繁多与各自孤立,为新业务的上马带来更大困难,重复开发造成极大的浪费,信息不互通让每个系统都“麻雀虽小,五脏具全”,企业失去了市场竞争的灵活性,极大地触动了企业管理者的神经。 很多大公司开始推广ERP之类的大企业软件系统,希望在一个大系统架构中,可以融合更多的业务流程,各个业务的信息可以交流,避免各个“业务孤岛”带来的管理弊端与效率低下。然而随着单个系统的庞大,开发的难度指数般提升,要考虑的因素太多了,客户业务又千差万别,开发企业的管理成为极大瓶颈;另外“同制化”的设计模式恰恰抹杀了企业的创造力,而失去了“特点”的企业等于选择自杀。IT基础架构如何适应企业的“创造化”需求,新业务的开发如何快捷,如何降低IT支撑系统的管理成本,并提供持续性的服务保障,CIO们重新选择了SOA。 在这种情况下,SOA重新被提出来,按照时髦的解释,SOA是一种IT技术框架,是一种最佳实践,而不是一种具体的技术,能实现SOA的技术很多,如何选择的关键是达到SOA提出的业务灵活度的目标。 SOA的思路其实在IT人中有过类似的想法,我们回顾一下编程人员走过的历程:模块化编程就是把可重用的程序提炼出来,方便调用,提高软件的结构性;后来发展到面向对象,把数据与程序封装在一起,让软件设计人员的思路逐渐接近现实的人类思维方式;B/S架构的流行把客户端的变成维护简单化,业务更适合于网络方式;Web2.0的发展解决了B/S体系的交互问题;中间件技术让跨平台、跨语言的业务开发变得容易……IT人一直在探索、提炼可以重用的、优秀的软件模块,让我们的业务系统开发如搭积木一样容易。 虽然SOA是IT人员的思路,但推动SOA的是企业管理层,SOA是业务驱动发展,而不是技术驱动发展。新的视觉角度,并非所有的企业CIO们对SOA都得心应手,因为IT人员的业务认知弱点是由来已久的。 不再从IT开发人的眼光看待要开发的业务系统,而是从业务的使用者角度看待要开发的系统,面向服务就是面向系统的实际使用者,“谁干谁说的算”,系统应该具备什么功能,应该做成什么样子,要看用户使用的效果。简单地说,就是用“敏捷”的开发思路,代替了“闭门造车”的开发方式。所谓敏捷就是用户的参与,用户不懂你的专业“语言”,就需要快速的模型与界面展现,快速展现不重用是不现实的,而用户理解不从业务流程入手,是与用户没有共同语言的。 二、 SOA的“官方”解释 SOA的文章与资料很多,技术实现与最佳实践为多,这里只是说一下SOA的参考模型,展示SOA的架构。对于SOA的实现技术,会随着IT技术的发展更新,Web2.0是目前的一个最佳实践,SOA的目标的提高企业业务的灵活性,围绕这个目标,技术实现只是手段而已。 Sandy Carter给SOA的定义是:SOA(面向服务构架)是一种业务驱动的IT架构方式,支持对业务进行整合,使其成为一种相互联系、可重用的业务任务或服务。 SOA组成的五大要点: 1、 重用:创建服务与重用服务是SOA的工作。重用不仅可以节省费用,而且可以减少重复,建立企业间可以共享的服务,从而增加企业的灵活性,而且可以通过服务的实现、包装,利用已经证实是有效的核心应用和功能 2、 连通性:业务系统的连通,但松耦合方式,是实现企业业务灵活性的基础,获得连通性也是整合企业人员、信息、流程的前提 3、 流程:流程是企业对业务管理、监控的方式,SOA是实现对业务流程的支撑 4、 信息:信息是企业决策的基础,是企业的管理神经系统,掌握全面的信息、排除错误的信息、获得及时的信息是IT系统的基础功能 5、 协作:协作就是人员。创新不仅靠优秀的员工,更需要优秀的团队,在经济融合发展的今天,不仅依靠自己的团队,还要学会利用外部的力量,要协作就要互通与共享 企业服务总线ESB位于SOA架构的中心,是五大要素的“交通线”,更为重要的是它提供了新增“服务”的落脚点。有人说ESB是SOA的最大亮点,其实计算机技术里“总线”技术由来已久,总线的好处是方便功能的扩展,但总线本身的能力也限制了总线上应用的扩张,所以总线本身也需要不断地升级。ESB不仅是信息、命令的传输通道,而且是各服务交互的接口标准。 三、 SOA不是万能钥匙 SOA是业务驱动,说白了是管理驱动,虽然企业的IT化整合是IT发展的趋势,但每个企业的IT化发展都有自己的文化支撑,IT基础设施的建设、应用的开发是为了企业的业务服务的,脱离了这个宗旨,企业即使图一时的“新鲜”,也不可能长期陪着你玩。 推动企业SOA建设,是从企业的管理层面出发,管理层有“改变”的概念,才可以进行全面的分析与设计,而不是单靠IT技术部门就可以启动的,这一点是国内企业CIO面临的一个大难点。 这么说是基于两点:一是我们国内的IT发展历史还不长,IT部门的管理者在企业内的话语权还不够大,大部分CIO还没有进入企业的高级管理层,IT部门是企业业务的附加服务部门,还不能算是支撑部门;二是国内很多企业的IT建设是跨越式的,老外很羡慕我们新建设万兆网络、优良的处理中心,而很多老外还在使用10M的网络、COBOL设计的应用…我们能直接跨越落后技术是好事,但在IT管理能力与理解上就捉襟见肘,管理理念是需要实际体验的,没有实际的“磨合”,直接开始多业务的整合,用户找不到“感觉”。 SOA本身不是一套严格的技术理论,所谓“最佳实践”也是大家在理解过程中的“实地体验”,是从实际的管理工作与业务经营中总结出来的。而管理一定有其文化作为支撑,中国文化上的差异,可以很快接受一个新技术产品的引进,但对一个管理模式的引进却不尽然。二战后美国的管理体制直接输出到日本,但麦克阿瑟没有把日本变成美国第二,而在似与非似之间,出现了一个崭新的管理模式,日本经济的腾飞不能说不得益于这种模式;安全是“三分技术+七分管理”,这个道理在计算机安全界从一开始就在宣传,中国引进了防火墙、入侵检测、身份认证等多种产品技术、但BS7799、ITIL等安全管理与维护的“最佳实践”,却迟迟停留在培训上,国内真正采用的也是少之又少。 中国有句古话“取其精华、去其糟粕”,管理的思路源自于文化的底蕴,所以SOA这个从管理推动技术的“产品”,要落户中国企业,注定要在“融合”中国的管理意识之后,才会有大的作为。SOA不是万能钥匙,要开中国企业这把锁,需要做一定的改造,总结起来,需要解决下面几方面的问题: 1、 管理层重视:SOA是从上而下的业务管理整合,而国内大多企业对SOA的理解目前还处于IT管理层面,企业的管理者不理解就无法深入。让企业的高层领导重视IT,需要把IT部门从企业的服务部门转变为业务支撑部门。 2、 标准不是抹杀异化服务:重用服务是为了提高企业开发与管理的效率,越标准的“元件”,越可以降低成本;企业的生命不仅是降低相同服务的成本,还要能不断提供异化的业务,有区别才有市场上的竞争力。若在SOA推行中,过多地强调标准,忽略了创新,而降低了对新业务的支撑能力,同化了业务服务流程的开发,就成为SOA的大败笔。 3、 给国内开发商留下生存空间:SOA要求建立ESB,逐渐形成企业服务的标准化,这同时也对业务的开发商提出了要求,标准往往是大厂家主导的,其获得、授权、专利等后期技术壁垒是难预料的,毕竟TCP/IP那样完全公开的标准不容易,中国的业务开发商还都很弱小,若一味注重“国际”标准,势必提高市场进入的门槛,客观上也同化了产品的风格,没有了业务模式的“百花争鸣”,企业也丧失了市场竞争的优势。 4、 选择适合企业的:SOA是架构,需要实现技术支撑。中小企业的业务较少,其整合与升级不存在太大的难度,即使是大企业,在选择SOA支撑技术时,并非都要赶时髦,去选择最好的、最先进的,当然也往往是最昂贵的,完全可以根据用户的实际需求选择“最佳”的方式。经济发展的原则是:“永远选择最佳而不一定是最好的。” SOA是IT管理与发展的趋势,是业务的IT支撑构架,也代表了一种新技术方向,但如何为中国企业所用,需要中、西方的管理思路进一步融合,或者产生适合中国管理模式的SOA架构;SOA不是万能钥匙,解决管理问题离不开管理办法。 本文转自 zhaisj 51CTO博客,原文链接:http://blog.51cto.com/zhaisj/78915,如需转载请自行联系原作者

优秀的个人博客,低调大师

技术热点:Android hook技术浅析

前言 xposed框架 xposed,主页:http://repo.xposed.info/module/de.robv.android.xposed.installer 是个开源的框架,在github上有源码的,直接下载apk后安装激活就可以使用,很多地方有这方面的教程,针对不同的手机架构,有大牛做了针对性的修改。可以在论坛中进行搜索 通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。 Xposed在开机的时候完成对所有的Hook Function的劫持,在原Function执行的前后加上自定义代码。 很多人将这个框架用在对android的私有化定制上面,其实在android安全测试方面这个框架提供了很大的便利,xposed主要是对方法的hook,在以往的重打包技术中,需要对smali代码的进行修改,修改起来比较麻烦。 利用xposed框架可以很容易的获取到android应用中的信息,比如加密私钥、salt值等等,不需要饭编译获取密钥转换算法、不需要了解密钥保存机制,直接hook函数,获取输入输出就可以。 原理 在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的。Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例。这也是Xposed选择替换app_process的原因。 Zygote进程在启动的过程中,除了会创建一个Dalvik虚拟机实例之外,还会将Java运行时库加载到进程中来,以及注册一些Android核心类的JNI方法来前面创建的Dalvik虚拟机实例中去。注意,一个应用程序进程被Zygote进程孵化出来的时候,不仅会获得Zygote进程中的Dalvik虚拟机实例拷贝,还会与Zygote一起共享Java运行时库。这也就是可以将XposedBridge这个jar包加载到每一个Android应用程序中的原因。XposedBridge有一个私有的Native(JNI)方法hookMethodNative,这个方法也在app_process中使用。这个函数提供一个方法对象利用Java的Reflection机制来对内置方法覆写。有能力的可以针对xposed的源码进行分析,不得不说,作者对于android的机制和java的了解已经相当深入了。 简单实例 很简单的一个android登入代码: 很简单的就是判断下用户输入的用户名和密码是正确,这里做个简单的演示,将用户输入的用户名和密码信息hook出来不管正确与否 简单说下xposed模块的开发,首先需要的是导入api,具体的可以参考:https://github.com/rovo89/XposedBridge/wiki/Using-the-Xposed-Framework-API 在manifest中定义 声明这个是xposed模块,名称为hook test 并且使用api版本号是82 下面创建运行时候的hook代码: 看代码中的注释,主要是三个方法的调用,handleLoadPackage,主要是获取到android包的相关信息,这里由于只是对logintest进行hook,做下简单的判断。 findAndHookMethod 是主要的hook入口,里面几个参数分别为包名,classloader,hook的函数名,参数类型(这个比较容易出错,比如list类型写为List.class),回调函数 回调函数中比较重要的:beforeHookedMethod和afterHookedMethod,一个是在函数运行前劫持掉,一个是hook后放行,实例中对用户输入的字段进行劫持打印,后面将参数之改为正确登入用户名和密码,这样在app中输入任何字符都能登入成功 frida Hook框架 Frida是一款基于python + javascript 的hook框架,通杀android\ios\linux\win\osx等各平台,由于是基于脚本的交互,因此相比xposed和substrace cydia更加便捷,本文重点介绍Frida在android下面的使用。 Frida的官网为:http://www.frida.re/ 安装 安装Frida非常简单,在pc端直接执行 pipinstallfrida 即可 在Android设备需要导入frida的服务端,需要root你的手机 运行 设备上运行frida-server: 电脑上运行adb forward tcp转发: 27042端口用于与frida-server通信,之后的每个端口对应每个注入的进程。 运行如下命令验证是否成功安装: $frida-ps-R 正常情况应该输出进程列表如下: Hook模块的编写 hook的主要模块是js编写的,利用javascript的api与server进行通信 下面结合一个真实例子进行简单的介绍,首先是测试代码: 反编译获取app中的核心函数 对于上面的js代码,其实就是调用app中的某个函数,比如sign值生成函数,加密解密函数,不需要自己单独的去分析算法流程,分析key值在哪,直接调用app的相应函数,让app帮我们完成这些工作。 这里我们分析的app是友宝,这是一款饮料售货机,当时抓包看到提货的时候是只有个订单id的,猜想是不是遍历订单的id,支付成功但是没有取货的订单会不会响应请求,自己掉货出来。 下面对友宝的订单进行分析过程 1.抓取支付订单成功链接 分析: sign是校验值,主要是防止订单伪造的,orderid是产生的支付订单id,这个主要是防止伪造用 2.反编译友宝app 找到morder/shipping所在的包为:com/ub/main/d/e.class 其中localStringBuffer存储的就是url中的参数信息,该请求查找到的代码在a() 生成签名的函数在com/ub/main/d/e.class中的b函数 最后加上sign值,发送请求 3.可以反编译出他的sign计算方法,也可以直接调用b函数来产生sign值,后来发现app会自动取时间戳,我们就不需要给他array型的参数 直接调用a函数,把orderId给他,让他直接return一个值出来就好了,就有了上面的js代码 4. 自动化的批量处理 看代码 构造了一个类,后面直接fuzz uid就可以了,提取里面的sign值拼接到post数据中去。 可以产生的post请求和抓到的数据包的请求是完全一样的,但是并没有测试成功,分析原因有可能是订单id和用户的id有所绑定。 不过学习到了怎样通过frida对app进行分析。 复杂参数的hook 如果遇到函数的参数类型是数组、map、ArrayList类型的,首先目标MyClass类的fun1函数,声明如下: 解决方法: 用Xposed自身提供的XposedHelpers的findClass方法加载每一个类,然后再将得到的类传递给hook函数作参数! 具体实现可参考链接,大牛讲的很清楚。 参考链接 https://xianzhi.aliyun.com/forum/read/611.html http://www.freebuf.com/articles/terminal/56453.html http://bbs.pediy.com/showthread.php?t=202147&page=2 来源:51CTO

优秀的个人博客,低调大师

【阿里云总监课第四期】时髦的云原生应用怎么写?

概述应用已经跨入了云原生的时代。要写一个时髦的云原生应用,首先当然要了解什么是云原生。CNCF,也就是云原生计算基金会,作为目前人气最旺的云计算行业协会,在今年6月份给出了云原生的定义,阿里云牵头做了一个官方的翻译: “云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。” 这个定义描绘了云原生应用的几大特点:可弹性扩展、容错性好、易于管理和观察、频繁变更,同时也列举了支撑这些特点的典型技术手段。下面我们就来聊聊如何用这些技术手段来编写一个云原生应用。云原生应用之“形”首先探讨下如何

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册