Fork me on GitHub
Suzf  Blog

[译] Zabbix 之监控虚拟主机EXSI

概述

Zabbix 从2.2.0版本开始支持支持监控VMware 虚拟机的可用性。

Zabbix 可以使用low-level discovery 规则去自动发现 VMware hypervisors and virtual machines 之后创建主机并监控他们, 基于之前定义的主机规则.

在Zabbix默认数据集提供了几个现成的模板或ESX hypervisor监测VMware vCenter。

最小要求VMware vCenter或vSphere的版本是4.1。

详情

虚拟机监控是两个步骤。第一个数据是由VMware收集器Zabbix收集过程。这些过程中获取必要的信息从VMware的Web服务的SOAP协议,预处理并存储到Zabbix服务器共享内存。然后,数据用Zabbix简单检查VMware键对检索。

数据收集从一个单一的Vmware服务通过一个单一的采集进程不能共享到多个数据收集进程。然而,个收集器可以处理多个虚拟机服务。因为推荐使用ESX hypervisor直接整个vCenter服务监控。

配置

Zabbix server 编译的是侯应该使用以下参数: --with-libxml2 and --with-libcurl

下面这些参数可用于虚拟机的监控:

选项                                  区间          默认值     说明

StartVMwareCollectors  0-250            0               Number of pre-forked vmware collector instances.

VMwareCacheSize        256K-2G      8M         Shared memory size for storing VMware data.
A VMware internal check zabbix[vmware,buffer,…] can be used to monitor the VMware cache usage (see Internal checks).
Note that shared memory is not allocated if there are no vmware collector instances configured to start.

VMwareFrequency        10-86400     60         Delay in seconds between data gathering from a single VMware service.
This delay should be set to the least delay period of an

 

发现

Zabbix可以使用low-level 发现规则去自动发现VMware hypervisors and virtual machines.

 

在上面的截图中发现规则的键值是 vmware.hv.discovery[{$URL}].

主机原型

主机原型可以与低层次的发现的规则。当虚拟机被发现,这些原型成为真正主机。原型,在被发现前,不能有自己的项目和触发器,其他链接模板。发现主机将属于一个现有的主机,将现有的主机的IP的主机配置。

在主机原型配置,LLD宏用于主机名称,可见的名称和主机组原型领域。主机状态,现有的主机组和模板连锁等都是不错的选择,可以设置。

发现主机的前缀,创造了他们发现规则的名称,在主机列表。发现主机可以手动删除。发现主机也会被自动删除,以保持失去资源期(天)发现规则的价值。大多数的配置选项是只读的,除了启用/禁用主机和主机库存。发现主机不能有自己的主机的原型。

开始使用模板

在Zabbix默认数据集提供了几个现成的模板,用于监测VMware vCenter或直接ESX hypervisor。

这些模板包含预配置的LLD规则以及监测虚拟设备的一些内置的检查。

请注意:

“模板为VMware”模板可以用于VMware vCenter和ESX hypervisor监测。

“模板为VMware虚拟机管理程序”和“模板为VMware客”模板被发现,通常不应该手动连接到主机。

主机配置

在使用简单检查前需要先定义一下宏命令:

