标签为 Zabbix 的文章

Zabbix分布式监控系统实践之 (2) 自定义配置

目录结构
Zabbix分布式监控系统实践之 (0) 什么是Zabbix
Zabbix分布式监控系统实践之 (1) 环境部署
Zabbix分布式监控系统实践之 (2) 自定义配置

本文内容
Zabbix分布式监控系统实践之 (2) 自定义配置

参考资料
https://www.zabbix.com/wiki/templates/start

环境介绍
OS: Ubuntu 10.10 Server 64-bit
Servers:
zabbix-server:10.6.1.181
zabbix-client-1:10.6.1.182

1. 环境部署
在上一个章节,我们已经搭建好了一个最小的环境,即一个server,一个agent;但这仅仅只是一个开始,想要用Zabbix实现对服务器的资源按照自己的需求进行监控,然后绘图,报警,还需要一系列的配置才行。

而在本章,我们就通过完成以下任务来完成对Zabbix自定义配置的熟悉:
1.通过Zabbix内建的方法来监控CPU,内存,交换分区,磁盘空间,网络IO等系统信息;
2.设置Trigger,指定各个监控项的阈值;
3.自定义各个监控项的绘图格式和颜色等;
4.在agent上安装Nginx;
5.配置自定义监控Nginx进程状态的模板,方法等;
6.配置HTTP Check方式的监控;
7.配置邮件报警并模拟故障;

2. 配置步骤
2.1 配置Agent并创建Host,使Server与Agent建立联系

查看Agent主机名
ubuntu@zabbix-client-1:~$ hostname

 
zabbix-client-1

配置相应的选项
ubuntu@zabbix-client-1:~$ sudo vim /usr/local/etc/zabbix_agentd.conf

 
Server=10.6.1.181
ServerActive=10.6.1.181
Hostname=zabbix-client-1

重启Agent
ubuntu@zabbix-client-1:~$ sudo /etc/init.d/zabbix-agent restart

 
Stopping Zabbix agent daemon: zabbix_agentd
Starting Zabbix agent daemon: zabbix_agentd

到WEB界面中创建Host
Configuration - Hosts - Create host

阅读全文 »

,

No Comments

使用参数innodb_file_per_table支持MySQL InnoDB表数据共享空间自动收缩

参考资料:
http://linuxfun.me/?p=1263

使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。
然而当你使用InnoDB的时候,一切都变了。InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。
在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数,可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。

独立表空间
优点:
1.每个表都有自已独立的表空间。
2.每个表的数据和索引都会存在自已的表空间中。
3.可以实现单表在不同的数据库中移动。
4.空间可以回收(drop/truncate table方式操作表空间不能自动回收)
5.对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

缺点:
单表增加比共享空间方式更大。

结论:
共享表空间在Insert操作上有一些优势,但在其它都没独立表空间表现好。
当启用独立表空间时,请合理调整一下 innodb_open_files 参数。

下面,就是一次针对线上Zabbix的MySQL数据库history历史记录过多导致ibdata1文件过大的实战解决步骤
1.查看文件大小
$ sudo cd /var/lib/mysql
$ ls -lh

 
total 14G
-rw-r--r-- 1 root root 0 Dec 1 14:31 debian-5.1.flag
-rw-rw---- 1 mysql mysql 5.0M Jan 17 21:31 ib_logfile0
-rw-rw---- 1 mysql mysql 5.0M Jan 17 21:29 ib_logfile1
-rw-rw---- 1 mysql mysql 14G Jan 17 21:31 ibdata1
drwx------ 2 mysql root 4.0K Dec 1 14:31 mysql
-rw-rw---- 1 root root 6 Dec 1 14:31 mysql_upgrade_info
drwx------ 2 mysql mysql 4.0K Jan 17 21:29 zabbix

共享表数据空间文件ibdata1大小已经达到了14G
阅读全文 »

, ,

No Comments

Zabbix分布式监控系统实践之 (1) 环境部署

目录结构
Zabbix分布式监控系统实践之 (0) 什么是Zabbix
Zabbix分布式监控系统实践之 (1) 环境部署
Zabbix分布式监控系统实践之 (2) 自定义配置

本文内容
Zabbix分布式监控系统实践之 (1) 环境部署

参考资料
https://www.zabbix.com/wiki/howto/install/ubuntu/ubuntuinstall

环境介绍
OS: Ubuntu 10.10 Server 64-bit
Servers:
zabbix-server:10.6.1.181
zabbix-client-1:10.6.1.182

