首页 > 代码库 > zabbix监控系统

zabbix监控系统


一、zabbix简介:

Zabbix是完全开源的工具,整合了cacti和nagios等特性。

Cacti

 

实验环境:

 技术分享

Zabbix部署前的lanmp环境的搭建过程

安装编译工具及库文件

 技术分享

搭建LNMP

因为这台主机是安装好的mysql,所以就安装一下nginx、php就可以了。

安装nginx:

解压zlib和pcre(也可以通过yum安装,yum安装的pcre和zlib,安装nginx时不用指定路径),不用编译,只需解压就行。

 技术分享

解压并编译安装nginx

 技术分享

启动nginx,并在防火墙上添加端口

 技术分享

启动后测试一下nginx,再浏览器中打开页面,显示nginx默认页面

 技术分享

下面安装php

 技术分享

  技术分享

技术分享

编辑配置文件/etc/php.ini ,修改后的内容如下:

找到:
;date.timezone = 
修改为:
date.timezone = PRC #设置时区

找到:
expose_php = On 
修改为:
expose_php = Off #禁止显示php版本的信息

找到:
short_open_tag = Off 
修改为:

short_open_tag = On //支持php短标签

找到:

post_max_size = 8M

修改为:

post_max_size = 16M  //上传文件大小

找到:

max_execution_time = 30

修改为:

max_execution_time = 300  //php脚本最大执行时间

找到:

max_input_time = 60

修改为:

max_input_time = 300  //以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制

always_populate_raw_post_data = http://www.mamicode.com/-1

mbstring.func_overload = 0

 

创建php-fpm服务启动脚本:

 技术分享

生成php-fpm配置文件并编辑:

[root@server php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf

 

修改内容如下:

pid = run/php-fpm.pid #生成phppid文件

user = www

group = www

listen =127.0.0.1:9000#监听php server地址

pm.max_children = 300#最大子进程数

pm.start_servers = 10#启动服务时开启的进程数

pm.min_spare_servers = 10#最小空闲进程数

pm.max_spare_servers =50#最大空闲进程数

启动php-fpm服务:

[root@server php-5.6.27]# service php-fpm start

Starting php-fpm  done

[root@server php-5.6.27]# netstat -anpt | grep php-fpm

tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      49083/php-fpm: mast

配置nginx支持php

[root@server ~]# vi /usr/local/nginx1.10/conf/nginx.conf

重启nginx服务

测试LNMP

进入nginx默认的网页根目录,创建.php的测试页

 技术分享

技术分享

 

测试结果:

 技术分享

 技术分享

至此,LNMP部署完毕。

三、监控系统zabbix-3.2.1的安装

1.zabbix-server端的操作

安装前准备,创建运行zabbix的用户,并安装相关支持包

 技术分享

注:OpenIPMI-devel libssh2-devel软件包使用centos在线yum软件源安装

安装Fping

[root@server ~]# tar zxf fping-3.12.tar.gz

[root@server ~]# cd fping-3.12/

[root@server fping-3.12]# ./configure && make && make install

[root@server fping-3.12]# chown root:zabbix /usr/local/sbin/fping

[root@server fping-3.12]# chmod 4710 /usr/local/sbin/fping

 

安装zabbix server

 技术分享

[root@server zabbix-3.2.1]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/

[root@server ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

Zabbix server配置与启动

创建zabbix数据库和mysql用户

 

mysql> create database zabbix character set utf8;

Query OK, 1 row affected (0.22 sec)

 

mysql> grant all privileges on zabbix.* to zabbix@‘localhost‘ identified by ‘zabbix‘;

Query OK, 0 rows affected, 1 warning (0.23 sec)

导入Zabbix初始数据:

切换到zabbix的解压目录下进行zabbix初始数据导入

[root@server ~]# cd zabbix-3.2.1/database/mysql/

[root@server mysql]# ls

data.sql  images.sql  schema.sql

[root@server mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < schema.sql

[root@server mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < images.sql

[root@server mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < data.sql

 

编辑/usr/local/zabbix/etc/zabbix_server.conf:

编辑/usr/local/zabbix/etc/zabbix_server.conf:

root@mysqla ~]# grep -v "^#" /usr/local/zabbix/etc/zabbix_server.conf | grep -v "^$"

LogFile=/usr/local/zabbix/logs/zabbix_server.log

PidFile=/usr/local/zabbix/logs/zabbix_server.pid

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

DBPort=3306

FpingLocation=/usr/local/sbin/fping

 

[root@server mysql]# mkdir -p /usr/local/zabbix/logs

[root@server mysql]# chown -R zabbix:zabbix /usr/local/zabbix/

 

通过配置文件启动zabbix server

 技术分享

如果报以上错误,是因为没有找到libmysqlclient.so.20文件。

解决方法:先查找libmysqlclient.so.20文件在那个位置

 技术分享

然后在ld.so.conf中加入/usr/local/mysql/lib

[root@server mysql]# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

/usr/local/mysql/lib

[root@server mysql]# ldconfig

启动zabbix_server

 技术分享

添加开机启动脚本

[root@server ~]# cd zabbix-3.2.1/

# cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server

# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd

[root@server zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_server

[root@server zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_agentd

[root@server zabbix-3.2.1]# chkconfig --add zabbix_server

[root@server zabbix-3.2.1]# chkconfig --add zabbix_agentd

[root@server zabbix-3.2.1]# chkconfig zabbix_server on

[root@server zabbix-3.2.1]# chkconfig zabbix_agentd on

修改zabbix开机启动脚本中的zabbix安装目录

vi /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid    #pid文件路径

:wq! #保存退出

vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路径

:wq! #保存退出

[root@server zabbix-3.2.1]# systemctl daemon-reload

[root@server zabbix-3.2.1]# /etc/init.d/zabbix_server stop

Stopping zabbix_server (via systemctl):                    [  OK  ]

[root@server zabbix-3.2.1]# netstat -anpt | grep zabbix

[root@server zabbix-3.2.1]# /etc/init.d/zabbix_server start

Starting zabbix_server (via systemctl):                    [  OK  ]

[root@server zabbix-3.2.1]# netstat -anpt | grep zabbix

tcp  0    0 0.0.0.0:10051   0.0.0.0:*  LISTEN      28106/zabbix_server

设置防火墙规则

[root@server zabbix-3.2.1]# firewall-cmd --permanent --add-port=10051/tcp

success

[root@server zabbix-3.2.1]# firewall-cmd --reload

success

 

配置zabbix web页面

[root@server zabbix-3.2.1]# cp -r frontends/php/ /usr/local/nginx1.10/html/zabbix

[root@server zabbix-3.2.1]# chown -R www:www /usr/local/nginx1.10/html/zabbix/

 

安装web

访问Web界面http://192.168.31.225/zabbix,进行相关web配置,配置完成后使用默认用户admin(密码:zabbix)登陆即可

 技术分享技术分享

 

Php的所有状态必须都是ok

 技术分享

然后一直下一步就可以。

技术分享

 技术分享

用户名:admin,密码:zabbix

登陆页面如下:

 技术分享

至此,zabbix安装完成。

1)显示简体中文界面:

首先确定zabbix开启了中文支持功能:
登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/usr/local/nginx1.10/html/zabbix/),打开 locales.inc.php文件

[root@server include]# pwd

/usr/local/nginx1.10/html/zabbix/include

[root@server include]# vi locales.inc.php

function getLocales() {

return [

                ‘en_GB‘ => [‘name‘ =>_(‘English (en_GB)‘),     ‘display‘ => true],

                ‘en_US‘ => [‘name‘ =>_(‘English (en_US)‘),     ‘display‘ => true],

                ‘bg_BG‘ => [‘name‘ =>_(‘Bulgarian (bg_BG)‘),   ‘display‘ => false],

                ‘zh_CN‘ => [‘name‘ =>_(‘Chinese (zh_CN)‘),     ‘display‘ => true],

                ‘zh_TW‘ => [‘name‘ =>_(‘Chinese (zh_TW)‘),     ‘display‘ => false],

                ‘cs_CZ‘ => [‘name‘ =>_(‘Czech (cs_CZ)‘),       ‘display‘ => true],

                ‘nl_NL‘ => [‘name‘ =>_(‘Dutch (nl_NL)‘),       ‘display‘ => false],

登陆zabbix后,

 技术分享

 技术分享

四、zabbi客户端的安装

192.168.1.106作为被监控端,提供webmysql应用。

安装zabbix,配置zabbix agent

[root@zabbix_agent~]# tar zxf zabbix-3.2.1.tar.gz

[root@zabbix_agent~]# cd zabbix-3.2.1/

 技术分享

修改zabbix开机启动脚本中的zabbix安装目录

vi /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路径

:wq! #保存退出

[root@zabbix-agent zabbix-3.2.1]# systemctl daemon-reload

编辑zabbix_agentd.conf

[root@server1 zabbix-3.2.1]# grep -v "^#" /usr/local/zabbix/etc/zabbix_agentd.conf | grep -v "^$"

PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid

LogFile=/usr/local/zabbix/logs/zabbix_agentd.log

Server=192.168.1.104

ListenPort=10050

ServerActive=192.168.1.104

Hostname=192.168.1.106

Timeout=15

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

 

##

其中ServerServerActive都指定zabbixserverIP地址,不同的是,前者是被动后者是主动。也就是说Server这个配置是用来允许192.168.1.106这个ip来我这取数据。而serverActive192.168.1.104的意思是,客户端主动提交数据给他。

Hostname=XXX,这个定义的名字必须和web页面里面host的名字一样。

启动zabbix_agentd

 技术分享

技术分享

 五、实现zabbix对linux主机的监控

登陆zabbix

 技术分享

 技术分享

 

 

注意:下图中的主机名称要和zabbix_agentd.conf文件中设置的Hostname后面的名称一致!

 技术分享

切换到模板:

 

选择:Template OS Linux

点添加

 技术分享

至此,zabbix监控linux主机设置完成。

 技术分享

过一段时间看被监控的情况。

 

 技术分享

zabbix3.0 server已自带mysql的模板了,只需配置好agent客户端,然后在web端给主机增加模板就行了。

Zabbix_agent客户端操作
1)首先在客户端的mysql里添加权限,即本机使用zabbix账号连接本地的mysql

mysql> grant all on *.* to zabbix@‘localhost‘ identified by "123.abc”;
mysql> flush privileges;
2)在zabbix_agent服务目录下创建.my.cnf 连接文件
        zabbix安装目录是/usr/local/zabbix
[root@server1 ~]# cd /usr/local/zabbix/etc/
[root@server1 ~]# cat .my.cnf 
[client]
user=zabbix
password=123.abc

3)配置mysqlkey文件

这个可以从z服务端zabbix3.2安装时的解压包里拷贝过来

[root@server zabbix-3.2.1]# scp conf/zabbix_agentd/userparameter_mysql.conf root@192.168.1.106:/usr/local/zabbix/etc/zabbix_agentd.conf.d/

然后查看 userparameter_mysql.conf 文件,看到类似 HOME=/var/lib/zabbix 的路径设置,把路径全都替换为 /usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目录路径。
另外,注意userparameter_mysql.conf 文件里的mysql命令路径(提前做好mysql的系统环境变量,以防mysql命令不被系统识别)

如下:

[root@server1 zabbix_agentd.conf.d]# cat userparameter_mysql.conf

# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.

 

# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].

# Key syntax is mysql.status[variable].

UserParameter=mysql.status[*],echo "show global status where Variable_name=‘$1‘;" | HOME=/usr/local/zabbix/etc/ mysql -N | awk ‘{print $$2}‘

 

# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].

# Key syntax is mysql.size[<database>,<table>,<type>].

# Database may be a database name or "all". Default is "all".

# Table may be a table name or "all". Default is "all".

# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".

# Database is mandatory if a table is specified. Type may be specified always.

# Returns value in bytes.

# ‘sum‘ on data_length or index_length alone needed when we are getting this information for whole database instead of a single table

UserParameter=mysql.size[*],bash -c ‘echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/usr/local/zabbix/etc/ mysql -N‘

UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/ mysqladmin ping | grep -c alive

UserParameter=mysql.version,mysql -V

4)重启zabbix_agentd

5)zabbix_server端进行命令测试:

[root@server zabbix-3.2.1]# /usr/local/zabbix/bin/zabbix_get -s 192.168.1.106 -p 10050 -k "mysql.status[Uptime]"

11939

在监控界面增加主机对应的mysql模板就可以了。

########如果出现一下错误:

[root@server zabbix]# /usr/local/zabbix/bin/zabbix_get -s 192.168.31.250 -p 10050 -k "mysql.status[Uptime]"

sh: mysql: command not found

解决方法:

userparameter_mysql.conf中关于mysql命令前面添加绝对路径即可。

 


本文出自 “清风与你” 博客,谢绝转载!

zabbix监控系统