{$URL} - VMware service (vCenter or ESX hypervisor) SDK URL (https://servername/sdk).

{$USERNAME} - VMware service user name

{$PASSWORD} - VMware service {$USERNAME} user password
Example

下面的例子讲述的是如何对VMware主机进行监控

编译zabbix server 必须有一下参数 --with-libxml2 and --with-libcurl

在zabbix server设置StartVMwareCollectors 值为1 或更大

新建主机

设置为VMware认证所需的主机的宏:

关联模板

保存

稍等就会自动出现在主机里了

 

Nginx 之访问控制与状态查看

Nginx访问控制
========================================================

基于用户
基于主机

一、基于用户的访问控制
1. 检测是否有htpasswd命令

建立口令文件

查看口令文件

2. 实现认证[用户]
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

3. 访问测试
检测配置文件,重新加载

访问测试

[[email protected] ~]# links www.jeffery.com

二、基于主机的访问控制

修改配置文件

重载与测试

========================================================

Nginx状态查看

一、编译安装Nginx时
--with-http_stub_status_module
查看当前编译参数

[[email protected] ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.2.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx-1.2.2 --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.31

二、配置Nginx
# vim /usr/local/nginx/conf/nginx.conf

重启服务

[[email protected] ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.2.2/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.2.2/conf/nginx.conf test is successful
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload

查看Nginx状态信息

Active connections: 1 当前活动的连接数

server accepts handled requests
18 18 45
18 从启动到现在一共处理的连接数
18 从启动到现在成功创建的握手的次数
45 总共处理的请求数(requests)
请求的丢失数=(握手-连接)

connection 连接数,tcp连接
request http请求,GET/POST/DELETE

Reading:0 Writing: 1 Waiting: 0
Reading: 0 读取客户端Header的信息数 请求头
Writing: 1 返回给客户端的header的信息数 响应头
Waiting: 0 等待的请求数

 

Zabbix 之 web url 监控

1.首先可以在主机模板中先定义一个application

2.找一个关联着这个模板的主机[Configuration -- Hosts ],然后选择这台主机[Web],点击Create scenario

 

Save

3.查看监控状态[Monitoring -- Web]

更多信息请移驾官网:https://www.zabbix.com/documentation/2.4/manual/web_monitoring

 

Nginx 之虚拟主机

Nginx 虚拟主机
========================================================

虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点、应用组件等,提供必要的站点功能、数据存放和传输功能。所谓虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟主机都具有独立的域名和完整的Internet服务器(支持WWW、FTP、E-mail等)功能,从用户角度来看,每台虚拟术机和一台独立的服务器完全相同,在IP地址日益紧张的今天,基于域名的虚拟主机要比基于IP的虚拟主机使用的更加广泛。

========================================================

三种表现形式:

基于主机
基于端口
基于IP

准备工作:

安装好nginx,这里不做介绍,如果需要请在本博中查找。

一、规划
网站 IP 网站主目录
www.jeffery.com 192.168.9.110 /nginx/jeffery
www.ocean.com 192.168.9.110 /nginx/ocean
www.blue.com 192.168.10.120 /nginx/blue
由于使用了两个IP,在接口上绑定IP

二、DNS解析

这里可以直接写入到 hosts 文件
www.jeffery.com jeffery.com ==> 192.168.9.110
www.ocean.com ocean.com ==> 192.168.9.110
www.blue.com blue.com ==> 192.168.9.120

三、Nginx虚拟主机
1. 准备工作

2.配置Nginx实现虚拟主机
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

#工作模式及连接数上限

worker_processes 1; #cpu核心数
events {
worker_connections 1024; #连接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 192.168.9.110:80;
server_name www.jeffery.com jeffery.com; #基于主机名
location / {
root html/jeffery;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

server {
listen 192.168.9.110:80;
server_name www.ocean.com ocean.com; #基于主机名
location / {
root html/ocean;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

server {
listen 192.168.9.120:80;
server_name www.blue.com blue.com; #基于主机名
location / {
root html/blue;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

3. 检测配置文件并重新启动
[[email protected] ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[[email protected] ~]# pgrep nginx
5856
5857
[[email protected] ~]# kill -HUP 5856
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload

4.测试

 

Nginx之基本配置

Nginx

1. 高性能的HTTP Server,支持高达20000并发访问
2. 反向代理服务器,给网站加速
3. 做为前端一个负载均衡器
========================================================

一、准备工作
# service httpd stop
# chkconfig httpd off
所需的软件: 开发库,openssl-devel

二、部署Nginx
1. pcre: 支持正则表达式,地址重写rewrite
# tar zxf pcre-8.31.tar.gz
# cd pcre-8.31
# ./configure && make && make install
# ldconfig

2. nginx
# useradd www
# tar xvf nginx-1.2.2.tar.gz
# cd nginx-1.2.2
[[email protected] nginx-1.2.2]# ./configure \
> --user=www \
> --group=www \
> --prefix=/usr/local/nginx-1.2.2 \
> --with-http_stub_status_module \
> --with-http_sub_module \
> --with-http_ssl_module \
> --with-pcre=/usr/src/pcre-8.31 #pcre源程序目录

#--with-pcre=/usr/src/pcre-8.31 指的是pcre-8.31 的源码路径。
#--with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。

# make && make install
# ln -s /usr/local/nginx-1.2.2/ /usr/local/nginx

# tree /usr/local/nginx/
/usr/local/nginx/
|-- conf
| |-- fastcgi.conf
| |-- fastcgi.conf.default
| |-- fastcgi_params
| |-- fastcgi_params.default
| |-- koi-utf
| |-- koi-win
| |-- mime.types
| |-- mime.types.default
| |-- nginx.conf //主配置文件
| |-- nginx.conf.default
| |-- scgi_params
| |-- scgi_params.default
| |-- uwsgi_params
| |-- uwsgi_params.default
| `-- win-utf
|-- html
| |-- 50x.html
| `-- index.html
|-- logs
`-- sbin
`-- nginx

3. 启动
[[email protected] ~]# /usr/local/nginx/sbin/nginx
[[email protected] ~]# netstat -tnlp |grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10627/nginx

4. 测试
# links -dump 192.168.9.110
Welcome to nginx!
# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local #开机运行

二、Nginx基本配置
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
CoreModule Nginx内核模块
EventsModule 事件驱动模块
HttpCoreModule http内核模块

# sed -i '/^[ \t]*#/d;/^[ \t]*$/d' /usr/local/nginx/conf/nginx.conf

# vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; #初始启动的进程数(建议CPU的core数)
worker_connections 15000; #最大连接数
server {
listen 80; #监听的端口
server_name localhost; #站点名称
location / {
root html; #root指令指定网站主目录(相对于nginx的安装目录)
index index.html index.htm; #默认主页
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

语法检查:
# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重新加载nginx:
[[email protected] ~]# pgrep nginx
5693
5757

[[email protected] ~]# kill -HUP 5693
[[email protected] ~]# pgrep nginx
5693
5787

# /usr/local/nginx/sbin/nginx -s reload

# /usr/local/nginx/html/ #站点默认主目录
# echo "Welcome to Jeffery Nginx" > /usr/local/nginx/html/index.html
[[email protected] ~]# elinks -dump 192.168.9.110
Welcome to Jeffery Nginx

========================================================

排错:
[[email protected] ~]# /usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot
open shared object file: No such file or directory

编译nginx指定 --with-pcre=/usr/src/pcre-8.31 指定pcre-8.31 的源码路径。

========================================================

日志分析之LogAnalyzer+Rsyslog日志分析系统全

一、简介

LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端。它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般的 syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案。

LogAnalyzer 获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log/目录下的日志并保存到服务端该目录下,一种是读取后保存到日志服务器数据库中,推荐使用后者。

LogAnalyzer 采用php开发,所以日志服务器需要php的运行环境,本文采用LAMP。

Kickstart之为root自定义密码

linux kickstart之中root的密码可以使用明文,也可以使用加密过的值
rootpw –iscrypted $1$BYSimLw0$I515yLiKzudlwkIskBqQE1

就是读取加密后的值,但是这个值是怎么生成的呢?
这与linux系统的密码shadow一样,生成方法如下:
perl -e 'print crypt ("jeffery",q($1$VSmile07)),"\n"'

# 其中Jeffery 是为要给用户设置的密码,$1$VSmile07字符串是自定义字符串,shadow里一般用$1$后面跟8个字符这种格式。
生成的密码串样式如下:
$1$VSmile07$KXKn1fJznUJeTRLQx7duB/

中间有个$,前面算salt,后面的加密值,合在一起叫hash
crypt 本身默认用des算法
如果salt以$1$开头就使用md5算法

des算法命令如下:
perl -e 'print crypt ("jeffery","/g"),"\n"'

生成的密码串样式如下:
/gtivxtepbAM6

综上,如果你想设置自定义密码为"jefferypass-007"
则这样可以得到:

perl -e 'print crypt("jefferypass-007",q($1$BYJeffery)),"\n"'

你的密码为: $1$BYJeffer$lwi40dGdfhoenhqrSxwNG/
这里的$1$BYJeffer 是自定义字符串。

 

HTTP 返回状态代码详解

一、HTTP状态码

如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返回 HTTP 状态代码以响应请求。

此状态代码提供关于请求状态的信息, 告诉 Googlebot 关于您的网站和请求的网页的信息。

DIY精简CentOS自动安装ISO

俗话说一瘦遮三丑,一胖全没有。原生的系统过于庞大和臃肿,工作中有很多组件和安装包根本是用不到的,只安装我们需要的组件,并实现自动安装,这样在产线批量布署服务器的时候,显的效率非常高。