1. 环境部署
前面,我们简单介绍了一下Zabbix,那么在本章,我们就来把Zabbix的环境部署起来,然后再在下一张详细的讲解其使用方法。
由于Zabbix采用的是分布式架构,因此我们采用两台服务器,一台做Server,另外一台做Agent,来搭建一个最小的环境。

2. 安装步骤
2.1 安装系统依赖以及mysql-server与php
$ sudo apt-get install build-essential mysql-server libmysqlclient15-dev php5 php5-gd php5-mysql snmp libsnmp-dev snmpd libcurl4-openssl-dev fping apache2

在弹出的界面中配置MySQL的Root密码,比如zabbixadmin
MySQL password: zabbixadmin

2.2 新建用户zabbix
$ sudo adduser zabbix

 
Enter new UNIX password: zabbix
Retype new UNIX password: zabbix

$ sudo adduser zabbix admin
$ sudo visudo
添加如下内容,给予Zabbix用户sudo权限

 
zabbix ALL=(ALL)       NOPASSWD:ALL

2.3 下载源码包
$ sudo -i
# su - zabbix
$ wget "http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.4/zabbix-2.0.4.tar.gz"
$ tar xzvf zabbix-2.0.4.tar.gz

2.4 初始化数据库
$ mysql -uroot -pzabbixadmin -e "create database zabbix;"
$ mysql -uroot -pzabbixadmin -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"
$ mysql -uzabbix -pzabbix -D zabbix < zabbix-2.0.4/database/mysql/schema.sql $ mysql -uzabbix -pzabbix -D zabbix < zabbix-2.0.4/database/mysql/images.sql $ mysql -uzabbix -pzabbix -D zabbix < zabbix-2.0.4/database/mysql/data.sql 2.5 编译安装 $ cd zabbix-2.0.4/ $ ./configure --prefix=/usr/local --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent $ make $ sudo make install 阅读全文 »

,

1 Comment

Zabbix分布式监控系统实践之 (0) 什么是Zabbix

目录结构
Zabbix分布式监控系统实践之 (0) 什么是Zabbix
Zabbix分布式监控系统实践之 (1) 环境部署
Zabbix分布式监控系统实践之 (2) 自定义配置

本文内容
Zabbix分布式监控系统实践之 (0) 什么是Zabbix

参考资料
http://workaround.org/try-zabbix

环境介绍
OS: Ubuntu 10.10 Server 64-bit
Servers:
zabbix-server:10.6.1.181
zabbix-client-1:10.6.1.182

Zabbix官方Wiki
https://www.zabbix.com/wiki/start

1. 初识Zabbix
Zabbix是一个基于WEB界面的分布式开源监控系统,主要由2部分构成,Zabbix server与Zabbix agent,同时也支持Zabbix proxy。

我首次听说Zabbix,是因为看到一篇文章:Tired of Nagios and Cacti? Try Zabbix.
在此之前我只简单的用过 Cacti 和 Nagios,且一些同样做运维的哥们儿也都是用的这两款开源软件。

因此,在看到这样一个标题之后,感觉很新奇就粗略的了解了一下,当时并没有去实践。人总是对已经熟悉的东西拥抱而排斥陌生的东西。而现在,我们已经将Zabbix大量的应用到了线上环境。在日常的监控中,深切的体验到了Zabbix的高效快捷和优秀的扩展能力。

Zabbix的底层采集程序是用C语言编写的Server与Agent,而用户界面是通过php编写web,采用MySQL数据库来存储数据。
整个Zabbix其实就是一个框架,其中内置了一些针对各类OS的系统参数采集命令,可以直接调用,而其它的自定义监控参数,则可以通过自己来写一些快捷的Shell命令通过管道传递,或通过各种脚本甚至程序来传递。Zabbix只管把最后的返回值通过agent拿到,存储统计,绘图,根据定义的阈值进行报警等。

说到这里,其实所有的监控系统差不多都是这样的逻辑,所以真正有差别的地方是在最后功能的整合和易用性上。而Zabbix之所以好用,就是因为它整合的相当好,拿来之后就能用,agent安装简单方便,server端配置,完善的用户界面,绘图,报警和扩展等都非常方便。在做电信项目的时候,与电信的一款付费的商业软件对比,丝毫不逊色,以至于电信的维护人员都主动找我来学习Zabbix的安装与配置方法,打算替换他们的监控系统。

