参考https://blog.csdn.net/ygqygq2/article/details/60766393#4-%E5%AF%BC%E5%85%A5%E7%9B%91%E6%8E%A7%E6%A8%A1%E6%9D%BF
https://www.zabbix.com/download?zabbix=3.4&os_distribution=centos&os_version=7&db=MySQL
https://www.zabbix.com/download?zabbix=3
.4&os_distribution=centos&os_version=7&db=PostgreSQLhttps://www.zabbix.com/documentation/3.4/manual/installation/install#installing_frontend
RedHat/CentOS7(x86_64) http://cavaliercoder.com/libzbxpgsql/download/
wget http://cdn.cavaliercoder.com/libzbxpgsql/yum/zabbix32/rhel/7/x86_64/libzbxpgsql-1.1.0-1.el7.x86_64.rpm
1、安装 zabbix
[root@vlnx107001 ~]# wget https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
或
[root@vlnx107001 ~]# rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@vlnx107001 ~]# yum install zabbix-server-pgsql zabbix-web-pgsql zabbix-agent -y
2、创建用户和初始化库
[postgres@vlnx107001 ~]$ createuser --pwprompt zabbix
密码:zabbix
[postgres@vlnx107001 ~]$ createdb -O zabbix zabbix
#配置 pg白名单 并重新加载
[postgres@vlnx107001 ~]$ /usr/pgsql-9.6/bin/pg_ctl -D /var/lib/pgsql/9.6/data/ reload
#导入初始架构和数据。
[root@vlnx107001 ~]# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix /usr/pgsql-9.6/bin/psql zabbix
3、为Zabbix服务器配置服务器,编辑配置文件
[root@vlnx107001 conf.d]# vim /etc/zabbix/zabbix_server.conf
DBPassword=zabbix
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
** 优化
StartPollers=100
首先把这个主动收集数据进程减少,原来开到700多
StartTrappers=200
然后把这个负责处理Agentd推送过来的数据的进程开大一些,就可以了
4、为Zabbix前端配置PHP,配置php日期区域
[root@vlnx107001 conf.d]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
5、开启Zabbix Server和服务器和代理进程
[root@vlnx107001 conf.d]# systemctl restart zabbix-server zabbix-agent httpd
[root@vlnx107001 conf.d]# systemctl enable zabbix-server zabbix-agent httpd
[root@vlnx107001 conf.d]# ps -ef |grep zabbix
systemctl enable zabbix-server //设置开机启动zabbix-server
systemctl enable httpd //设置开机启动http
修改防火墙添加
[root@vlnx107001 zabbix]# firewall-cmd --permanent --zone=public --add-port=22/tcp;
[root@vlnx107001 zabbix]# firewall-cmd --permanent --zone=public --add-port=80/tcp;
[root@vlnx107001 zhaowzh]# firewall-cmd --permanent --zone=public --add-port=10050/tcp; #Agent的默认端口
[root@vlnx107001 zabbix]# firewall-cmd --permanent --zone=public --add-port=10051/tcp; #Server的默认端口
[root@vlnx107001 zhaowzh]# firewall-cmd --reload;
Agent采用被动式(默认端口10050)
Server主动连接Agent
Agent采用主动或Trapper方式,会连接Server的10051端口
## 重启agent服务
systemctl enable zabbix-agent.service
systemctl restart zabbix-agent.service
#打开浏览器配置WEB界面
http://IP/zabbix (http://172.31.107.1/zabbix)
WEB登录界面 默认账号是 Admin (区分大小写),密码是zabbix.
######################代理Agentd 客户端############################
其他服务器上安装代理 并配置
[root@vlnx107002 ~]# yum install zabbix-agent -y
[root@vlnx107002 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server= ip.ip.ip.ip
#服务端ip地址. 被动模式,允许哪些服务器连接Agent (例如Server=127.0.0.1,172.31.107.1)表示Server的IP为 127.0.0.1和 172.31.107.1这俩台Zabbix-Server服务器端可以获取此Agent端的监控数据。
即一个Agent是可以同时向多个服务器端发送数据的,多个IP用逗号分隔即可。
ServerActive= ip.ip.ip.ip #服务端ip地址(主动模式)
#主动模式,向哪些服务器传送数据
主动模式:zabbix_agent主动收集主机上面的信息,将它提交给server端
被动模式:zabbix_server主动去zabbix_agent上面抓取数据信息
Hostname则是显示这个数据是由谁发送的。
ServerActive这个参数指的是客户端将自己收集到的数据发送给谁.
在zabbix添加和安装的时候就有强调web界面和配置文件中Hostname主机名必须保持一致,否则zabbix WEB界面有可能接收不到数据
Hostname=client01 #该值跟zabbix web上配置的主机名称要一致(配置-》主机-》主机名称)
主动模式Active 指Agent将采集到的数据主动发送给Server,而不需要Server每次连接Agent等待采集,所以采用主动模式会使得Zabbix-server具有最好的性能。
#启动代理Agentd
systemctl start zabbix-agent.service
#开启防火墙
Zabbix-Get使用
Zabbix-Get 是用于Zabbix-Server和Zabbix-Agent的数据获取,通常可以用来检测验证Agent的配置是否正确
语法:
zabbix-get [-hV] -s
-s:远程Zabbix-Agent的IP地址或主机名
-p:远程Zappix-Agent的端口
-I:本机出去的IP地址,用于一台服务器中有多个网卡的情况;
-k:获取远程Zabbix-Agent数据所使用的Key;
例如:
[postgres@vlnx107001 data]$ zabbix_get -s 172.31.107.3 -p 10050 -I 172.31.107.1 -k system.uname
二、配置监控psql模板
方法1:使用 libzbxpgsql模板监控
http://cavaliercoder.com/libzbxpgsql/download/
wget http://cdn.cavaliercoder.com/libzbxpgsql/yum/zabbix32/rhel/7/x86_64/libzbxpgsql-1.1.0-1.el7.x86_64.rpm
不需要配置 白名单pg_hba
[root@vlnx107001 ~]# rpm -ivh /home/zhaowzh/libzbxpgsql-1.1.0-1.el7.x86_64.rpm --force --nodeps
[root@vlnx107002 local]# find / -name libzbxpgsql.so
[root@vlnx107002 local]# mkdir -p /usr/local/zabbix/lib
[root@vlnx107002 local]# cp /usr/lib64/zabbix/modules/libzbxpgsql.so /usr/local/zabbix/lib/
配置zabbix配置文件zabbix_agentd.conf
[root@vlnx107002 local]# vim /etc/zabbix/zabbix_agentd.conf
LoadModulePath=/usr/local/zabbix/lib/
LoadModule=libzbxpgsql.so
Include=/etc/zabbix/zabbix_agentd.d/*.conf #agent 配置文件中配置
查看zabbix agent插件是否生效
[root@vlnx107002 zabbix]# zabbix_agentd -t pg.modver
重启代理
systemctl restart zabbix-agent.service
解决方案
关闭 SELinux 即可
错误2及解决方法
错误原因: kernel.sem参数过小,功效内存信号量设置
可以通过 ipcs -lm 命令查看目前系统共享内存的参数限制 或
cat /proc/sys/kernel/sem
解决方法
echo 'kernel.sem = 500 64000 64 256'>>/etc/sysctl.conf
或 vim /etc/sysctl.conf
SEMMSL
The maximum semaphores per semaphore set.
第一列,表示每个信号集中的最大信号量数目。
SEMMNS
A system-wide limit on the number of semaphores in all semaphore sets.
第二列,表示系统范围内的最大信号量总数目。
SEMOPM
The maximum number of operations that may be specified in a semop(2) call.
第三列,表示每个信号发生时的最大系统操作数目。
SEMMNI
A system-wide limit on the maximum number of semaphore identifiers
第四列,表示系统范围内的最大信号集总数目。
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。Semaphore就像可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。Semaphore的属性如下:
SEMMSL
含义:每个信号量set中信号量最大个数 设置:最小250;对于processes参数设置较大的系统建议设置为processes+10
SEMMNI
含义:linux系统信号量set最大个数 设置:最少128
SEMMNS
含义:linux系统中信号量最大个数 设置:至少32000;SEMMSL * SEMMNI
SEMOPM
含义:semop系统调用允许的信号量最大个数设置:至少100;或者等于SEMMSL
使其生效 sysctl -p
方法2:使用 pg_monz模板监控(在Agent端安装)
http://pg-monz.github.io/pg_monz/index-en.html
https://github.com/pg-monz/pg_monz/releases
需要配置 白名单 pg_hba
[root@vlnx107001 zhaowzh]# wget https://codeload.github.com/pg-monz/pg_monz/zip/2.1
[root@vlnx107001 zhaowzh]# unzip 2.1
[root@vlnx107001 usr-local-bin]# cp * /usr/local/bin
[root@vlnx107001 usr-local-etc]# cp * /usr/local/etc
[root@vlnx107001 zabbix_agentd.d]# cp /root/pg_monz-2.1/pg_monz/zabbix_agentd.d/userparameter_pgsql.conf /etc/zabbix/zabbix_agentd.d/
[root@vlnx107001 ] systemctl restart zabbix-agent.service
在Zabbix GUI界面导入对应的模板即可