zabbix server 安装配置

概述:

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。
Zabbix是一个免费的、高度集成的网络监控解决方案,由几个主要的软件组件构成,这些组件的功能如下:

Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。
数据库存储
所有配置信息和Zabbix收集到的数据都被存储在数据库中。
Web界面
为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
Proxy代理服务器
Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。
Agent监控代理
Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。

在被监控服务器较为集中且数量相对较小(一般来讲少于1000)时使用简单架构,被监控主机上部署的agent直接将信息汇报给server

zabbix server <== zabbix agent

在被监控服务器存在不同区域较为分散或数量较为庞大时(大于1000时),在server和agent之间添加proxy,被监控主机上部署的agent将信息汇报给proxy整合,proxy再将信息汇报给server,以减轻server压力

zabbix server <== zabbix proxy <== zabbix agent

安装步骤(zabbix server <== zabbix agent)

基础材料:CentOS7.5、PHP 7.2.6、MySQL 5.7.22、Apache 2.4.33、APR 1.6.3、APR-util 1.6.1、Zabbix 3.4.10 

PHP源码包下载地址http://php.net/get/php-7.2.6.tar.gz/from/a/mirror

MySQL rpm-bundle源码包下载地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads

Apache源码包下载地址http://httpd.apache.org/download.cgi#apache24

Apache依赖包下载地址https://mirrors.tuna.tsinghua.edu.cn/apache/apr/

zabbix源码包下载地址https://www.zabbix.com/download_sources

安装相关基础依赖包

yum install -y wget deltarpm net-tools psmisc tree sysstat perl gcc gcc-c++ unzip bzip2 zlib-devel pcre pcre-devel openssl openssl-devel libxml2 libxml2-devel  net-snmp net-snmp-devel libevent libevent-devel libcurl-devel libpng libpng-devel libjpeg libjpeg-devel freetype-devel expat-devel

编译安装Apache依赖包ARP及APR-util

[root@localhost ~]# tar -zxvf apr-1.6.3.tar.gz

[root@localhost ~]# cd apr-1.6.3

[root@localhost ~]# ./configure --prefix=/usr/local/apr

[root@localhost ~]# make && make install

[root@localhost ~]# tar -zxvf apr-util-1.6.1.tar.gz

[root@localhost ~]# cd apr-util-1.6.1 

[root@localhost ~]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

[root@localhost ~]# make && make install

编译安装Apache

[root@localhost ~]# tar -zxvf httpd-2.4.33.tar.gz

[root@localhost ~]# cd httpd-2.4.33

[root@localhost ~]# ./configure --prefix=/opt/apache --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --enable-modules --enable-mpms-shared=all --with-mpm=prefork --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

[root@localhost ~]# make && make install

将apache改为服务启动:

[root@localhost ~]# cp /opt/apache/bin/apachectl /etc/init.d/httpd

修改/etc/init.d/httpd文件,在首行#!/bin/bash后添加

# chkconfig: 2345 85 15
# description: Apache is a World Wide Webserver.

[root@localhost ~]# systemctl daemon-reload

[root@localhost ~]# chkconfig --add httpd

[root@localhost ~]# chkconfig httpd on

[root@localhost ~]# systemctl start httpd

安装MySQL:

