存档

作者存档

利用脚本分析日志并利用snmp自定义OID,再通过cacti画图

2010年6月18日 Serwei Xu 3 条评论

         日志是很重要的东西,我们可以分析日志得出很多规律和结论。而cacti又是很强大的画图工具,可以通过它把数据以图表的方式表现出来。

 
        下面我要做的事情,就是用脚本对日志做实时分析,把结果输出到文本中,然后自定义OID,获取其中的值,而cacti通过自定义图表,用snmp取值,用rrdtool画图。
 
        关键在于对日志做实时分析,这个说出来其实很简单,使用一个tail -f 读日志文件,通过管道,调用自己写的脚本来分析。
 
        将24小时分成5分钟一段,每条日志的三个数据(结束时间,耗时,字节数)读出来,根据结束时间(注意日志里的时间是结束时间,不是开始时间)计算出开始时间,然后看这个时间落在哪几个5分钟的段里面,将它的字节大小乘以1.07, 按秒平均后放进去。这样就可以算出之前的流量。
 
        乘以1.07是国外通行的做法,因为网络开销比这个日志里的字节数要大(包头啊等等)。
 
        由于在实时计算的时候,可能某些请求还没有结束(一个请求完成后才会写进日志),因此在20分钟内,可能算出来的流量图会变化,基本上20分钟后出来的流量数据就准确了。
  
        然后自定义OID,cacti利用snmp取值,用rrdtool画图,就可以得到图了
分类: 1.系统服务, Cacti 标签:

nginx的upstream目前支持5种方式的分配(转载)

2010年6月3日 Serwei Xu 2 条评论

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backend {
server server1;
server server2;
fair;
}

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

