首页 > 代码库 > 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 #生成php的pid文件
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作为被监控端,提供web和mysql应用。
安装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/
##:
其中Server和ServerActive都指定zabbixserver的IP地址,不同的是,前者是被动后者是主动。也就是说Server这个配置是用来允许192.168.1.106这个ip来我这取数据。而serverActive的192.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)配置mysql的key文件
这个可以从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监控系统