zabbix server+agent+proxy搭建性能监控平台

时间:2021-04-26 19:42:21

这是新找到了配置文件配置方法但未尝试

每个模块工作职责:

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 server+agent+proxy搭建性能监控平台

zabbix-agent模式

Proxy代理模式:

zabbix server+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/

zabbix server+agent+proxy搭建性能监控平台

zabbix server+agent+proxy搭建性能监控平台

按步提示执行即可,HostName配置成 Zabbix server 端口10051

完成登录,默认用户:Admin ,密码:zabbix

zabbix server+agent+proxy搭建性能监控平台

如果以后需要更改配置就在这里/etc/zabbix/web/zabbix.conf.php

ps:第二次安装 Database host填写 localhost 未遇到以下两个错误。

可能遇到的错误一

连接mysql遇到无法连接,使用navicat 进行连接报错 1130连接被拒绝,最后了解到出现这种情况是因为mysql服务器出于安全考虑,默认只允许本地登录数据库服务器,解决办法参考

zabbix server+agent+proxy搭建性能监控平台

可能遇到的错误二

拒绝zabbix 用户访问zabbix 库,可连接mysql执行GRANT ALL PRIVILEGES ON zabbix.* TO zabbix IDENTIFIED BY 'zabbix';,添加访问权限。原文地址

zabbix server+agent+proxy搭建性能监控平台

设置中文方法

zabbix server+agent+proxy搭建性能监控平台

官方安装指导

参考一

参考二

参考三

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 获取数据后展示