1.2 功能对比
介绍到这里,我们不如用一个图片来简单的对比一下目前各个主流的监控系统。

阅读全文 »

,

No Comments

实现Zabbix通过邮件发送Screen图形报表

在使用Zabbix的过程中,我们通常会建立一些需要的Screen图形报表来汇总需要监控的Graph。
而下面的两个脚本,则是通过从Zabbix数据库中获取所有的Screen图形参数,提供Zabbix的WEB接口将所有图形保存到本地,然后通过脚本以Email形式发送过来,作为每天的自动报表。

$ sudo mkdir -p /data/script
$ sudo mkdir -p /data/graph

$ sudo vim /data/scripts/save-graph.pl

#!/usr/bin/perl
use File::Path;
use DBI;

my $path = '/data/graph';
if(-e $path) { rmtree($path); }
mkdir($path);

my $stime = `date +%Y%m%d`; chop($stime); $stime .= '1000';
if( length($stime) != 12 ) { print "Error get date"; exit; }

my $period = 86400;    # 24 hours

my $login = 'admin';   # Zabbix Web User
my $pass = 'password'; # Zabbix Web User Password, must be URL Encoded

my $cook = "/tmp/cookie";
my $dsn = 'DBI:mysql:zabbix:localhost'; # Connect MySQL DB "zabbix" on localhost
my $db_user_name = 'zabbix'; # MySQL DB user
my $db_password = 'dbpassword'; # MySQL DB user password

my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
my $sth = $dbh->prepare(qq{select a.name,a.hsize,a.vsize, b.resourceid, b.width, b.height,b.x,b.y from screens a,screens_items as b where a.screenid=b.screenid and a.templateid<=>NULL order by a.name});
$sth->execute();
my %screens;

# Get all graphs by using curl
while (my ($name,$hsize,$vsize, $id,$width,$height,$x,$y) = $sth->fetchrow_array())
{
    if(length($id) > 2){
        #print "$id => $ids\n";
        my $p = "$path/$name.$hsize.$vsize.$y.$x.$id.png";
        my $strcomm  = `curl  -c $cook -b $cook -d "request=&name=$login&password=$pass&autologin=1&enter=Sign+in"  localhost/zabbix/index.php`;
        $strcomm  = `curl  -b $cook -F  "graphid=$id" -F "period=$period" -F "stime=$stime" -F "width=$width" -F "height=$height" localhost/zabbix/chart2.php > $p`;
    }
}

exit ;

阅读全文 »

, ,

15 Comments

如何将Zabbix从1.8.x升级到2.0.x

最近在研究Zabbix的过程中,逐渐的喜欢上了这个工具,感觉集成的非常棒,完全可以替代Nagios+Cacti的组合。
今天下发布一篇关于Zabbix升级的文档,后面会根据自身的经验,图文并茂撰写一篇Zabbix从入门到熟悉的文章供大家参考。

本文参考资料:
http://www.zabbix.com/documentation/2.0/manual/installation/upgrade_notes
http://www.zabbix.com/documentation/2.0/manual/installation/upgrade?s[]=upgrade

文档内容应公司要求全部用英文来撰写了,不过相信大家阅读起来应该没有什么问题的。

Upgraded Zabbix from 1.8.2 to 2.0.2.

1. Stop Zabbix server
$ su - zabbix
$ sudo /etc/init.d/zabbix_server stop

2. Back up the existing Zabbix database
$ mkdir -p /home/zabbix/zabbix_upgrade/backup
$ cd /home/zabbix/zabbix_upgrade/backup
$ mysqldump -uroot -p123456 zabbix > zabbix.backup.sql

3. Back up configuration files, PHP files and zabbix binaries
$ cp -rp /etc/zabbix .
$ cp -rp /home/zabbix/public_html .
$ cp -rp /etc/init.d/zabbix-* .
$ cp -rp /usr/sbin/zabbix* .
$ cp -rp /usr/bin/zabbix* .

4. Install new server binaries
Download zabbix-2.0.2.tar.gz from website.
$ cd /home/zabbix/zabbix_upgrade/
$ tar xzvf zabbix-2.0.2.tar.gz
$ cd zabbix-2.0.2
$ ./configure --prefix=/usr --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent
$ make
$ sudo make install
$ sudo zabbix_server --help
Zabbix server v2.0.2 (revision 29214) ...
阅读全文 »

1 Comment