zoukankan      html  css  js  c++  java
  • Zabbix监控系统部署:源码安装

    1. 概述

    本篇博客主要从zabbix使用者的角度(运维)来源码部署zabbix,并利用zabbix进行集群的性能监控,故障报警及处理等基础功能测试。
    软件安装方式为源码编译安装最新版zabbix。源码部署不仅有利于把控整个软件部署的整个过程及其细节,也能够更好地调整,移植和升级zabbix系统。

    1.1 基础环境

    节点分配:

    主机配置角色IP备注
    node17>512Mzabbix_server192.168.80.17提供LANMP环境
    node18>512Mzabbix_proxy192.168.80.18
    node19>512Mzabbix_agent192.168.80.19

    系统版本:

    操作系统CentOS6.5_x86_64安装方式
    HTTPhttpd-2.2.15-69YUM
    MySQLmysql-5.1.71YUM
    PHPPHP 5.6.36YUM安装后升级
    MAIL/bin/mailYUM
    Zabbixzabbix-3.4.12.tar.gz源码编译

    配置约定:

    1. 采用全局文件系统,减少部署过程
    2. 采用本地用户,而非LDAP认证缩短部署过程
    3. 不配置启动脚本,以远程管理方式启动服务

    系统环境

    1. 关闭防火墙:service iptables stop
    2. 取消selinux:setenforce 0 或修改配置文件/etc/selinux/config,使SELINUX=disabled

    2. 部署过程

    2.1 创建用户组

    根据zabbix的部署文档,如果在相同节点同时部署zabbix server,zabbix proxy,zabbix agent等,需要为运行不同的进程创建不同的进程用户
    本篇博客为了区分不同进程的角色,虽然将服务分散在不同节点,也创建不同的进程用户:

    1. zabbix server进程用户:zbx_s
    2. zabbix proxy进程用户:zbx_p
    3. zabbix agent进程用户:zbx_a

    在node17上执行命令:

    创建server进程用户:useradd -M -s /sbin/nologin -u 501 zbx_s
    创建proxy进程用户:useradd -M -s /sbin/nologin -u 502 zbx_p
    创建agent进程用户:useradd -M -s /sbin/nologin -u 503 zbx_a

    按照约定:将node17的/etc/passwd,/etc/group,/etc/shadow拷贝至node18和node19

    若采用LDAP进行全局认证,此过程可以省略,转为配置LDAP全局认证,这里不做介绍。

    2.2 下载源码解压编译安装

    2.2.1 下载源码解压

    zabbix官网地址:https://www.zabbix.com/
    最新版zabbix下载地址:
    wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.12/zabbix-3.4.12.tar.gz
    解压源码目录:
    tar -zxvf zabbix-3.4.12.tar.gz -C /tmp/ && cd /tmp/zabbix-3.4.12/

    2.2.2 YUM安装依赖环境

    由于node17系统是最小化安装,因此需要安装基本的编译环境和构建工具:
    执行yum -y install gcc gcc-c++ libtool autoconf automake
    因为本篇博客要在配置编译环境过程,即执行./configure脚本时,指定一些依赖软件环境,主要包括:
    libxml2,libxml2-devel,libevent,libevent-devel,pcre,pcre-devel,net-snmp,net-snmp-devel
    因此,需要通过YUM来安装这些依赖软件环境。执行命令:
    yum -y install libxml2 libxml2-devel libevent libevent-devel net-snmp net-snmp-devel pcre pcre-devel

    2.2.3 编译安装最新版curl

    在centos6.5系统上安装zabbix-3.4.12时,因为操作系统版本过低的问题,会导致在后面配置zabbix发送邮件时报错,报错的原因为curl版本过低。
    因此需要更新node17上的curl版本。
    此时通过rpm -qa | grep curl,检查系统是否安装curl包,并通过curl -V确定curl的版本。
    node17检查的版本为curl 7.19.7,并且可以通过该命令,查看该版本支持的协议有:tftp ftp telnet dict ldap ldaps http file https ftps scp sftp
    下载新版curl
    通过wget https://curl.haxx.se/download/curl-7.61.0.tar.gz下载最新版本的curl源码
    解压配置编译安装

    tar -zxvf curl-7.61.0.tar.gz -C /tmp
    cd /tmp/curl-7.61.0
    ./configure
    make && make install

    此时执行curl -V,能够看到curl版本已经更新至7.61,且支持的协议有:dict file ftp gopher http imap pop3 rtsp smtp telnet tftp
    虽然已经安装了最新版的curl,但是此时YUM命令已经不能使用,错误提示:No module named pycurl

    注:此时需要解决这个问题,具体方法参见博客《Error【0007】:zabbix中因为curl版本过低而无法发送邮件.md》,博客园地址:https://www.cnblogs.com/liwanliangblog/p/9419205.html

    2.2.4 更新GNU构建工具

    在上面的步骤中,已经通过YUM安装了autoconf和automake等GNU构建工具
    但是在编译zabbix时,指定的编译选项:--enable-proxy和--enable-agent会因为这两个工具的版本过低而无法编译。
    因此,这部分主要进行这两个版本的更新。
    首先查看当前的工具版本:
    autoconf -V : autoconf (GNU Autoconf) 2.63
    automake --version:automake (GNU automake) 1.11.1
    在GNU官网下载这两个工具的更高版本:
    autoconf:wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
    automake:wget ftp://ftp.gnu.org/gnu/automake/automake-1.5.tar.gz
    解压并编译安装

    tar -zxvf autoconf-2.68.tar.gz -C /tmp && cd /tmp/autoconf-2.68 && ./configure && make && make install
    tar -zxvf automake-1.5.tar.gz -C /tmp && cd /tmp/automake-1.15 && ./configure && make && make install

    重新登陆通过autoconf --version和automake --version选项验证安装

    2.2.5 YUM安装MySQL

    因为使用MySQL作为数据库,并且在编译zabbix时,需要指定MySQL的安装环境,在此通过YUM来安装数据库
    node17上执行:
    yum -y install mysql mysql-server mysql-clients mysql-devel

    2.2.5 配置编译安装

    配置

    ./configure  --prefix=/usr/local/zabbix/3.4.6 
    --enable-server --enable-proxy --enable-agent --enable-ipv6 
    --with-mysql --with-libxml2 --with-net-snmp --with-libevent --with-libpcre --with-openssl --with-libcurl  

    编译安装
    make all && make install

    2.3 部署监控前端站点环境

    zabbix监控前端时通过PHP语言构建,后端采用MySQL存储配置和监控数据。
    在最新版的zabbix中,要求PHP的版本不低于5.6。
    本部分主要介绍监控前端的站点环境部署

    2.3.1 部署Web服务器

    Web服务器通过httpd提供服务。
    安装HTTP
    node17执行命令:yum -y install httpd
    配置
    编辑httpd的主配置文件,
    vim /etc/httpd/conf/httpd.conf,修改ServerName=192.168.80.17
    启动httpd
    node17执行,service httpd restart && chkconfig httpd on

    2.3.2 部署DB数据库服务器

    安装MySQL
    上述过程中,已经通过YUM安装了MySQL,这里主要时配置MySQL
    启动MySQL服务:service mysqld start
    配置MySQL
    执行mysql回车,进入数据库后:

    #删除无用用户和登陆
    delete from mysql.user where user = ' ' and host = 'node17';
    delete from mysql.user where user = ' ' and host = 'localhost';
    delete from mysql.user where user = 'root' and host = 'node17';
    #授权root用户对所有库的权限
    grant all privileges on *.* to 'root'@'localhost' identified by 'liwanliang';
    grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'liwanliang';
    grant all privileges on *.* to 'root'@'192.168.80.1' identified by 'liwanliang';
    grant all privileges on *.* to 'root'@'192.168.80.17' identified by 'liwanliang';
    #刷新权限
    flush privileges;
    #创建zabbix数据库
    create database zabbix;
    #授权zabbix用户对zabbix库的权限
    grant all privileges on zabbix.* to 'zabbix'@'192.168.80.17' identified by 'liwanliang';
    #刷新权限
    flush privileges;

    配置MySQL默认字符编码
    因为MySQL默认编码不是utf8,因此会在后续的配置中,出现中文变成???的现象,因此需要提前配置MySQL字符编码,如下:

    配置MySQL开机启动
    node17执行:chkconfig mysqld on

    2.3.3 部署PHP环境

    zabbix前端采用PHP语言编写,并且zabbix-3.4.12版本需要PHP5.6以上支持。
    本篇博客在最小化安装系统上通过YUM安装PHP环境,并且更新YUM源升级PHP的方式来部署PHP环境。

    注:升级过程参见包括:https://www.cnblogs.com/savokiss/p/6259816.html

    更新YUM源
    node17上执行

    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

    安装PHP5.6环境
    yum -y install php56w php56w-fpm php56w-mysql php56w-mbstring php56w-gd php56w-dom php56w-bcmath php56w-ldap

    配置PHP
    在配置文件/etc/php.ini中,以下内容需要修改或者取消注释

    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    date.timezone = Asia/Shanghai
    always_populate_raw_post_data = -1

    注:这些参数会在前端站点初始化时检查并提示修改

    重启httpd生效
    service httpd restart

    2.3.4 配置zabbix部分

    拷贝站点前端文件
    在解压后的zabbix目录下,有一个叫做frontends的目录,里面存放着zabbix前端框架文件,将其拷贝至httpd服务器根目录下:
    cp -r /tmp/zabbix-3.4.12/frontends/php /var/www/html/zabbix
    导入数据库
    在解压后的zabbix目录下,有一个叫做database的目录,里面存放着各类zabbix后端数据库的初始化sql语句。
    执行以下命令,进行数据库安装:

    #注:以下顺序最后不要乱,以免报错
    mysql -h 192.168.80.17  -uzabbix -p zabbix < schema.sql
    #输入密码:liwanliang,等待结束
    mysql  -h 192.168.80.17 -uzabbix -p zabbix < images.sql
    #输入密码:liwanliang,等待结束
    mysql -h 192.168.80.17  -uzabbix -p zabbix < data.sql
    #输入密码:liwanliang,等待结束

    图形化配置
    安装了前端和数据库之后,便可以通过浏览器进行zabbix监控前端的初始化安装。
    本篇博客不涉及,参见以下内容:
    博客园地址:https://www.cnblogs.com/liwanliangblog/p/9410900.html
    笔记内链:《Zabbix监控系统部署:前端初始化.md
    登陆
    当前端配置完成之后,便可登陆zabbix
    初次登陆,默认的账号为:Admin,密码为zabbix
    登陆之后,可以配置语言环境,其他用户等,具体参见以下内容:
    博客园地址:
    笔记内链:《Zabbix监控系统部署:基本功能测试.md
    中文字体显示方块
    这是因为zabbix前端配置的字体无法正常显示,这里参照网上的教程,将win10操作系统中的宋体字拷贝至zabbix前端目录下,并重新配置。
    具体操作如下:

    1. win10找到【宋体】字,将其拷贝到nod17的zabbix字体目录下
    2. 配置字体配置文件
      vim /var/www/html/zabbix/include/defines.inc.php


    1. 刷新验证

    3. 环境共享

    按照配置约定,为了减少部署的步骤,将node17的/usr/local目录,通过NFS共享给node18和node19
    同时因为node18和node19拷贝了node17的用户组和密码等文件,因此具有相通的zbx_s/zbx_p/zbx_a等进程用户

    3.1 安装NFS环境

    node17执行:yum -y install rpcbind nfs-utils

    3.2 配置NFS共享目录

    编辑文件vim /etc/exportfs,内容如下

    /usr/local 192.168.80.0/24(rw,no_root_squash,no_all_squash)

    3.3 启动NFS服务

    执行service rpcbind start && service nfs start,设置服务启动
    执行命令chkconfig rpcbind on && chkconfig nfs on,设置开机启动服务

    3.4 node18和node19挂载

    node18和node19需要安装nfs-utils,执行yum -y install nfs-utils rpcbind安装
    执行命令挂载:mount.nfs 192.168.80.17:/usr/loca/ /usr/local
    通过ldd /usr/local/zabbix/3.4.6/sbin/zabbix_agentd验证agent的可用与否。

    3.5 批量启动

    共享了node17的文件系统之后,对于node18和node19,只需要按照“命令+配置”的方式,便可启动对应的服务。
    使用全局文件系统启动服务需要注意的是程序的pid文件和sock文件等,需要放置在节点根文件系统上,而不能够放在NFS全局文件系统,否则会因为进程互斥导致无法启动进程

  • 相关阅读:
    TCP/IP协议(一)网络基础知识 网络七层协议
    安卓混合开发——原生Java和H5交互,保证你一看就懂!
    最好用的17个渗透测试工具,全都在这里!(转载)
    【绿盟大讲堂】 渗透测试流程解析
    每日扫盲:eclipse快捷键 包括查找类、方法、变量汇总
    hadoop学习笔记(十):hdfs在命令行的基本操作命令(包括文件的上传和下载和hdfs中的文件的查看等)
    hadoop学习笔记(九):mr2HA高可用环境搭建及处步使用
    github新手使用
    hadoop学习笔记(九):mapReduce1.x和2.x
    hadoop学习笔记(八):hadoop2.x的高可用环境搭建
  • 原文地址:https://www.cnblogs.com/liwanliangblog/p/9406762.html
Copyright © 2011-2022 走看看