zabbix
目录
- I.
zabbix
简介 - II.
Zabbix
部署前的LNMP
环境的搭建过程 - III.监控系统
Zabbix-3.0.3
的安装 - IV.
zabbix
客户端的安装
I.zabbix
简介
zabbix
是完全开源的工具,整合了cacti
和nagios
等特性
附:SNMP
(udp
161
udp
162
)
众多网络工具都支持此协议,比如常见路由交换,常见OS
其既可以做管理端也可以做被管理端
snmp
协议大致有3个版本分别是v1
v2
v3
无论是v1
和 v2
的安全性是比较差的,因为传输是明文的,V3
的认证密码用MD5
/SHA
摘要算法加密
很多工具支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的。所以很多工具都是控制端和agent架构,他们有专属的agent
i.Zabbix
的主要功能
- 具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)
- 支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)
- 支持分布式,能集中展示、管理分布式的监控点,扩展性强
server
提供通用接口(api
功能),可以自己开发完善各类监控(根据相关接口编写程序实现),编写插件容易,可以自定义监控项,报警级别的设置。- 数据收集,支持
snmp
(包括trapping
andpolling
),IPMI
,JMX
,SSH
,TELNET
; - 自定义的检测;自定义收集数据的频率;
ii.服务器/代理和客户端模式
- 灵活的触发器;可以定义非常灵活的问题阈值,称为触发器;
- 高可定制的报警;发送通知,可定制的报警升级,收件人,媒体类型。
CPU
负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等等。 - 硬件监控:
Zabbix
IPMI
Interface
- 系统监控:
ZabbixAgent
Interface
Java
监控:Zabbix
JMX
Interface
- 网络设备监控:
Zabbix
SNMP
Interface
- 应用服务监控:
Zabbix
Agent
UserParameter
MySQL
数据库监控:percona-monitoring-plulgins
URL
监控:Zabbix Web
监控
iii.zabbix
重要组件说明
1)zabbix server
:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;
2)database storage
:专用于存储所有配置信息,以及由 zabbix 收集的数据;
3)web interface
:zabbix
的GUI
接口;
4)proxy
:可选组件,常用于监控节点很多的分布式环境中,代理server
收集部分数据转发到server
,可以减轻 server 的压力;
5)agent
:部署在被监控的主机上,负责收集主机本地数据如 cpu
、内存
、数据库
等数据发往server
端或proxy
端;
另外,zabbix server
、proxy
、agent
都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。
一个监控系统运行的大概的流程是这样的:
agentd
需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server
端,zabbix server
将数据存储到数据库中,zabbix web
根据数据在前端进行展现和绘图。这里agentd
收集数据分为主动和被动两种模式:
- 主动:
agent
请求server
获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server
/proxy
- 被动:
server
向agent
请求获取监控项的数据,agent
返回数据。
zabbix
常用的监控架构平台
1、server-agentd
模式:
这个是最简单的架构了,常用于监控主机比较少的情况下。
2、server-proxy-agentd
模式:
这个常用于比较多的机器,使用proxy
进行分布式监控,有效的减轻server
端的压力。
zabbix
的系统架构:
Zabbix
是一个基于Web
界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。借助Zabbix
,可以很轻松地减轻运维人员们繁重的服务器管理任务,实现业务系统的持续运行。下面会逐步介绍Zabbix
分布式监控系统的部署及使用
配置好IP
、DNS
、网关
,确保使用远程连接工具能够连接服务器
zabbix
监控服务器:192.168.130.76
#zabbix的服务端(若要监控本机,则需要配置本机的zabbix
agent
)Zabbix
agent
被监控主机:192.168.130.78
#zabbix的客户端(被监控端,需要配置Zabbix
agent
II.Zabbix
部署前的LNMP
环境的搭建过程
安装编译工具及库文件(zabbix server
)
[root@mysqla ~]# yum -y install make apr* autoconf automake curl-devel gcc gcc-c++ openssl openssl-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-devel freetype-devel
i.MySQL
安装参见Memcache
文档
ii.安装nginx
解压zlib
[root@mysqla ~]# tar zxf zlib-1.2.8.tar.gz
说明:不需要编译,只需要解压就行。
解压pcre
[root@mysqla ~]# tar zxf pcre-8.39.tar.gz
说明:不需要编译,只需要解压就行。
[root@mysqla ~]# groupaddwww
[root@mysqla ~]# useradd -g www www -s /sbin/nologin
下载nginx的源码包:http://nginx.org/download
解压源码包
[root@mysqla ~]# tar zxf nginx-1.10.2.tar.gz
[root@mysqla ~]# cd nginx-1.10.2/
[root@mysqla nginx-1.10.2]# ./configure --prefix=/usr/local/nginx1.10 --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/root/pcre-8.39 --with-zlib=/root/zlib-1.2.8 --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www
[root@mysqla nginx-1.10.2]# make&& make install
[root@mysqla ~]# ln -s /usr/local/nginx1.10/sbin/nginx /usr/local/sbin/
[root@mysqla ~]# nginx
[root@mysqla ~]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11598/nginx: master
[root@mysqla ~]# firewall-cmd --permanent --add-port=80/tcp
success
[root@mysqla ~]# firewall-cmd --reload
success
启动后可以再浏览器中打开页面,会显示nginx默认页面。
iii.安装php
[root@mysqla ~]# tar zxf libmcrypt-2.5.7.tar.gz
[root@mysqla ~]# cd libmcrypt-2.5.7/
[root@mysqla libmcrypt-2.5.7]# ./configure && make && make install
# ln -s /usr/local/mysql/lib/libmysqlclient.so.20.3.0 /usr/local/mysql/lib/libmysqlclient_r.so
[root@mysqla ~]# tar zxf php-5.6.27.tar.gz
[root@mysqla php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl
[root@mysqla php-5.6.27]# make&& make install
[root@mysqla php-5.6.27]# cp php.ini-production /etc/php.ini
编辑配置文件
/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 = -1
mbstring.func_overload = 0
创建
php-fpm
服务启动脚本
[root@mysqla php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@mysqla php-5.6.27]# chmod +x /etc/init.d/php-fpm
[root@mysqla php-5.6.27]# chkconfig --add php-fpm
[root@mysqla php-5.6.27]# chkconfig php-fpm on
提供
php-fpm
配置文件并编辑
#cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@mysqla php-5.6.27]# vi /usr/local/php5.6/etc/php-fpm.conf
修改内容如下
pid = run/php-fpm.pid
user = www
group = www
listen =127.0.0.1:9000
pm.max_children = 300
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers =50
启动
php-fpm
服务
[root@phpserver ~]# service php-fpm start
Starting php-fpm done
[root@mysqla php-5.6.27]# netstat -anpt | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 10937/php-fpm: mast
配置
nginx
支持php
[root@mysqla ~]# cat /usr/local/nginx1.10/conf/nginx.conf
user www www;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /status {
stub_status on;
}
}
}
[root@mysqla conf]# nginx -t
nginx: the configuration file /usr/local/nginx1.10/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx1.10/conf/nginx.conf test is successful
[root@mysqla conf]# killall -s HUP nginx
iv.测试LNMP
进入nginx
默认的网页根目录,创建.php
的测试页
[root@mysqla ~]# cat /usr/local/nginx1.10/html/test1.php
<?php
phpinfo()
?>
[root@mysqla ~]# cat /usr/local/nginx1.10/html/test2.php
<?php
$link=mysql_connect('localhost','root','123.abc');
if($link) echo "ok";
mysql_close();
?>
访问结果:
至此,LNMP
部署完毕。
III.监控系统Zabbix-3.0.3
的安装
zabbix-server端的操作
zabbix服务器端要提前安装好LNMP环境(mysql,nginx,php5的安装目录均是/usr/local)
创建Zabbix运行的用户:
[root@mysqla ~]#groupadd zabbix
[root@mysqla ~]#useradd -g zabbix zabbix
安装libcurl和net-snmp:
[root@mysqla ~]# yum -y install net-snmp net-snmp-develcurl-develjava-1.8.0-openjdk java-1.8.0-openjdk-develOpenIPMI-devel libssh2-devel
注:OpenIPMI-devel
和libssh2-devel
软件包使用centos在线yum软件源安装
安装Fping:
[root@mysqla ~]# tar zxf fping-3.12.tar.gz
[root@mysqla ~]# cd fping-3.12/
[root@mysqla fping-3.12]# ./configure && make && make install
[root@mysqla fping-3.12]# chown root:zabbix /usr/local/sbin/fping
[root@mysqla fping-3.12]# chmod 4710 /usr/local/sbin/fping
安装Zabbix Server:
[root@mysqla ~]# tar zxf zabbix-3.2.1.tar.gz
[root@mysqla ~]# cd zabbix-3.2.1/
[root@mysqla zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi
注意:编译时最好带上--enable-java
这个参数,方便后续监控tomcat
程序所用。
--with-ssh2
是不需要在客户端服务器上面安装Zabbix
agent
,如果需要使用ssh
检查,需要在编译的时候加上这项,最低需要libssh2 1.0.0
版本,需要安装ssh
开发包
--with-openipmi
用户可以利用 IPMI
监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等。
如果添加了--enable-proxy
, 那么会生成get
和sender
两条命令. 如下, 用于接收agent
发生过来的信息, 同时发送给server
.
[root@mysqla zabbix-3.2.1]#make && make install
添加系统软连接
[root@mysqla ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
[root@mysqla ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
i.Zabbix
Server
配置与启动
1.创建Zabbix
数据库和MySQL
用户
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.01 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected, 1 warning (0.00 sec)
2.导入Zabbix
初始数据
切换到
zabbix
的解压目录下
[root@mysqla zabbix-3.2.1]# cd database/mysql/
[root@mysqla mysql]# pwd
/root/zabbix-3.2.1/database/mysql
[root@mysqla mysql]# ls
data.sql images.sql schema.sql
进行
zabbix
初始数据导入
[root@mysqla mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < schema.sql
[root@mysqla mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < images.sql
[root@mysqla mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < data.sql
3.编辑/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
#mkdir -p /usr/local/zabbix/logs
#chown -R zabbix:zabbix /usr/local/zabbix
4.启动Zabbix
Server
# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
/usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
解决方法
在ld.so.conf
中加入/usr/local/mysql/lib
[root@mysqla zabbix-3.2.1]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/mysql/lib
/usr/local/lib
[root@mysqla zabbix-3.2.1]# ldconfig
再次执行
zabbix_server
启动
# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
[root@mysqla init.d]# netstat -anpt |grep zabbix_server
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 27199/zabbix_server
5.添加开机启动脚本
[root@mysqla ~]# 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@mysqla zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_server
[root@mysqla zabbix-3.2.1]# chmod +x /etc/rc.d/init.d/zabbix_agentd
[root@mysqla zabbix-3.2.1]# chkconfig --add zabbix_server
[root@mysqla zabbix-3.2.1]# chkconfig --add zabbix_agentd
[root@mysqla zabbix-3.2.1]# chkconfig zabbix_server on
[root@mysqla 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@mysqla zabbix-3.2.1]# systemctl daemon-reload
[root@mysqla zabbix-3.2.1]# /etc/init.d/zabbix_server stop
Stopping zabbix_server (via systemctl): [ OK ]
[root@mysqla zabbix-3.2.1]# netstat -anpt | grep zabbix
[root@mysqla zabbix-3.2.1]# /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl): [ OK ]
[root@mysqla zabbix-3.2.1]# netstat -anpt | grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 28106/zabbix_server
6.设置防火墙规则
[root@mysqla zabbix-3.2.1]# firewall-cmd --permanent --add-port=10051/tcp
success
[root@mysqla zabbix-3.2.1]# firewall-cmd --reload
success
ii.配置zabbix
web
页面
1.在安装目录将frontends
拷贝到指定的web root
[root@mysqla ~]# cd /root/zabbix-3.2.1/
[root@mysqla zabbix-3.2.1]# cp -r frontends/php/ /usr/local/nginx1.10/html/zabbix
[root@mysqla zabbix-3.2.1]# chown -R www:www /usr/local/nginx1.10/html/zabbix/
注:/usr/local/nginx/html
为Nginx
默认站点目录 www
为Nginx
运行账户
注:PHP
需要至少开启扩展:
gd
bcmath
ctype
libXML
xmlreader
xmlwriter
session
sockets
mbstring
gettext
mysql
如下,查看是否包括了上面所提到的扩展模块
[root@mysqla ~]# /usr/local/php5.6/bin/php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
2.安装web
访问Web界面http://192.168.31.225/zabbix
,进行相关web
配置,配置完成后使用默认用户admin
(密码:zabbix
)登陆即可
进入ZABBIX
WEB
安装画面
进入ZABBIX
检测画面
对数据库进行设置,这里如果数据库在本地的话端口可以使用0
点击Next step 一下步进行zabbix server 细节的设置 这一步可以默认
点击安装,安装完成后 如果没有错误就会进入完成画面 完成画面有设置文件放在服务器的位置,请记下来
点击Finish
完成
使用Admin
用默认密码 zabbix
登录
登录后画面如下
至此ZABBIX
的基础安装完成
3.显示简体中文界面
在安装数据库时已经将zabbix
库设置了utf-8
字符
首先确定zabbix
开启了中文支持功能:
登录到zabbix
服务器的数据目录下(前面部署的zabbix
数据目录是/usr/local/nginx1.10/html/zabbix/
),打开 locales.inc.php
文件
[root@mysqla include]# pwd
/usr/local/nginx1.10/html/zabbix/include
[root@mysqla 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
后,点击右上角的“用户”图标,将语言设置为“中文”:
按照如图选择Chinese
(zh_CN
),点击update
4.解决zabbix
绘图中出现中文乱码问题
a.从
windows
下控制面板->字体->选择一种中文字库例如楷体
b.把它拷贝到
zabbix
的web
端的fonts
目录下例
如:/usr/local/nginx1.10/html/zabbix/fonts/
,并且把TTF
后缀改为ttf
[root@mysqla fonts]# pwd
/usr/local/nginx1.10/html/zabbix/fonts
[root@mysqla fonts]# ls
DejaVuSans.ttf simkai.ttf
并且将之前的字体文件DejaVuSans.ttf
移动到别处
c.然后,接着修改代码
include/defines.inc.php
文件中的字体配置,将里面关于字体设置从DejaVuSans
替换成simkai
vi
替换技巧:%s/DejaVuSans/simkai
其中:simkai
为字库名字,不包含ttf后缀
# cd/usr/local/nginx1.10/html/zabbix
# vi include/defines.inc.php
在vi
编辑器的末行模式下输入%s/DejaVuSans/simkai
这样,修改后,zabbix
监控图形中的中文字就不会出现乱码了
IV.zabbix
客户端的安装
既然要监控我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装agent
,安装agent
比较简单,我们也是按照安装server
的流程,下载软件包,在编译的时候,我们只选择agent
192.168.31.250
作为zabbix
的被监控端,提供web
和mysql
应用
i.安装Zabbix,配置Zabbix agent
[root@server1 ~]# tar zxf zabbix-3.2.1.tar.gz
[root@server1 ~]# cd zabbix-3.2.1/
[root@server1 zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@server1 zabbix-3.2.1]# make&& make install
[root@server1 zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@server1 zabbix-3.2.1]# mkdir -p /usr/local/zabbix/logs
[root@server1 zabbix-3.2.1]# groupadd zabbix
[root@server1 zabbix-3.2.1]# useradd -g zabbix zabbix
[root@server1 zabbix-3.2.1]# chown -R zabbix:zabbix /usr/local/zabbix/
配置开机自动启动
[root@server1 ~]# chkconfig --add zabbix_agentd
[root@server1 ~]# chkconfig zabbix_agentd on
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@server1 zabbix-3.2.1]# systemctl daemon-reload
2.编辑zabbix_agentd.conf
[root@server1 zabbix-3.2.1]# vi /usr/local/zabbix/etc/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.31.225
ListenPort=10050
ServerActive=192.168.31.225
Hostname=192.168.31.250
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
注:
其中Server
和ServerActive
都指定zabbixserver
的IP地址
,不同的是,前者是被动后者是主动。也就是说Server
这个配置是用来允许192.168.31.225
这个ip
来我这取数据。而serverActive
的192.168.31.225
的意思是,客户端主动提交数据给他。
Hostname=XXX
,这个定义的名字必须和web
页面里面host
的名字一样。
3.启动zabbix_agentd
[root@server1 ~]# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl): [ OK ]
[root@server1 ~]# netstat -anpt | grep zabbix_agentd
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 12926/zabbix_agentd
[root@server1 ~]# firewall-cmd --permanent --add-port=10050/tcp
success
[root@server1 ~]# firewall-cmd --reload
success
到此,zabbix3.2.1
监控系统的基本环境安装完成。
ii.实现zabbix
添加监测项
添加对Linux主机的监控
在浏览器中打开:http://192.168.31.225/zabbix
登录zabbix
,先在“配置”-“主机”里添加主机监控,监控os
资源:内存
,cpu
,io
,负载
,带宽
等.
1.登录zabbix
,先在“配置”-“主机”里单击”创建主机”
2.点击”主机”标签,填写相关信息
注意:下图中的“主机名称”要和zabbix_agentd.conf
文件中设置的Hostname
后面的名称一致!
- 主机名称:
192.168.31.250
- 群组:
Linux servers
agent
代理程序接口ip
:192.168.21.128
- 已启用:勾选
- 其它选项默认即可
3.切换到模板
选择
选择:Template OS Linux
点添加
添加
至此,Zabbix
监控Linux
主机设置完成。
4.监控结果
配置过一段时间后,观察下监控图效果出来了没
zabbix3.0 server
已自带mysql
的模板了,只需配置好agent
客户端,然后在web
端给主机增加模板就行了。
iii.Zabbix_agent
客户端操作
1.mysql
授权
首先在客户端的mysql
里添加权限,即本机使用zabbix
账号连接本地的mysql
mysql> grant all on *.* to zabbix@'localhost' identified by "123456”;
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=123456
注意:
如果在数据库grant
授权时,针对的是localhost
,这个.my.cnf
里面就不用加host
参数了【如上配置】
但如果grant
授权时针对的是本机的ip
(如192.168.31.250
),那么在.my.cnf
文件里就要加上host
参数进行指定了
即在.my.cnf
文件就要加上
host=192.168.31.250
socket= /usr/local/mysql/mysql.sock
user=zabbix
password=123456
3.配置MySQL
的key
文件
这个可以从zabbix3.2
安装时的解压包里拷贝过来
从zabbix_server
服务端安装时解压目录
/root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf
拷贝到zabbix_agent
客户端上的/usr/local/zabbix/etc/zabbix_agentd.conf.d/
目录下
[root@server1 ~]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@server1 zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
# cp /root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf ./
[root@server1 zabbix_agentd.conf.d]# ls userparameter_mysql.conf
userparameter_mysql.conf
然后查看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
修改内容
HOME=/usr/local/zabbix/etc/ mysql -N | awk '{print $$2}'
HOME=/usr/local/zabbix/etc/ mysql -N'
HOME=/usr/local/zabbix/etc/ mysqladmin ping | grep -c alive
4.重启zabbix_agent
按照上面修改完之后检查一下,然后重启zabbix_agent
[root@server1 ~]# pkill -9 zabbix_agent
[root@server1 ~]# netstat -anpt | grep zabbix_agent
[root@server1 ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@server1 ~]# netstat -anpt | grep zabbix_agent
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 15400/zabbix_agentd
接着在zabbix_server
服务端进行命令行测试[下面的192.168.31.250
是客户端的ip
]
[root@mysqla ~]#/usr/local/zabbix/bin/zabbix_get -s 192.168.31.250 -p 10050 -k "mysql.status[Uptime]"
12593
[root@mysqla ~]#
如果出现类似这一串key
的数字,就说明配置ok
,服务端能监控到客户端的mysql
数据了!
成功啦,之后在监控界面增加主机对应的MySQL
模板就ok
了。
注:zabbix_get
命令介绍
参数说明:
-s --host
:指定客户端主机名或者IP
-p --port
:客户端端口,默认10050
-I --source-address
:指定源IP
,写上zabbix server
的ip
地址即可,一般留空,服务器如果有多ip
的时候,你指定一个。-k --key
:你想获取的key
zabbix_get
获取数据
获取负载
# zabbix_get -s 192.168.31.250 -p 10050 -k "system.cpu.load[all,avg15]"
获取主机名
# zabbix_get -s 192.168.31.250 -p 10050 -k "system.hostname"
5.登录zabbix监控界面,在“配置”-“模板”里可以看到自带的mysql监控模板
在相应主机监控配置里添加mysql
的监控模版(zabbix
自带的)即可。
下面是mysql
监控项的效果图
【1】监控mysql
的带宽:在zabbix
前端可以实时查看mysql
发送接收的字节数。其中bytes received
表示从所有客户端接收到的字节数,bytes sent
表示发送给所有客户端的字节数。
【2】监控mysql
的操作状态:在zabbix
前端可以实时查看各种SQL
语句每秒钟的操作次数。