主编 杨赛 封面制作 黄丹 审阅 《趋势》评审团 出版方 51CTO系统频道 (os.51cto.com) 出版日期 每个月的第2个星期五 (理想状态) 邮件订阅 http://os.51cto.com/ art/201011/233915.htm RSS订阅(最早发布) http://www.51cto.com/ php/rss.php?typeid=777 iPad订阅 《读览天下》客户端 联系电话 010-68476606-8035 投稿邮箱
[email protected] 主编的话 温暖三月,春回大地,绿草莺莺,整理好思 绪,收拾好心情, 继续着主编赋予我的使命。 首先,要?#28304;?#23478;说声抱歉,?#28304;?#20027;编杨赛离 职后,《 Linux运维趋势 》连续两期跳票了,对 ?#40644;穡?#35753;亲们久等了! 其次,在这里介绍一下我自己,我是黄 丹,51CTO系统频道的编辑,很高兴认识大 家。承蒙各位的支持与厚爱,《 Linux运维趋 势 》还会继续做下去。第一次?#37038;?#36825;个好评如 潮的杂志,我的压力非常大,不知道会不会找 到适合大家的菜,但是,我会努力。希望大家 不吝赐教! 再次,上一期的《 Linux运维趋势 ?#20998;校?#26472;赛 提到的三个通告不知道大家有没有注意?细心 的朋友会发现,本期的主题是承接上篇, 部 署、监控、?#25910;?#21709;应三部曲中的第 二 部 :有关 监控。 欢迎关注、反馈! ■ 《Linux运维趋势》是由51CTO系统频道策划、针对 Linux/Unix系统运维人员制作的一份开放的电子杂志, 内容从基础的技巧心得、实际操作案例到中、高端的运 维技术趋势与理念等均有覆盖。我们的所有内容均收集 整理自国内外互联网,每篇文章都会?#32454;?#26631;注出处与作 者,同时编辑也会尽力联系每?#40644;?#25991;章的原作者进行确 认。如果您认为本杂志的内容侵犯到了您的版权,可发 信至
[email protected]进行?#31471;摺?目录 技巧 then echo “CRITICAL status - file $filename doesn’t exist” exit 2 #返回临界状态,那是由于你的最糟糕 情况?#27465;?#25991;件根本就不存在。 如果前一个条件通过(文件存在),那么接 下来检查该文件是否可读: elif [ ! -r $filename ]; then echo “WARNING status - file $filename is not readable.” exit 1 #返回警告状态,那是由于该状态胜于 根本不存在文件; 如果前一个条件通过,检查它是不是一个普 通文件,而不是目录或设备文件。 08 观察思考 elif [ ! -f $filename ]; then echo “UNKNOWN status - file $filename is not a file.” exit 3 #返回未知状态; 如果所有上述检查均通过,那么表明它正 常: else echo “OK status - file is OK” exit 0 #Return OK status fi 注释(Bash中以#开始)解释了代码;如果你 需要更清晰的解释,或者想进一步?#31169;釨ash的文 件测试操作符,请查阅说明文档(http://tldp. org/LDP/abs/html/fto.html)。 尽管这个?#36947;?#24456;简单,但它清楚地表明了如 ?#38382;?#29616;Nagios插件逻辑。始终首先要寻找最糟糕 的情况。只有当所有检查均通过,脚本退出时才 会显示状态正常。确保在退出之前指定明确消 息。3.3.1 如何屏蔽用户互动:一方面要获得几乎 真实的产?#29359;?#36733;,另一方面希望不要把代码搞乱 导致真正发布的时候需要很大改动 。 使用插件 默认情况下,所有的Nagios插件均存放在用 $USER1宏命令定义的目录中,具体在文件/etc/ nagios/private/resource.cfg中定义。lib/nagios/ plugins。你对插件应该做的头一件事就是把它拷 贝到用$USER1宏命令定义的目录中。 插件通 常归root所有,其权限设置为755。Nagios在属于 nagios群组的用户nagios下工作,所以脚本需要读 取和执行其他群组的权限。一旦你把脚本放在/ usr/lib/nagios/plugins目录中,就要在文件/etc/ nagios/objects/commands.cfg里面把它定义成 Nagios命令。假设你将脚本命名为check_file.sh, 添加下列命令定义: 我们的自定义文件检查命令: define command { command_name check_file command_line $USER1$/check_file.sh $ARG1$ } 这应当相当清楚。变量$ARG1$代表传递给 Nagios命令的第一个实参;在本例中,这第一个 实参应该是文件名称。如果你想传递更多的实 参,可以将$ARG2$用作第二个实参,将$ARG3$ 用作第三个实参,?#28304;?#31867;推。想开始使用你的插 件,应在你的nagios配置文件(比如service.cfg) 中将其定义成一项服务: define service { use local-service host_name localhost service_description Check the file /etc/ passwd check_command check_file!/etc/passwd } null尽管这个?#36947;?#24456;简单,但它清楚地表明 了如?#38382;?#29616;Nagios插件逻辑。始终首先要寻 找最糟糕的情况。只有当所有检查均通过, 脚本退出时才会显示状态正常。 null 投稿信箱:
[email protected] 09 Linux运维趋势 2013年3月号 总第25期 上述服务是为?#38236;?#20027;机(host_name localhost)定义的,为?#38236;?#26381;务使用模板(使用 local-service),详见文明文档的对象继承部分 (http://nagios.sourceforge.net/docs/3_0/ objectinheritance.html),即可?#31169;?#27169;板及模板的 工作原理。最重要的部分是check_command指 令。它指定了命令check_file,然后是作为分隔符 的感叹号,后面是作为实参的文件名称。如果你 的插件有不止一个实参,可以用另外的感叹号来 分隔。 远程运行Nagios插件 示例check_file plugin存在的一个明显缺点是它 ?#38236;?#36816;行,这意味着无法检查远程服务器?#31995;?#25991; 件。你有许多办法可以解决这个问题。 第一个办法就是使用ssh命令,远程执行代 码。这需要你把脚?#31350;?#36125;到远程服务器上,并利 用ssh可以运行远程命令的功能。这还需要你为 Nagios服务器及其nagios用户配置无密码密钥登 录。 这第一个办法的优点是,你拥有了针对被监 控的服务器,?#38236;?#36816;行命令所具有的功能和灵活 性。缺点就是,Nagios服务器必须能够借助密 钥,无密码登录到远程服务器。这是个安全问 题,不推荐敏感环境使用。 第二个比较安全的办法是,使用SNMP扩展功 能。这要求你?#35328;?#36828;程服务器上安装?#22242;?#32622;好了 net-snmp程序包(面向CentOS)。 想使用SNMP扩展命令,先将check_file.sh脚本 拷贝到远程服务器上。比如说,你可以把该脚本 放在目录/usr/bin/中。 接下来,将配置指令extend check_passwd_file / usr/bin/check_file.sh /etc/passwd添加到远程服务 器?#31995;?#25991;件/etc/snmp/snmpd.conf。语法是extend some_alias command argument。 下面是这种方法存在的主要不便之处:你得 为每一次独立的检查定义一个别名,在本例中这 意味着为我们想要测试的每一个独立文件定义一 个别名,因为无法通过SNMP来传送实参。 文件/etc/snmp/snmpd.conf只要出现变化,都 需要你用service snmpd reload命令(面向CentOS) ,重新装入snmpd服务。之后,你可以用snmpget 命令来测试新的检查,?#36879;?#22312;snmpget -v2c -c public -OvQ 10.0.0.2 NET-SNMP-EXTEND- MIB::nsExtendOutputFull.\”check_passwd_file\” 中一样。这个示例snmpget命令通过SNMP版本 2c,以”public”共用字符串查询服务器10.0.0.2 。自定义SNMP扩展命令的对象标识符(OID) 是NET-SNMP-EXTEND- MIB::nsExtendOutputFull.\”some_alias\”。 遗憾的是,上面这个命令无法直接用Nagios来 实现。如果snmpget正常工作,可以连接至远程 主机,它总是会返回状态0,这表明每方面都正 常,因为程序snmpget本身退出时没有错误。因 而,即使某个文件不存在,检查脚本也会返回状 态0,不过它会输出文件不存在的正确消息。 你可以解决这个问题,只要充分利用针对 Nagios的名为check_snmp_extend.sh的特殊插件。 这个插件取得状态消息的第一个单词后,根据该 单词来设定状态。由于预计使用这个插件,我们 在示例脚本check_file.sh中设定了消息,?#21592;?#20174; OK(正常)、CRITICAL(临界) 、WARNING(警告)和UNKNOWN(未知) 开始。 想开始使用check_snmp_extend.sh插件,先下 载该插件(http://www.logix.cz/michal/devel/ nagios/check_snmp_extend.sh),然后把它放到 Nagios服务器?#31995;?#30446;录/usr/lib/nagios/ plugins($USER1宏命令)。 ■ null下面是这种方法存在的主要不便之处: 你得为每一次独立的检查定义一个别名,在 本例中这意味着为我们想要测试的每一个独 立文件定义一个别名,因为无法通过SNMP 来传送实参。 null 10 观察思考 原文: http://www.openlogic.com/wazi/bid/256126/how-to-extend-nagios-for-custom-monitoring 译文: http://os.51cto.com/art/201301/376725.htm( 本文为 译文 节选 ) Nagios监控实战:?#38405;?#35780;测分析 文/ ERON 编译/核子可乐 ?#28304;?#21152;入37Signals公司以来,我一直在努力改 善企业的监控基础设施。我们的主要监控方案采 用的是Nagios,它与老款沃尔沃倒有几分神 似——也许外观不?#40644;?#20142;、也许速度不够惊人, 但它?#23376;?#20351;用、而且绝不会让人束手无策。 下面聊几句背景信息。2009年1月时,我们拥 有350项Nagios服务。而到了2010年9月,我们所 使用的服务数量上升至797项,目前则已经达到 7566项之巨。在数字?#35813;?#22686;长的同时,我们还大 幅?#26723;?#20102;?#25910;?#35686;报的出?#21046;?#29575;,现在几乎很少会 有管理员会被大半夜拉起来处理紧急情况。当 然,整个过程也出现过一些波折,但这一切都是 为了实现更好的监控效果。在本文中,我希望与 大家分享一些在使用Nagios过程中总结出的实用 提示,进而帮助各位在扩展?#26696;?#36827;监控系统时获 得一些引导。 与37signals公司中的大多数方案一样,我们的 Nagios环境也由Chef?#25945;?#29282;牢掌控。当新的主机 配置完成后,它们会被自动添加到监控系统当 中。一年多之前,我们只能以自动化方式监控主 机?#31995;?#23569;数事务:磁盘使用率、负载以及内存 等。 扩大监控范围 为了扭转局面,我?#20146;?#30340;第一件事就是安装 Check_MK。Check_MK是一款Nagios插件,能够 自动清查主机、收集?#38405;?#25968;据,并且提供了一套 更友?#39057;腢I。在Check_MK的帮助下,我们现在 能够以自动化方式在每台主机上监控20项指标; 由Postfix队列发往开放TCP连接的所有信息都能 受到监控。Check_MK还提供了一套非常实用的 后端,即mk_livestatus,?#24066;?#25105;们向Nagios查询实 时主机、服务信息以及即将发送的处理指令。举 例来说,我们利用Livestatus来训练Campfire机器 ?#31169;邮?#35686;报并设定停机时间。 通过Tally,现在我们几乎可以通过Campfire完 成全部Nagios交互工作。 我们还逐步在Nagios中添加了大量针对特定应 用程序的监控方案——我们利用statsd追踪响应 时间、错误代码及其它各种有助于衡量应用程序 ?#38405;?#30340;指标,此外MySQL、Redis以及Memcached 统计数字也被纳入?#31169;础?#35201;想在客户发现问题 前将其消灭在萌?#25335;?#27573;,这些监控手?#38382;?#24517;不可 少的。额外检查项目的加入使我们对系统运行状 态有了更为直观的?#31169;猓?#20294;凡事有利就有弊:由 于监控方案的大幅加强,我们安装并运行Nagios 的主机在?#38405;?#26041;面承受着很大压力。 存在的问题 对于?#34892;?#22411;使用环境而言,Nagios的开箱即用 效果非常突出;但我们很快发现了一些局限性, 而这给我们带来不小的麻?#22330;?#39318;先,由于Nagios 常常拿不出足够的资源执行检查工作,因此在设 定检查与执行检查之间往往存在45秒的延迟。为 ?#31169;档?#36825;种延迟,我们对安装配置做出了大量调 整,其中一项效果明显,直接将平均延迟时间压 缩至0.3秒?#38405;凇?#36951;憾的是由此带来的主机负载也 同样明显——Nagios在给定时段中的检查活动数 量受?#25509;?#21709;,延迟检查出于资源节约考虑而被自 动忽略掉了。在放开这一?#38405;?#29942;颈后,我们的负 载强度由5%上升到30%左右(我们的主监控服务 器采用两块至强E5530处理器)。 最后,我决定在负载失控之前进行检查数量 缩减。经过实践,我们发现缩减使用频率最高的 check_mk代理检查对于负载的影响微乎其微,但 将其它?#36214;?#27963;动检查的执行频繁?#26723;鴕话?#21017;大大 减轻了主机负载——由30%下降至10%以下。由 ?#23435;?#20204;可以看出,主动服务才是节约?#38405;?#30340;最大 敌人,必须不惜一切代价予以消除。 投稿信箱:
[email protected] 11 Linux运维趋势 2013年3月号 总第25期 Nagios服务上手指南 ?主动服务是指那些由可执行shell脚本所定 义、能够由Nagios直接执行的检查项目。这项服 务需要进行时间间隔设定,进入调度程序后会根 据进程启用情况自动执行。Nagios必须进行shell 释放、执行检查脚本、等待结果、分析结果、将 结果添加到命令缓冲区然后处理结果等一系列工 作,且在整个检查过程中该线程会保持运行并不 能用于任何其它工作。 ??#27426;?#26381;务是指那些由Nagios(例如check_mk 代理检查)或其它机制所触发、但不会被Nagios 服务器主动启用的检查项目。在存在?#27426;?#26816;查结 果时,外部进程会直接将结果添加至命令缓冲区 中,并由Nagios将其作为主动检查结果进行处 理。Nagios并不会?#28304;?#31867;检查进行调度或者利用 资源加以执行,因此这些检查所占用的资源也少 得多。 我们的大多数主动服务都会向内部仪表板应 用发送HTTP请求,旨在获取前文提到过的应用 及数据库指标。由于Nagios主动检查指标的方案 会占用过多硬件资源,我们决定定期通过网页接 口推送来自Statsd的更新信息(这一机制由Slanger 库实现)。要做到这一点,我们在Chef上创建一 个配置文件,其中包含我们所需要的指标、相关 阈值以及简洁的后台订阅描述。这样检查结果数 据就会定期被发送至Livestatus处,并被添加到命 令缓冲区中进行处理。我们还将这些来自仪表板 的推?#22270;?#26597;与其它脚本检查加以整合。 结果汇总 与我们的预期一致,将服务转为?#27426;?#23646;?#28304;?大?#26723;?#20102;Nagios的CPU使用率,具体情况如下图 所示: 总而言之,我们将主动服务的数量由1900降 低到745。幸存下来的检查项目大多必须采取主 动状态——例如ping检查、Check_MK代理以及 应用程序HTTP检查等。因为只有这样我们才能 在项目出现问题时及时得到警告。 从?#25345;?#31243;度来说,这只是?#25351;?#36733;转移过 程——?#25215;?#36127;载被转嫁到其它主机当中,并通过 检查脚本或者后台推?#32479;?#24207;将结果传递给 Nagios。不过这种收益还是相当显著且顺理成章 的(将负载分摊到服务器闲置资源中),我们还 通过对检查脚本的重新编写改装最系统全局执行 效率、消除了成千上万HTTP请求所带来的资源 占用。更重要的是,我们在?#25351;?#21407;有检查间隔的 同时还添加了一些新的监控项目,并且始终将负 载控制在3%、延迟控制在0.5秒以下。希望我在 打理监控基础设施方面的经验能帮助大家?#19994;?#23454; 际问题的解决办法。 ■ null我们的大多数主动服务都会向内部仪表板应用发 送HTTP请求,旨在获取前文提到过的应用及数据库 指标。由于Nagios主动检查指标的方案会占用过多硬 件资源,我们决定定期通过网页接口推送来自Statsd 的更新信息(这一机制由Slanger库实现)。 null 12 观察思考 原文: http://37signals.com/svn/posts/3178-nagios-monitoring-performance 译文: http://os.51cto.com/art/201302/380623.htm( 本文为 译文 节选 ) 各大主流Linux?#25945;?MySQL部署指南 文/Paul Venezia 编译/核子可乐 作为开源计算领域的老牌尖兵,MySQL一直 充当着大量应用程序的后端数据库?#24039;?#20174;普通 的网络监控框架到人气鼎盛的Facebook皆在此 列。第一次尝试设置MySQL数据库对于门外汉来 说似乎有些强人所难,但只要掌?#21344;赶?#22522;本概念 并加以引导,大家将能够很快建立起属于自己的 全新MySQL?#36947;?#24182;投付运行,最终实现应用程序 部署。 出于上手指?#31995;?#22522;本定义,我们先假设各位 读者对于Linux系统?#25945;ㄉ系腗ySQL基本或者完 全没有知识储备,然后把重点集中在如何对 MySQL进行安装及配置,并进一步尝试将应用程 序与数据库对接?#21592;?#35777;其运行。像数据库编程及 SQL语言等更深层次的MySQL话题则不在本文的 讨论范围之内。 安装MySQL 请注意,除了MySQL主代码我们可能还需要 一些额外的软件包,这样才能确保大家的应用程 序正常运作。举例来说,如果大家希望让MySQL 与一款基于PHP的应用程序协作,我们就需要安 装PHP MySQL软件包?#21592;?#35777;PHP能够与MySQL服 务器顺利对话。 不过在开始之前,我们还需要检查操作系统 在安装过程中是否已经同时完成了MySQL的安装 工作。在Fedora与CentOS系统中我们需要以root 身份运行下列命令: # rpm -qa | grep mysql 在Ubuntu中我们则运行以下命令: $ sudo dpkg -l | grep mysql 如果输出的结果中包含mysql-server软件包, 则MySQL已经安装完成。大?#19968;?#38656;要确认php- mysql?#26085;?#23545;应用程序的MySQL扩展包也被正确 安装到位。 # yum install mysql-server php-mysql 经过这一步,我们就完成了MySQL服务器、 客户端、必要软件包与库以及PHP MySQL扩展等 项目的安装工作。 在Ubuntu方面,我们需要运行以下命令: $ sudo apt-get install mysql-server php5-mysql 经过这一步,我们就完成了MySQL服务器与 PHP MySQL扩展包的安装工作。另外,安装程序 会提示我们为MySQL root用户设定密码并在完成 安装前启动服务器。 在CentOS与Fedora方面,我们需要额外启动 服务器并设定MySQL root用户密码: $ su - # service mysqld start # mysqladmin password 大家只要把以上范例中的部分 替换为想要设定的密码即可。 现在,我们就可以开始创建MySQL的功能性 服务器?#36947;?#20102;。大家能够通过mysql客户端登入 服务器以进行测试: $ mysql -u root -p 现在系统会提示我们输入设定好的MySQL 投稿信箱:
[email protected] 13 观察 Linux运维趋势 2013年3月号 总第25期 root用户密码,屏幕上显示的提示符为mysql。 这时我们开始着手登录到刚刚创建的?#36947;?#20013;并准 备对其进行配置。大家可以在mysql提示符后输 入quit命令登出MySQL服务器。 在进行下一步之前,我们需要保证MySQL正 在对正?#26041;?#21475;中的连接进行侦听。在默认情况 下,Ubuntu会将MySQL设定为仅侦听?#38236;?#20027;机地 址。如果大家正在安装的应用程序与MySQL运行 在同一台服务器上,这一设定?#20849;?#20250;引发什么问 题,因为二者能够越过?#38236;?#20027;机接口进行直接通 信。?#27426;?#19968;旦大家需要将这台MySQL服务器与其 它服务器相连,我们就需要取消该限制。请注 意,这个问题只发生在Ubuntu系统环?#25345;?下,Fedora与CentOS在安装过程中并不会限定本 地主机地址。 为了实现Ubuntu系统环境下MySQL与其它系 统的连通,我们需要对MySQL配置文件进行编 辑。该文件位置为/etc/mysql/my.cnf。我们可以 通过nano编辑器进行内容变更。 $ sudo nano /etc/mysql/my.cnf 文件被打开之后,大家向下滚动屏幕直到寻 获bind-address内容,然后在命令行开头插入#注 释符。这将会令MySQL在启动后忽略该配置行内 容,进而?#24066;?#26381;务器对来?#36816;?#26377;IP地址及接口的 连接进行侦听。反之对应,其它主机也会同时获 得接入许可。 接Ctrl-O快捷键保存文件修改,再按Ctrl-X退 出编辑器。现在我们需要重新启动MySQL服务 器: $ sudo service mysql restart 现在我们已经搞定一切准备工作,可以正式 对MySQL服务器进行配置了。 MySQL基础配置 对于大多数应用程序而言,并不需要对 MySQL的配置做出太多变更。我们可以根据需要 对my.cnf文件中的参数进行调整,但具体调整方 式取决于应用程序对于MySQL的实际要求。如果 有必要做出变更,应用程序的安装手册中应该会 列出详细条目。?#27426;?#36824;有不少应用程序需要我们 手动创建一?#36164;?#25454;库,并为数据库手动分配用户 名与密码,这样才能让应用顺利完成安装。在 Ubuntu、Fedora或者CentOS系统中,我们都可以 通过以下命令实现上述要求: $ mysql -u root -p 接下来输入root密码并登录服务器?#36947;?#19979;面 我们就开始创建数据库: mysql CREATE DATABASE ‘mydatabase’; 请注意,mydatabase前后使用的是重点符而非 单引号。这条命令将创建一套名为MyDatabase的 数据库。然后我们需要进行权限分配。我们可以 为某一位用户分配受限权限,但大多数应用程序 都要求拥有全部权限,因?#23435;?#20204;可以再额外添加 一个用户名并赋予其全部权限。 mysql GRANT ALL PRIVILEGES on mydatabase.* TO
[email protected] IDENTIFIED BY ‘mypassword’; 请注意,上述内容中的mypassword前后为单 引号。 这将赋予名为myuser的用户全部权限,而密码 则为mypassword。不过如果二者是在?#38236;?#31995;统中 生成的,那么数据库将只能识别由这套用户名及 密码创建的连接。如果大家需要让另一台服务器 与MySQL?#36947;?#36827;行通信,我们还得额外指定IP地 址或者主机名称。 null对于大多数应用程序而言,并不需要对 MySQL的配置做出太多变更。我们可以根据需要 对my.cnf文件中的参数进行调整,但具体调整方 式取决于应用程序对于MySQL的实际要求。 null 14 观察思考 mysql GRANT ALL PRIVILEGES on mydatabase.* TO
[email protected] IDENTIFIED BY ‘mypassword’; 经过这一步,我们的数据库将?#24066;鞩P地址为 192.168.100.5的系统进行接入,用户名为myuser、 密码则为mypassword。 现在大家可以利用MySQL客户端尝试新用户 能否正常接入。如果我们的测试在运行着MySQL 的服务器上进行,那么需要输入以下命令: $ mysql -u myuser -p 如果我们要在另一套系统中进行测试,则需 要指定要连接的服务器对象: $ mysql -u myuser -h -p 这里大家要在-h之后输入MySQL服务器的实 际IP地址或主机名称。如果一?#20852;?#21033;,那么我们 应该能够正确登入?#36947;?#25509;下来要处理的就是应 用程序的安装流程了。 大多数LAMP应用都具备指定的MySQL安装工 具及引导说明。有些应用还拥有一款小型脚本, 大家需要在命令行中加以运行来提前创建数据库 架构以启动应用程序,不过也有一些采用基于 Web的安装工具。我们需要认真阅读应用程序的 安装说明,以?#33539;?#38656;要对MySQL进行哪些预先设 置以完成应用安装。 利用phpMyAdmin管理MySQL 完成应用程序的安装及测试工作之后,大家 需要保留数据库?#31995;?#26631;签,?#37096;?#33021;打算对数据库 进行高级管理。在大多数情况下,使用基于Web 的工具能够简化数据库管理流程,帮助那些对于 MySQL管理工作不太熟悉的用户顺利搞定一切。 phpMyAdmin就是其中之一,它是一款基于 PHP的MySQL管理工具。phpMyAdmin提供了一 ?#20934;?#21333;易用的Web GUI,能够执行几乎全部 MySQL管理任务。在它的辅助下我们的生活将变 得更加轻松愉快。 要在Fedora及CentOS上进行安装,我们需要 以root身份运行以下命令: # yum install phpmyadmin 而在Ubuntu方面,我们需要运行以下命令: $ sudo apt-get install phpmyadmin Ubuntu会提示处于使用状态下的Web服务 器,这样它就可以自动对其进行配置。在大多数 情况下,大家使用的都是Apache,所以除?#27465;?#20301; ?#33539;?#33258;己要选择lighttpd或者其它Web服务器,否 则?#21152;?#25353;Apache进行设置。 另外,Ubuntu还会提示我们为phpMyAdmin进 行手动或者自动配置。除非大家习惯于进行手动 配置,否则还是选择安全稳妥的自动配置比较保 险——这一过程同样需要输入MySQL root密码。 在此之后,Ubuntu将完成全部配置工作,并重新 启动服务器。不过由于服务器的初始创建情况有 所不同,有时候我们还需要安装Apache PHP模 块,具体方式如下所示: $ sudo apt-get install libapache2-mod-php5 在Fedora与CentOS系统?#25945;?#19978;,我们需要做 出一些细小改动?#21592;?#22312;远程系统端访问 phpMyAdmin。这里要再?#38382;?#29992;nano对 phpMyAdmin配置文件加以编辑: # nano /etc/httpd/conf.d/phpmyadmin.conf 投稿信箱:
[email protected] “Ubuntu会提示处于使用状态下的Web服务器, 这样它就可以自动对其进行配置。在大多数情况 下,大家使用的都是Apache,所以除?#27465;?#20301;?#33539;?#33258; 己要选择lighttpd或者其它Web服务器,否则?#21152;?#25353; Apache进行设置。” 15 16 观察思考 打开文件后,我们要在内容最末加入一 行“Allow from 127.0.0.1?#20445;?#28982;后输入?#24066;?#35775;问的 IP地址或范围。举例来说,如果我们输 入“Allow from 192.168.1?#20445;?#23601;意味着?#24066;?192.168.1.0到192.168.1.24的所有子风进行连接。 大家可以多输入几行命令,将自己可能需要接入 的IP地址或子网全部涵盖进?#30784;?# service httpd restart 在Fedora与CentOS系统?#25945;?#19978;,我们还需要 为phpMyAdmin配置添加Blowfish?#29992;?#26426;制。这项 工作?#37096;?#20197;通过nano实现。 # nano /usr/share/phpMyAdmin/config.inc.php (请注意:大家可以在phpMyAdmin目录下只 能?#19994;?#19968;个名为config.sample.inc.php的文件,如 果是这样,请将其复制并保存为config.inc.php。 ) ?#19994;?#22914;下内容: $cfg[‘blowfish_secret’] = ‘’; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ 在两个引号之间输入?#29992;?#20869;容,如下所示: $cfg[‘blowfish_secret’] = ‘SDJkjshdkfjhsdf9** /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ 这段?#29992;?#20869;容可以是任何字符,随意性最好 大一些。大家不再需要在其它任何地方重新输入 这段?#29992;?#20869;容,这仅仅属于内部需要。还是老办 法,Ctrl-O保存文件、Ctrl-X退出编辑器。 现在我们可以在服务器的Web浏览器上通过 以下URL输入phpMyAdmin了。 http:///phpmyadmin 接入phpMyAdmin 在接入phpMyAdmin之后,大家首先面对的是 一个登录对话框。在默认情况下,phpMyAdmin 会优先与?#38236;?#20027;机MySQL?#36947;?#30456;连(而非远程实 例),因?#23435;?#20204;需要输入的用户名与密码需要同 root用户或者拥有足够权限的其它用户设定相吻 合。 登录成功后,大家应该会在屏幕左侧看到数 据库列表,并在?#20063;?#30475;到配置及管理选项。点击 左侧的数据库名称可以浏览数据库内容、添加或 ?#22659;?#34920;及数据、导入及输出数据及数据库架构, 或者执行其它各类管理任务。请大家千万不要进 行任何自己不熟悉的操作,例如弃用(也就是删 除)数据库等。 要想正确地进行MySQL操作、调整、管理及 维护等工作还要涉及到诸多细节,但这篇指南已 经足以帮助初学者成功在操作系统上建立起属于 自己的功能性MySQL服务器了——连基于Web的 GUI管理机制都能搞定。大家也许还需要更多信 息来照管好自己的MySQL数据库服务器,这里我 留出MySQL参考手册的链接,希望能助各位读者 朋友一臂之力 。 ■ null要想正确地进行MySQL操作、调整、管理及维 护等工作还要涉及到诸多细节,但这篇指南已经足 以帮助初学者成功在操作系统上建立起属于自己的 功能性MySQL服务器了——连基于Web的GUI管理机 制都能搞定。 null Linux运维趋势 2013年3月号 总第25期观察思考 原文: http://www.infoworld.com/d/applications/how-get-started-mysql-206984 译文: http://os.51cto.com/art/201302/380350.htm( 本文为 译文 节选 ) DevOps的三板斧 文/ 老王 话说这些天电视上正在热?#22330;端?#21776;英雄》, 虽然我并没有看,但是对当年田连元老先生的评 书联播?#31471;?#21776;演义》却是?#19988;?#29369;新,特别是?#36866;?里面讲到的程咬金的三板斧?#21495;?#33948;瓣、?#20004;?#25351;甲 盖、胡椒面,每每听来总是让人忍俊不禁,不过 这些?#33756;?#26080;厘头的招数在实战中?#36176;?#24448;有出奇制 胜的效果,由此可以见简单实用永远都是硬道 理,在当前这个倡导DevOps的年代,我们这些 程序员自然也要学一些运维方面的本事才好安身 立命,下面结合一些真实案例说说我在日常工作 中常用的三板斧。 第?#35805;?#26023;:AWK Web服务器负载飙升,猜测是访问?#32771;?#22686;造 成的,如何验证?如果有监控,这自然不是什么 难事,但如果没有呢?亦或者监控不能显示即使 数据,此时如?#38382;?#22909;? 前提:日志已经通过logrotate按天切分,其内 容类似下面的样子: 123.123.123.123 - - [01/Jan/2013:00:01:01 +0800] “GET /path HTTP/1.1” 200 123 “-” “Mozilla” 利用AWK,我们可以很方便的计算一天中每 分钟的访问量是多少: shell awk -F: ‘{ count[$2”:”$3]++ } END { for (minute in count) print minute, count[minute] }’ /path/to/log | sort count.log 下面列出生成的count.log文件中的部分数据, 结果一目了然,不多说了: 18:55 14450 18:56 14926 18:57 15645 18:58 16678 18:59 19032 19:00 29134 19:01 34665 19:02 35558 19:03 35545 19:04 35829 19:05 35608 如果想要以秒为单位来统计,很是类?#39057;?#26041; 法,这里就不多说了。 第二板斧:Strace 程序运行很慢,我们如何知道到底慢在?#27169;?此时可以利用strace的「r」选项,不过需要注意 的是,strace的结果在标准错误里,使用前最好 重定向到标准输出。 下面让我们过滤某个PHP进程中操作时间大 于0.001秒的操作: shell strace -rp $(pidof -s php) 237m[\e[m\e[1;31m\u\ e[m\e[1;
[email protected]\e[m\e[1;31m\h\e[m \e[4m`pwd`\e[m\e[1;37m]\e[m\ e[1;36m\e[m\n\$’ 这样你就可以知道你当前的目录,登录的用 户名和主机信息了,示例提示符如下: #[
[email protected] /home/mysql] 你可以查看http://www.cyberciti.biz/tips/ howto-linux-unix-bash-shell-setup-prompt.html获得 具体的PS1设置颜色,设置各个提示内容的介 绍。 第二个提示符就是PROMPT_COMMAND。这 个是设置你连到具体的数据库以后标签页标题上 显示的内容,Windows用户可能会用 securtCRT,Mac用户可能会用iTerm2,开多个标 签页的话,如果每个标签页的标题上内容一样, 我们切来切去就有可能在错误的标签页上做操 作,设置了这个以后,这个问题概率就会小很 多。 比如我们的机器上设置为PROMPT_ COMMAND=’echo -ne “\033]0;${USER}@${H OSTNAME%%.*}”; echo -ne “\007″对应的标 签页如下图 : 第4条,备份并验证备份有效性。是人总会出 错,是机器总可能会有突然?#35272;?#30340;那一天。怎么 办-我们需要准备备份。 备份的学问很大。按照不同的纬度可以分 为:冷备?#33722;?#28909;备份;实时备?#33722;?#38750;实时备份; 物理备?#33722;?#36923;辑备份。 互联网企业为了提供7*24小时不间?#31995;?#26381; 务,数据库就需要有实时热备份。在主库出现问 题的情况下能够由备库提供服务。备库时候有 效,数据是否一致,主库出现问题的时候怎么切 ?#27426;?#38656;要运维人员认真考虑。 是不是有了这些就够了列?不行,应用程序 也是人写的,曾经出现过程序一不小心delete语 句没有带任何条件,导致一个表?#20852;?#26377;的数据都 被?#22659;?#30340;惨状。所?#38405;?#38500;了实时的备份,还需要 有非实时的备份,在你的数据出现逻辑错误之后 能够从备份数据中?#25351;?#20986;?#30784;?#29616;在很多人在研究 MySQL模仿oracle的flashback功能,利用b