Zabbix安装指南

操作系统:CentOS 7.2
Zabbix版本:2.4.7


#安装 EPEL 源:

1
yum install epel-release

#添加 Zabbix 仓库:
官方源实在是太慢了,于是用阿里云的镜像

1
2
rpm --import http://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
rpm -Uv http://mirrors.aliyun.com/zabbix/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm

#安装 Zabbix

1
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent

#安装 MariaDB

1
2
3
4
yum install mariadb-server mariadb
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation

#配置数据库
创建一个名为zabbix的数据库,用户名为zabbixuser

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql -uroot -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 45897
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>create database zabbix character set utf8;
Query OK, 1 row affected (0.05 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbixuser'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.21 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

#初始化 Zabbix 数据库

1
2
3
4
cd /usr/share/doc/zabbix-server-mysql-2.4.7/create
mysql -u zabbixuser -p zabbix < schema.sql
mysql -u zabbixuser -p zabbix < images.sql
mysql -u zabbixuser -p zabbix < data.sql

#修改 Apache

1
2
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai

1
2
3
4
5
6
7
vi /etc/php.ini
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
date.timezone = Asia/Shanghai
1
2
systemctl enable httpd.service
systemctl start httpd.service

#修改 Zabbix 配置

1
2
3
4
5
6
7
8
vi /etc/zabbix/zabbix_server.conf
[...]
DBName=zabbix
[...]
DBUser=zabbixuser
[...]
DBPassword=password
[...]

#配置防火墙
最小化安装默认是没有防火墙的

1
2
3
4
5
firewall-cmd --permanent --zone=public --add-service=mysql
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --permanent --add-port=10051/tcp
firewall-cmd --reload

#允许 Apache 和 Zabbix 通信
SELinux 会导致 Zabbix 为服务器未运行状态

1
setsebool -P httpd_can_connect_zabbix=1

#启动与开机自动运行

1
2
3
4
5
6
systemctl start zabbix-server
systemctl start zabbix-agent
systemctl restart httpd
systemctl restart mariadb
systemctl enable zabbix-server
systemctl enable zabbix-agent

#图形化配置
以上操作都配置完成后,访问 http://ip-address/zabbix,完成最终的图形化配置,会检查配置情况,及再输入数据库信息来完成数据库配置。

参考:
CentOS 7上使用yum安装zabbix 2.4
How To Install Zabbix Server On CentOS 7

如何批量修改Cacti数据

之前可能是由于虚拟机被挂起,恢复后系统时间出现偏差,导致 cacti 的图形在某五分钟出现了一个峰值,既影响查看图形,还影响数据统计,于是打算把这一段错误的数据删掉。

但由于有一百多的接口,三百多的 rrd 数据库文件,一个个改也未免太傻了点。花了半天来研究怎么批量修改数据,记录一下。


###单个文件的修改方式

####转换 rrd 文件至 xml

1
rrdtool dump 1.rrd > 1.xml

####修改 xml 文件

1
vi 1.xml

1
2
3
4
vi 1.xml
/<!-- 2015-04-07 00:00:00 CST
dd
:x

####转换回 rrd 文件

1
rrdtool restore 1.xml 1.rrd


###批量处理文件
首先理一下顺序

  • 停止 snmp、mysql 服务
  • 备份 rra 文件
  • 批量转换 rrd 文件为 xml
  • 批量删除 xml 文件中问题行
  • 批量转换 xml 文件回 rrd
  • 覆盖原有数据
  • 重启服务

####停止 snmp、mysql 服务
目的是避免新数据采集导致问题

1
2
service snmpd stop
service mysqld stop

####备份 rrd 文件

1
2
tar -cvf rrd.tar /var/www/html/cacti/rra/
cp /var/www/html/cacti/rra/ ~/rra

####批量转换 rrd 文件为 xml

1
# cat rra2xml.sh

1
2
3
4
5
6
7
8
9
#!/bin/bash
rrddump="/usr/bin/rrdtool dump"
xmldir=~/rraxml/
rradir=~/rra/*
for file in `find ${rradir} -mtime -2 |awk -F\/ '{print $NF}'`
# find rra directory 2 days change
do
${rrddump} ${rradir}${file} > ${xmldir}/${file}
done
1
# ./rra2xml.sh

这里 ~/rraxml/ 文件夹中的 rrd 文件已经是 xml 格式了,但是为了省事就没变。
这段代码抄自网络,具体哪一个站点现在也找不到了。

####批量删除 xml 文件中问题行
由于本人才疏学浅,不会写脚本,于是拖到 Windows 上来操作。
使用的是一款名为 UltraReplace 的国人作品。
首先要在设置里添加 rrd 文件类型,然后选择“特征替换”,起始特征字符串为“<!-- 2015-04-07 00:00:00 CST”,结束特征字符串为“</row>”,选择“+文件夹”,然后点击“开始”。

然后传回 Linux 服务器。

####批量转换 xml 文件回 rrd

1
# cat rra2xml.sh

1
2
3
4
5
6
7
8
9
#!/bin/bash
rrdrestore="/usr/bin/rrdtool restore"
xmldir=~/n/rraxml2/
rradir=~/n/rrd2/
for file in `find ${xmldir} -mtime -2 |awk -F\/ '{print $NF}'`
# find rra directory 2 days change
do
${rrdrestore} ${xmldir}${file} ${rradir}${file}
done
1
# ./rra2xml.sh

####覆盖原有数据

1
mv -f ~/rraxml/* /var/www/html/cacti/rra/

####重启服务

1
2
service snmpd start
service mysqld start


看峰值是否已被删除,过十分钟左右如果有新图形说明成功了。

如何使用SmokePing来监控网络质量

smokeping 是一款开源的网络质量监控的工具。因为之前的那套挂了,所以重新搭了一遍。花了近一周,踩坑无数,将过程记录下来。

不得不吐槽 Linux 杂乱无章的依赖关系,装 Smokeping 最便捷的是 FreeBSD,仅需要一条命令便能完成全部安装。但由于后面的配置太不方便,还是用了用的人最多的 CentOS。

##FreeBSD

1
pkg_add -r smokeping

##CentOS

###准备
先装好系统,我选的是 CentOS 6.6 64 位版本,CentOS 7 出的时间还不长,各种包东拼西凑装起来还是挺麻烦的。
然后配 IP 地址。

1
vi  /etc/sysconfig/network-scripts/ifcfg-ethx

然后把 SELinux 禁用:

1
2
vi /etc/selinux/config
SELINUX = disabled

###安装源
官方、网易等虽然稳定快速,但是很多东西都没有。于是装个东西比较全的源:

1
2
rpm -Uvh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -Uvh http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.i686.rpm

根据自己的版本安装,5/7 的自己把 el 后的数字改掉。

###安装依赖

1
yum -y install perl perl-Net-Telnet perl-Net-DNS perl-LDAP perl-libwww-perl perl-RadiusPerl perl-IO-Socket-SSL perl-Socket6 perl-CGI-SpeedyCGI perl-FCGI perl-CGI-SpeedCGI perl-Time-HiRes perl-ExtUtils-MakeMaker perl-RRD-Simple rrdtool rrdtool-perl curl fping echoping  httpd httpd-devel gcc make  wget libxml2-devel libpng-devel glib pango pango-devel freetype freetype-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel mod_fastcgi

只要服务器不大姨妈还是很快的。

###安装smokeping

1
2
3
4
5
6
7
wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.11.tar.gz
tar zxvf smokeping-2.6.11.tar.gz
cd smokeping-2.6.11
./configure --prefix=/usr/local/smokeping
./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty
./configure --prefix=/usr/local/smokeping
/usr/bin/gmake install

注意下载下来的压缩包是安装文件,不要改名后直接扔目录,会有冲突。
其中 ./setup/build-perl-modules.sh /usr/local/smokeping/thirdparty 这一条是个大坑,会从 cpan.org 下载文件安装,但是 cpan.org 国内并不稳定,建议使用网易的镜像,教程在这,但我按教程来没效果,你也可以爬梯子或者多试两遍。

###配置 Smokeping

####创建 cache、data、var 数据目录

1
2
cd /usr/local/smokeping
mkdir cache data var

####创建日志

1
touch /var/log/smokeping.log

####授权

1
2
chown apache:apache cache data var
chown apache:apache /var/log/smokeping.log

####修改配置文件

1
2
3
4
5
6
7
8
9
cd /usr/local/smokeping/htdocs/
mv smokeping.fcgi.dist smokeping.fcgi
cd /usr/local/smokeping/etc
mv config.dist config
vim config
cgiurl = http://some.url/smokeping.cgi
...
step = 300
ping = 5

将 some.url 改成你的 IP 或者是域名。
这里 step、ping 意思是每 300 秒时间,ping 5 次。
配完保存给密码文件权限:

1
chmod 600 /usr/local/smokeping/etc/smokeping_secrets.dist

####修改 Apache 配置

#####无密码

1
2
3
4
5
6
7
8
9
10
11
12
vim /etc/httpd/conf/httpd.conf
Alias /cache "/usr/local/smokeping/cache/"
Alias /cropper "/usr/local/smokeping/htdocs/cropper/"
Alias /smokeping "/usr/local/smokeping/htdocs/smokeping.fcgi"
<Directory "/usr/local/smokeping">
AllowOverride None
Options All
AddHandler cgi-script .fcgi .cgi
Order allow,deny
Allow from all
DirectoryIndex smokeping.fcgi
</Directory>

#####设密码
如果要让登录 Smokeping 时需要验证用户,则 Apache 添加内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim /etc/httpd/conf/httpd.conf
Alias /cache "/usr/local/smokeping/cache/"
Alias /cropper "/usr/local/smokeping/htdocs/cropper/"
Alias /smokeping "/usr/local/smokeping/htdocs/smokeping.fcgi"
<Directory "/usr/local/smokeping">
AllowOverride None
Options All
AddHandler cgi-script .fcgi .cgi
AllowOverride AuthConfig
Order allow,deny
Allow from all
AuthName "Smokeping"
AuthType Basic
AuthUserFile /usr/local/smokeping/htdocs/htpasswd
Require valid-user
DirectoryIndex smokeping.fcgi
</Directory>

然后命令行输入,点回车,会要你输密码:

1
htpasswd -c /usr/local/smokeping/htdocs/htpasswd admin

####自动启动 Smokeping、Apache 服务

1
2
echo "/usr/local/smokeping/bin/smokeping --logfile=/var/log/smokeping.log 2>&1 &" >> /etc/rc.local
chkconfig httpd on

####添加监控列表

1
vim /usr/local/smokeping/etc/config

####Apache 开端口

1
2
iptables -I INPUT -p TCP --dport 80 -j ACCEPT
/etc/init.d/iptables save

重启设备后进入 http://127.0.0.1/smokeping 应该就能看到图表了

####树状目录权限报错
如果点击列表看不到图,提示什么权限不足,要按照报错新建对应目录,然后给权限

1
2
mkdir /usr/local/smokeping/data/IDC //IDC 根据实际情况修改
chmod 655 /usr/local/smokeping/data/IDC


几乎照搬 dl528888 的博文教程,通过自己实际操作进行梳理,再加上他未说明和遗漏的内容合成一篇。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×