[root@localhost ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

[root@localhost ~]# tar -xvf mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar

[root@localhost ~]# rpm -ivh mysql-community-common-5.7.22-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-libs-5.7.22-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-client-5.7.22-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-libs-compat-5.7.22-1.el7.x86_64.rpm

[root@localhost ~]# rpm -ivh mysql-community-devel-5.7.22-1.el7.x86_64.rpm

[root@localhost ~]# mkdir -p /mysql/data

[root@localhost ~]# mkdir -p /mysql/mysql-binlog

[root@localhost ~]# chown -R mysql. /mysql

[root@localhost ~]# mysqld --initialize --user=mysql  --datadir=/mysql/data

[root@localhost ~]# sed -i 's/datadir\=\/var\/lib\/mysql/# datadir\=\/var\/lib\/mysql/g' /etc/my.cnf

[root@localhost~]#sed -i 's/socket\=\/var\/lib\/mysql\/mysql.sock/# socket\=\/var\/lib\/mysql\/mysql.sock/g' /etc/my.cnf

[root@localhost~]# echo  "datadir=/mysql/data">>/etc/my.cnf

[root@localhost~]# echo  "socket=/mysql/data/mysql.sock">>/etc/my.cnf

[root@localhost~]# echo  "character-set-server=utf8">>/etc/my.cnf

[root@localhost~]# echo  "expire_logs_days=7">>/etc/my.cnf

[root@localhost~]# echo "gdb">>/etc/my.cnf

[root@localhost~]# echo "innodb_buffer_pool_chunk_size=1G">>/etc/my.cnf

[root@localhost~]# echo "innodb_buffer_pool_size=4G">>/etc/my.cnf

[root@localhost~]# echo "innodb_buffer_pool_instances=4">>/etc/my.cnf

[root@localhost~]# echo "server-id=254">>/etc/my.cnf

[root@localhost~]# echo "log-bin=/mysql/mysql-binlog/mysql-binlog">>/etc/my.cnf

[root@localhost~]# echo "binlog_format=row">>/etc/my.cnf

[root@localhost~]# echo "gtid_mode = on">>/etc/my.cnf

[root@localhost~]# echo "enforce_gtid_consistency = 1">>/etc/my.cnf

[root@localhost~]# echo  "[client]">>/etc/my.cnf

[root@localhost~]# echo  "default-character-set=utf8">>/etc/my.cnf

[root@localhost~]# echo  "socket=/mysql/data/mysql.sock">>/etc/my.cnf

[root@localhost~]# systemctl start mysqld

在/var/log/mysqld.log里面找到初始化密码,登录数据库重置密码

[root@localhost~]# mysql -u root -p'初始化密码'

mysql> SET PASSWORD = PASSWORD('new password');

mysql> flush privileges;

mysql> create database zabbix DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

mysql> grant all privileges on zabbix.* to zabbix identified by 'password';

mysql> flush privileges;

编译安装PHP:

[root@localhost~]# tar-zxvf php-7.2.6.tar.gz

[root@localhost~]# cd php-7.2.6

[root@localhost~]# ./configure --prefix=/opt/php --with-zlib --enable-zip --with-openssl --enable-fpm --enable-mbstring --with-libdir=lib64 --without-pear --disable-phar --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-apxs2=/opt/apache/bin/apxs --enable-bcmath --enable-sockets --with-gd --with-gettext --with-jpeg-dir=/opt/php/jpeg --with-png-dir=/opt/php/png --with-freetype-dir=/opt/php/freetype

[root@localhost~]# make && make install

特别注意一下,PHP安装时需要指定--with-apxs2=/opt/apache/bin/apxs,为apache安装后的路径,否则不会生成libphp7.so文件,从而无法关联apache,解析php文件,文件生成路径在/opt/apache/modules/libphp7.so

在源码包中找到php.ini-production并拷贝到/opt/php/lib下重命名为php.ini(该路径可以通过命令./php --ini获得,上述为默认路径)

[root@localhost~]# cp /root/php-7.2.6/php.ini-production /opt/php/lib/php.ini

编辑php.ini

[root@localhost~]# sed -i 's/post_max_size = 8M/post_max_size = 64M/g'  /opt/php/lib/php.ini

[root@localhost~]# sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /opt/php/lib/php.ini

[root@localhost~]# sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/g' /opt/php/lib/php.ini

[root@localhost~]# sed -i 's/max_input_time = 60/max_input_time = 300/g' /opt/php/lib/php.ini

配置Apache关联PHP:

[root@localhost~]# vi /opt/apache/conf/httpd.conf

修改<IfModule dir_module>
    DirectoryIndex  index.html

</IfModule>

<IfModule dir_module>
    DirectoryIndex index.php index.html

</IfModule>

找到AddType application/x-compress .Z

      AddType application/x-gzip .gz .tgz

 在后面添加

      AddType application/x-httpd-php .php

      AddType application/x-httpd-php-source .php7

检查文件内是否已经自动生成,如果未生成则手动添加下行

     LoadModule php7_module modules/libphp7.so

重启apache

[root@localhost~]# systemctl restart httpd

安装Zabbix server:

对于所有Zabbix的守护进程,需要一个无特权的用户,如果一个守护进程以‘root’用户启动,它会切换为‘zabbix’用户账户,且这个用户必须存在

[root@localhost~]# groupadd zabbix

[root@localhost~]# useradd -g zabbix zabbix

由于zabbix服务器本身也需要被监控,agent也会部署在本地,按照官方建议,server进程与agent进程最好使用不同用户启动,所以创建新用户

[root@localhost~]# useradd -g zabbix zabbixagent

[root@localhost~]# tar -zxvf zabbix-3.4.10.tar.gz

创建zabbix数据库,将zabbix初始化数据导入mysql数据库, Zabbix proxy数据库只需要数据库架构(schema),而Zabbix server数据库在建立数据库架构(schema)后,还需要数据集(dataset)

[root@localhost~]# cd /root/zabbix-3.4.10/database/mysql

[root@localhost~]# mysql -u root -p zabbix <schema.sql

[root@localhost~]# mysql -u root -p zabbix <images.sql

[root@localhost~]# mysql -u root -p zabbix <data.sql

编译安装zabbix:

[root@localhost~]# cd /root/zabbix-3.4.10

[root@localhost~]# ./configure --prefix=/opt/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl

[root@localhost~]# make install

设置zabbix服务启动脚本:

zabbix自带的服务脚本,由于基本系统使用的是CentOS7.5,所以使用Fedora的脚本,默认存放位置在 zabbix-3.4.10/misc/init.d/fedora/core5

编辑zabbix_server文件

 将 ZABBIX_BIN="/opt/zabbix/sbin/zabbix_server" 改为自己的安装路径

[root@localhost~]# cp zabbix_server /etc/init.d/

[root@localhost~]# chkconfig --add zabbix_server

[root@localhost~]# chkconfig zabbix_server on

编辑zabbix_agentd文件

将 ZABBIX_BIN="/opt/zabbix/sbin/zabbix_agentd"改为自己的安装路径

[root@localhost~]# cp zabbix_agentd /etc/init.d/

[root@localhost~]# chkconfig --add zabbix_agentd

[root@localhost~]# chkconfig zabbix_agentd on

设置zabbix配置文件:

编辑/opt/zabbix/etc/zabbix_server.conf  

[root@localhost~]# cd /opt/zabbix/etc/

[root@localhost~]# sed -i 's/# DBPassword=/DBPassword=password/g'  zabbix_server.conf

                                 password为之前数据库用户zabbix的授权密码

[root@localhost~]sed -i 's/# DBSocket=\/tmp\/mysql.sock/DBSocket=\/mysql\/data\/mysql.sock/g'  zabbix_server.conf

                                 之前修改了mysql的默认安装位置 

[root@localhost~]# sed -i 's/# StartPollers=5/StartPollers=100/g' zabbix_server.conf

                                系统初始化时,预分配子进程数量。数量越多,则服务端吞吐能力越强,对系统资源消耗越大

[root@localhost~]sed -i 's/CacheSize=8M/CacheSize=512M/g' zabbix_server.conf

                              分配共享内存用于存储配置信息,HOST,ITEM,TRIGGER数据,视监控主机数量和监控项调整

[root@localhost~]sed -i 's/StartDBSyncers=4/StartDBSyncers=8/g' zabbix_server.conf

                               将采集数据从CACHE同步到数据库线程数量,视数据库服务器I/O繁忙情况,和数据库写能力调整。数值越大,写能力越强

[root@localhost~]sed -i 's/# HistoryCacheSize=16M/HistoryCacheSize=512M/g' zabbix_server.conf

                                 设置划分多少共享内存用于存储采集的历史数据,此数值越大,数据库读压力越小

[root@localhost~]sed -i 's/# HistoryIndexCacheSize=4M/HistoryIndexCacheSize=64M/g' zabbix_server.conf

                                  历史数据索引缓存

[root@localhost~]sed -i 's/# TrendCacheSize=4M/TrendCacheSize=64M/g' zabbix_server.conf

                               用于设置划分多少共享内存用于存储计算出来的趋势数据,此参数值从一定程度上可影响数据库读压力

[root@localhost~]sed -i 's/# ValueCacheSize=8M/ValueCacheSize=64M/g' zabbix_server.conf

                                0表示禁用,history value缓存大小,当缓存超标了,将会每隔5分钟往server日志里面记录

编辑/opt/zabbix/etc/zabbix_agentd.conf

[root@localhost~]sed -i 's/User=zabbix/User=zabbixagent/g' zabbix_agentd.conf

                                 使agent服务通过zabbixagent用户启动

[root@localhost~]sed -i 's/Hostname=Zabbix server/# Hostname=Zabbix server/g' zabbix_agentd.conf

                                注释此项后默认项system.hostname会生效,system.hostname是ZABBIX内置的一个自动获取主机名的方法,为了方便配置,建议打开此参数而关闭Hostname参数。注意:HostnameItem的优化级低于Hostname,当两个参数都启用且配置的情况下,ZABBIX获取的主机名,将以Hostname为准

[root@localhost~]sed -i 's/# BufferSend=5/BufferSend=10/g' zabbix_agentd.conf

                                多少秒后,将BUFFER中的数据提交到二级代理或服务端。范围(1-36600)此数值的大小决定了采集后,提交数据的及时性,数值越小,则提交得越频繁,对服务器压力越大,同时对AGENT端系统资源消耗越大,则表现出来的现象是报警非常及时,建议根据实际情况自行考虑,也可保持默认,若发现ZABBIX消耗资源较多,建议加大此数值

[root@localhost~]# sed -i 's/# BufferSize=100/BufferSize=1000/g' zabbix_agentd.conf

                                此参数作用设置保存采集数据在内存中的容量大小。若此agent端监控项较多,建议加大此数值。BufferSize与BufferSend之间有联系的。当达到bUFFERSEND或Buffersize已满时,都会触发数据提交动作

                                # MaxLinesPerSecond=20 定义了AGENT在1秒内发送的日志行数,用于避免网络或cpu过载,建议保持默认 

[root@localhost~]# systemctl start zabbix_server

[root@localhost~]# systemctl start zabbix_agentd

配置zabbix webUI:

[root@localhost~]# mkdir -p /opt/apache/htdocs/zabbix

进入zabbix解压路径,拷贝PHP文件

[root@localhost~]# cd /root/zabbix-3.4.10/frontends/php

[root@localhost~]# cp -r * /opt/apache/htdocs/zabbix

浏览器访问http://IP/zabbix

在Check of pre-requisites页面会提示LDAP为warning,由于没有使用LDAP,下一步即可

DB connection修改localhost为本地IP地址,修改password即可

zabbix server details 修改localhost为本地ip地址,填写server name

最后根据提示下载配置文件并上传到指定路径,点击finish完成安装

默认用户名admin/zabbix

猜你喜欢

转载自blog.csdn.net/finalkof1983/article/details/80653798