upstream bakend{#定义负载均衡设备的Ip及设备状态
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
在需要使用负载均衡的server中增加
proxy_pass http://bakend/;

每个设备的状态设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录

location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

分类: 1.系统服务, Nginx 标签:

LVM介绍

2010年5月25日 Serwei Xu 5 条评论

一、简介

LVM是Linux操作系统对磁盘分区进行管理的一种机制。其是建立在磁盘和分区之上的一个逻辑层,以提高磁盘分区管理的灵活性。在LVM中每个磁盘分区就是一个物理卷(physical volume,PV),若干个物理卷可以组成为一个卷组(volume group,VG),形成一个存储池。系统管理员可以在卷组上创建逻辑卷(logical volumes,LV),并在逻辑卷组上创建文件系统。PV、VG和LV的关系如图所示。

二、物理卷管理

1、添加物理卷

使用pvcreate命令可以创建物理卷,可以在整个磁盘上创建物理卷,也可以在一个磁盘分区上创建物理卷。例如如果要在第二块SCSI磁盘上创建物理卷,可以使用命令:pvcreate /dev/sdb

2、查看物理卷

[root@demoserver dev]# pvdisplay

  — Physical volume —

  PV Name           /dev/hda13                        //pv名称

  VG Name           vg_data                      //pv所属的vg名称

  PV Size             1.87 GB / not usable 1.96 MB    //pv的大小为1.87GB

  Allocatable          yes

  PE Size (KByte)     4096                          //物理块大小为4MB

  Total PE           478                         //总的物理块数

  Free PE            478                         //空闲的物理块数

  Allocated PE        0

  PV UUID            jaVtOk-rpMb-QgbM-zx1N-DmCB-yGqm-hCVmiE

  — Physical volume —                           //另一个pv的信息

  PV Name            /dev/hda14

  VG Name            vg_data

  PV Size             1.86 GB / not usable 2.12 MB

  Allocatable          yes

  PE Size (KByte)      4096

  Total PE            476

  Free PE             476

  Allocated PE         0

  PV UUID            VzjEpx-or1h-v3gN-zOCm-FnjC-eDOz-tp5YZg

共有两个物理卷:/dev/hda13和/dev/hda14,其中hda13的大小为1.87GB,物理块大小为4096KB,总的物理块数为478,空闲的物理块数为478,已分配的物理块数为0。而hda14的大小为1.86GB,物理块大小为4096KB,总的物理块数为476,空闲的物理块数为476,已分配的物理块数为0。

3.删除物理卷

如果物理卷不再需要,可以使用pvremove命令将其删除,如下所示。

# pvremove /dev/hda16

  Labels on physical volume “/dev/hda16″ successfully wiped

物理卷被删除后,其所在的磁盘分区并不会被删除。需要被删除的物理卷必须是已经不属于任何卷组,否则将会失败,如下所示。

[root@demoserver dev]# pvremove /dev/hda13

  Can’t pvremove physical volume “/dev/hda13″ of volume group “vg_data” without-ff

三、卷组管理

1.添加卷组

物理卷创建完成后就可以开始创建卷组。卷组是由一个或多个物理卷所组成的存储池。例如要创建一个名为vg_data的卷组,可以使用下面的命令。

# vgcreate vg_data /dev/hda13 /dev/hda14

  Volume group “vg_data” successfully created

2.扩展卷组的容量

当卷组中的空间不足的时候,可以使用vgextend命令往卷组中添加新的物理卷,方便地扩展卷组的容量,如下所示。

# vgextend vg_data /dev/hda15

  Volume group “vg_data” successfully extended

3.查看卷组

使用vgdisplay命令可以查看卷组的信息。例如要查看上例中创建的卷组vg_data,执行的命令如下所示。

# vgdisplay vg_data

  — Volume group —

  VG Name               vg_data                   //vg名称

  System ID

  Format                  lvm2

  Metadata Areas         3                         //元信息区域

  Metadata Sequence No  2

  VG Access               read/write                //访问许可,可读写

  VG Status               resizable                  //VG状态

  MAX LV                  0                        //最大的LV数

  Cur LV                   0                        //当前的LV数

  Open LV                 0                        //打开的LV数

  Max PV                  0                        //最大的PV数

  Cur PV                   3                        //当前的PV数

  Act PV                   3

  VG Size                 5.59 GB                 //VG的大小为5.59GB

  PE Size                 4.00 MB                 //物理块的大小为4MB

  Total PE                1430                  //VG的物理块数为1430

  Alloc PE / Size            0 / 0            //已经使用的物理块数和大小

  Free  PE / Size         1430 / 5.59 GB          //空闲的物理块数和大小

  VG UUID                 djgPFx-LOGa-8ZOx-diNr-hxCs-qNip-vg0Hqu

卷组vg_dat格式为lvm2,访问许可为可读写,卷组大小为5.59GB,物理块大小为4MB,总的物理块数为1430,已分配的物理块数为0,空闲的物理块数为1430,大小为5.59GB。

4.从卷组中删除物理卷

通过vgreduce命令可以把VG中未被使用的PV从VG中删除,例如要从卷组vg_data中删除物理卷hda15,如下所示。

# vgreduce vg_data /dev/hda15

  Removed “/dev/hda15″ from volume group “vg_data”

如果要从卷组中删除所有未被使用的物理卷,可以使用如下命令。

# vgreduce –a

5.删除卷组

当卷组不再需要的时候,可以使用vgremove命令删除。如果卷组中已经创建了LV,则系统会提示用户确认是否要进行删除,命令及运行结果如下所示。

# vgremove vg_data

Do you really want to remove volume group “vg_data” containing 2 logical volumes

? [y/n]: y

Do you really want to remove active logical volume “lv_data1″? [y/n]: y

                                             //确定删除逻辑卷lv_data1

  Logical volume “lv_data1″ successfully removed

Do you really want to remove active logical volume “lv_data2″? [y/n]: y

                                             //确定删除逻辑卷lv_data2

  Logical volume “lv_data2″ successfully removed

  Volume group “vg_data” successfully removed

卷组被删除后,卷组中的所有物理卷将不属于任何卷组,可以对这些物理卷进行删除,命令如下所示。

# pvdisplay /dev/hda14

  “/dev/hda14″ is a new physical volume of “1.86 GB”

  — NEW Physical volume —

  PV Name            /dev/hda14

  VG Name               //VG Name一列为空,表示该PV不属于任何的VG

  PV Size             1.86 GB         //PV大小

  Allocatable          NO              //是否可分配

  PE Size (KByte)       0               //PE大小

  Total PE             0               //总PE数

  Free PE              0               //空闲的PE

  Allocated PE         0               //分配的PE

  PV UUID             VzjEpx-or1h-v3gN-zOCm-FnjC-eDOz-tp5Yzg

可以看到,物理卷hda14的VG Name一列为空,表示该物理卷不属于任何的卷组,用户可以删除该物理卷,或分配给其他卷组使用。

四、逻辑卷管理

逻辑卷类似于非LVM系统中的磁盘分区,在逻辑卷上可以建立文件系统,文件系统建立完成后就可以挂载到操作系统中进行使用。逻辑卷被划分为被称为LE(Logical Extents)的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

1.添加逻辑卷

当卷组创建后,可以使用lvcreate命令在卷组上创建逻辑卷。例如要在卷组vg_data上创建一个1000MB的逻辑卷lv_data1,其命令如下所示。

# lvcreate -L 1000m -n lv_data1 vg_data

  Logical volume “lv_data1″ created

除了KB、MB和GB这些常规单位以外,lvcreate命令还可以使用PE数作为单位。由vgdisplay可以看到卷组vg_data的PE大小为4MB,如果要创建一个大小为1000MB的逻辑卷,则需要250个PE,命令如下所示。

# lvcreate -l 250 -n lv_data2 vg_data

  Logical volume “lv_data2″ created

我们现在ppvod做LVM使用的命令是:

#lvcreate –i 4 –I 8192 –L 1600G –n lv_data2 vg_data

-i:采用条带模式的映射方式创建逻辑卷,该参数的值用于指定所创建的逻辑卷将映射在几个PV上。

-I:指定使用条带模式时所采用块的大小,单位为KB,其值必须是:2N(N≥2)。

-L:指定创建逻辑卷的大小,单位的可以用K、M、G、T表示KB、MB、GB及TB。

-n:用来指定所创建的逻辑卷名称,该名称可以根据需要随便定义。

在使用“-i”参数指定PV的个数时,一定要确认所指定的这些PV是没有完全被分配给任何逻辑卷的,否则将创建失败,其次若这些PV的大小不等,那么所创建的逻辑卷只能取最小值。

这样创建的LVM起到了软Raid的作用,可以使IO压力分散到各个硬盘之上,提高IO性能。

卷组和逻辑卷创建后,会在/dev目录下创建一个以VG名称命名的目录,在目录下会创建以LV名称命名的设备文件,如下所示。

#ll /dev/vg_data

total 0

lrwxrwxrwx 1 root root 28 Aug 24 22:22 lv_data1 -> /dev/mapper/vg_ data-lv_data1

lrwxrwxrwx 1 root root 28 Aug 24 22:21 lv_data2 -> /dev/mapper/vg_ data-lv_data2

2.更改逻辑卷的大小

使用lvresize命令可以更改已有逻辑卷的大小。一般情况下不建议减少逻辑卷的空间,因为这样可能会导致逻辑卷上的文件系统中的数据丢失,所以除非用户已经确定被减少空间中的数据不再需要或者已经把重要数据备份出来,否则不要减少逻辑卷的空间以免造成不可挽回的损失。如果要把逻辑卷lv_data1的大小增加为1500MB,可以使用下面的命令。

# lvresize -L 1500m /dev/vg_data/lv_data1

  Extending logical volume lv_data1 to 1.46 GB

  Logical volume lv_data1 successfully resized

3.查看逻辑卷的信息

使用lvdisplay命令可以查看指定逻辑卷的信息,例如要查看逻辑卷lv_data1的信息,命令和运行结果如下所示。

# lvdisplay /dev/vg_data/lv_data1

  — Logical volume —

  LV Name                 /dev/vg_data/lv_data1  //逻辑卷名称

  VG Name             vg_data                   //逻辑卷所属的卷组

  LV UUID                 3CrIH1-rZr6-UkNZ-1Z5n-gHw2-SM5T-by5fKg

  LV Write Access        read/write

  LV Status               available

  # open                  0

  LV Size                 1.46 GB                  //逻辑卷的大小

  Current LE              375                      //逻辑卷的逻辑块数

  Segments                1

  Allocation               inherit

  Read ahead sectors      auto

  – currently set to         256

  Block device             253:0

可以看到,逻辑卷/dev/vg_data/lv_data1所属的卷组为vg_data,访问许可为可读写,卷组状态为可用,逻辑卷大小为1.46GB,总的逻辑块数为375。

4.删除逻辑卷

使用lvremove命令可以删除指定的逻辑卷,删除前系统会提示用户确认。例如要删除逻辑卷lv_data2,其命令和运行结果如下所示。

# lvremove /dev/vg_data/lv_data2

Do you really want to remove active logical volume “lv_data2″? [y/n]: y

  Logical volume “lv_data2″ successfully removed

删除后,逻辑卷上的所有数据均会被清除。

分类: 4.操作系统, Linux 标签: