每个模块工作职责:
Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
Database Storage:用户存储所有配置信息,以及存储由Zabbix Server收集到的数据;
Web Interface: Zabbix的GUI接口,通常与Server运行在同一台主机上;
Zabbix Proxy:常用于分布监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)
Zabbix Agent:部署在被监控主机上,负责收集本地数据发往Server端或Proxy端;
Zabbix监控原理:
Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)
常见架构:
Server/Agent模式:
zabbix-agent模式
Proxy代理模式:
你有可能需要
docker安装zabbix-server
官方安装指导
linux中编译安装Apache、PHP、MySQL
Linux下彻底卸载一个软件
Mysql 忘记root密码决方法
配置文件详解
linux安装gcc:yum install gcc
给zabbix用户添加zabbix_proxy库权限
GRANT ALL PRIVILEGES ON zabbix_proxy.* TO zabbix IDENTIFIED BY 'zabbix';
一.环境准备
本次使用
OS:CentOS 7.4 x86_64
Zabbix版本:3.4
MySQL版本:5.6
预计安装
- 一台zabbix-server + agent(收集数据发给server )
- 多台zabbix-proxy + agent(多台agent发送数据给proxy再给server)
- 多台zabbix-agent(收集数据发给server )
我有尝试安装最新版,只需要把获取的包版本更换就行。都可执行
1、关闭防火墙等
[root@VM_0_13_centos web]# systemctl disable firewalld && systemctl stop firewalld
[root@VM_0_13_centos web]# setenforce 0 #零时关闭selinux 无需重启 可将这个命令和下面这个一起执行 下次也不用管了
[root@VM_0_13_centos web]# vi /etc/selinux/config
把SELINUXTYPE=targeted 改成 SELINUX=disabled #永久关闭selinux状态 需要重启
[root@VM_0_13_centos web]# chkconfig iptables off #永久关闭iptables状态centos7的我没找到这个
[root@VM_0_13_centos web]# systemctl disable firewalld.service #禁止firewall开机启动centos7的我执行了这个命令
其实不关闭也可以只是会遇到很多问题,比如要单独去开放用到的一些端口,那样用起来很麻烦。
防火墙关闭参考文章:
iptables开启和关闭
SELinux开启和关闭
CentOS 6和CentOS 7防火墙的关闭
2、安装zabbix-server
192.168.1.1
1、下载zabbix的rpm仓库包
[root@VM_0_13_centos]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm #可以去去链接找更新的包
2、安装相关套件zabbix-server-mysql和web-mysql
[root@VM_0_13_centos]# yum install zabbix-server-mysql zabbix-web-mysql
3、安装并且启动mysql5.6及初始化数据库信息
[root@VM_0_13_centos]# rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm
[root@VM_0_13_centos]# yum install -y mysql-community-server
[root@VM_0_13_centos]# systemctl start mysqld
[root@VM_0_13_centos]# /sbin/chkconfig mysqld on #开机启动
[root@VM_0_13_centos]# mysql_secure_installation #初始化数据库信息,直接回车会让设置root密码,根据提示一步一步完成,最后一步y就好了。
你可能需要Mysql 忘记root密码决方法
4、创建zabbix数据库,创建zabbix账号
[root@VM_0_13_centos]# mysql -h127.0.0.1 -uroot -p
....#直接回车原始不需要密码,如已有忘记了看顶部的重置密码教程
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> flush privileges; #重新加载权限表
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
5、导入默认的zabbix数据库信息
[root@VM_0_13_centos]# zcat /usr/share/doc/zabbix-server-mysql-3.4.10/create.sql.gz | mysql zabbix -uzabbix -pzabbix #zabbix-server-mysql-4.0.0/create.sql.gz需要进这个路径查看一下是不是不一定一样 cd /usr/share/doc/
上面的命令一定要等到他自动执行完
6、修改zabbix_server.conf的配置文件
[root@VM_0_13_centos]# grep ^DB /etc/zabbix/zabbix_server.conf
DBHost=localhost #如果不是本机就填写目标ip,前提你也需要在目标主机执行第4步、创建zabbix数据库
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
上面如果没出现这么多条进路径中改配置vim /etc/zabbix/zabbix_server.conf
有两个默认被注释了
7、修改配置文件/etc/httpd/conf.d/zabbix.conf,时区改成 Asia/Shanghai
[root@VM_0_13_centos]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
8、启动apache/zabbix-server服务并设置为开机启动
[root@VM_0_13_centos]# systemctl start httpd
[root@VM_0_13_centos]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@VM_0_13_centos]# netstat -an |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 52 172.17.0.13:22 183.192.94.180:10928 ESTABLISHED
[root@VM_0_13_centos]# systemctl start zabbix-server
[root@VM_0_13_centos]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
访问:localhost/zabbix/
按步提示执行即可,HostName配置成 Zabbix server
端口10051
完成登录,默认用户:Admin ,密码:zabbix
如果以后需要更改配置就在这里/etc/zabbix/web/zabbix.conf.php
ps:第二次安装 Database host填写 localhost 未遇到以下两个错误。
可能遇到的错误一
连接mysql遇到无法连接,使用navicat 进行连接报错 1130
连接被拒绝,最后了解到出现这种情况是因为mysql服务器出于安全考虑,默认只允许本地登录数据库服务器,解决办法参考
可能遇到的错误二
拒绝zabbix 用户访问zabbix 库,可连接mysql执行GRANT ALL PRIVILEGES ON zabbix.* TO zabbix IDENTIFIED BY 'zabbix';
,添加访问权限。原文地址
设置中文方法
ps:不知道是哪里操作不对,还是官方省略了一些简单步骤,我按照官方的步骤执行到创建初始数据库就不能继续了
常见问题:
当使用的DB 并不安装在本机内
修改/etc/zabbix/zabbix_server.conf
:
DBHost=**192.168.11.xxx**
DBUser=zabbix
DBPassword=**zabbix_password**
#DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
:
web数据库配置
修改/usr/share/zabbix/conf/zabbix.conf.php
:
$DB["TYPE"] = 'MYSQL';
$DB["SERVER"] = '**192.168.11.xxx**';
$DB["PORT"] = '3306';
$DB["DATABASE"] = 'zabbix';
$DB["USER"] = 'zabbix';
$DB["PASSWORD"] = '**zabbix_password**';
:
连接mysql报错
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决办法:执行/etc/init.d/mysqld start
,启动mysql
1、关闭防火墙等
[root@VM_0_13_centos web]# systemctl disable firewalld && systemctl stop firewalld
[root@VM_0_13_centos web]# setenforce 0 #零时关闭selinux 无需重启 可将这个命令和下面这个一起执行 下次也不用管了
[root@VM_0_13_centos web]# vi /etc/selinux/config
把SELINUXTYPE=targeted 改成 SELINUX=disabled #永久关闭selinux状态 需要重启
[root@VM_0_13_centos web]# chkconfig iptables off #永久关闭iptables状态centos7的我没找到这个
[root@VM_0_13_centos web]# systemctl disable firewalld.service #禁止firewall开机启动centos7的我执行了这个命令
其实不关闭也可以只是会遇到很多问题,比如要单独去开放用到的一些端口,那样用起来很麻烦。
防火墙关闭参考文章:
iptables开启和关闭
SELinux开启和关闭
CentOS 6和CentOS 7防火墙的关闭
2、Proxy 安装程序
192.168.1.2
1、安装mariadb
首先需要安装mariadb-server
[root@VM_0_13_centos web]# yum install -y mariadb-server
启动服务
[root@VM_0_13_centos web]# systemctl start mariadb.service
添加到开机启动
[root@VM_0_13_centos web]# systemctl enable mariadb.service
2、获取/zabbix-proxy安装包
[root@VM_0_13_centos web]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-proxy-mysql-3.4.1-1.el7.x86_64.rpm
原文作者说 因为存在一些依赖关系,不能直接rpm -ivh,所有必须用yum rpm包的形式进行安装,那我们就照做
3、使用yum安装zabbix-proxy
[root@VM_0_13_centos web]# yum install zabbix-proxy-mysql-3.4.1-1.el7.x86_64.rpm
部分主机遇到以下报错
Error: Package: zabbix-proxy-mysql-4.0.0-1.alpha1.el7.x86_64 (/zabbix-proxy-mysql-4.0.0-1.alpha1.el7.x86_64)
Requires: fping
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
提示缺少 fping,解决办法:
[root@VM_0_13_centos web]# rpm -ivh https://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
[root@VM_0_13_centos web]# yum install -y fping
4、创建数据库
[root@VM_0_13_centos web]# mysql
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin; #创建zabbix_proxy库
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix'; #创建zabbix_proxy用户并把zabbix_proxy库的所有权限给他密码是zabbix
MariaDB [(none)]> flush privileges; #重新加载权限表
MariaDB [(none)]> quit #退出
某些服务器遇到了报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决办法:再次启动服务systemctl start mariadb.service
5、导入zabbix-proxy默认数据
[root@VM_0_13_centos web]# zcat /usr/share/doc/zabbix-proxy-mysql-3.4.1/schema.sql.gz | mysql zabbix_proxy -uzabbix -pzabbix
6、配置zabbix_proxy
[root@VM_0_13_centos web]# vim /etc/zabbix/zabbix_proxy.conf
改以下配置:
Server=192.168.1.1 #同步指向的server端的IP,非本地IP。可以是server端的主机域名,但要确保proxy端解析server的域名,并且网络可达
Hostname=Zabbix proxy #proxy本地的名称,此名称需要与将来在server端的WEB页面上的代理程序名称一致,名称自定义
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy #与上面mysql配置对应
DBUser=zabbix #与上面mysql配置对应
DBPassword=zabbix #与上面mysql配置对应
DBPort=3306 #与上面mysql配置对应
ConfigFrequency=120 #主动去server端去拉去配置更新的频率120秒一次
DataSenderFrequency=60 #发送采集的监控数据到服务器端,默认是1秒,我们一分钟发送一次
#roxyLocalBuffer=0 #代理配置文件中的ProxyLocalBuffer和ProxyOfflineBuffer参数控制数据在本地保存多长时间。
StartTrappers=10
StartSNMPTrapper=1
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log #默认没有这个路径可创建或注释
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
7、启动zabbix-proxy
[root@VM_0_13_centos web]# service zabbix-proxy start
[root@VM_0_13_centos web]# chkconfig zabbix-proxy on
如果你出现以下报错,那是你没执行关闭防火墙的步骤,没关selinux
Job for zabbix-proxy.service failed because a configured resource limit was exceeded. See "systemctl status zabbix-proxy.service" and "journalctl -xe" for details.
验证日志中出现报错:cannot set resource limit: [13] Permission denied
8、验证日志
[root@VM_0_13_centos web]# tailf /var/log/zabbix/zabbix_proxy.log
遗留问题以:上日志 报错failed to update local proxy configuration copy: unexpected field "hosts.available"
导致server不能监控到本机代理
1、关闭防火墙等
[root@VM_0_13_centos web]# systemctl disable firewalld && systemctl stop firewalld
[root@VM_0_13_centos web]# setenforce 0 #零时关闭selinux 无需重启 可将这个命令和下面这个一起执行 下次也不用管了
[root@VM_0_13_centos web]# vi /etc/selinux/config
把SELINUXTYPE=targeted 改成 SELINUX=disabled #永久关闭selinux状态 需要重启
[root@VM_0_13_centos web]# chkconfig iptables off #永久关闭iptables状态centos7的我没找到这个
[root@VM_0_13_centos web]# systemctl disable firewalld.service #禁止firewall开机启动centos7的我执行了这个命令
其实不关闭也可以只是会遇到很多问题,比如要单独去开放用到的一些端口,那样用起来很麻烦。
防火墙关闭参考文章:
iptables开启和关闭
SELinux开启和关闭
CentOS 6和CentOS 7防火墙的关闭
2、安装zabbix_agent
192.168.1.3
1、获取zabbix_agent安装包
[root@VM_0_13_centos web]# wget http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-agent-4.0.0-1.alpha1.el7.x86_64.rpm
2、开始安装
[root@VM_0_13_centos web]# rpm -ivh zabbix-agent-4.0.0-1.alpha1.el7.x86_64.rpm
3、配置agentd.conf
[root@VM_0_13_centos web]# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.2 #zabbix-server地址
ServerActive=192.168.1.2 #zabbix-proxy地址
Hostname=Zabbix proxy #对应Zabbix proxy
RefreshActiveChecks=60
MaxLinesPerSecond=800
EnableRemoteCommands=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
UserParameter=get_txt,bash /etc/zabbix/scripts/get_txt.sh
4、添加到services
[root@VM_0_13_centos web]# vi /etc/services
在文件最后面添加如下的内容:
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
5、启动zabbix-agent并添加开机自启
[root@VM_0_13_centos web]# service zabbix-agent start
[root@VM_0_13_centos web]# chkconfig zabbix-agent on
原理:
zabbix_agent收集数据
zabbix-proxy获取zabbix_agent的数据上发给zabbix_server
zabbix_server 获取数据后展示