zoukankan      html  css  js  c++  java
  • Zabbix3.2.11源码编译安装for centos7

    本文转载自: https://www.93bok.com

    一、Linux常用开源监控系统简单介绍

    cacti:存储数据能力强,报警性能差
    nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中。比如,连续采样数据存储,有连续三次不在合理范围内的数据就报警
    zabbix:结合上面两种工具的优点,又可以存储数据,又可以报警。
    

    二、Zabbix组件功能

    Server

    • Zabbix server 是监控代理程序报告系统可用性、系统完成整性和统计信息的核心组件。Zabbix Server是所有配置信息、统计信息和操作数据的核心存储器。

    数据库存储

    • 所有配置信息和Zabbix收集到的数据都被存储在数据库中。

    Web界面

    • 为了从任何地方和任何平台都轻松的访问Zabbix,Zabbix提供了基于Web的界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
    • 如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。

    Proxy代理服务器

    • Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。

    Agent监控代理

    • Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。

    数据流

    • 此外,了解Zabbix内部的数据流同样很重要。为了创建一个监控项用于采集数据,必须先创建一个主机。转换到Zabbix功能的其他部分,你必须先有一个监控项来创建触发器,你必须有一个触发器来创建动作。 因此,如果你想收到X服务器CPU负载过高的告警,你必须先为X服务器创建一个主机实体并关联一个用于对CPU进行监控的监控项,然后如果CPU负载太高便会激活触发器,接着会执行一个动作,给你发送告警邮件。

    三、Zabbix运行机制

    Ps0Pv4.png

    Zabbix的监控流程可以简单描述为:

    • 数据采集-->数据存储-->数据分析-->数据展示-->监控报警

    监控原理就是:

    • ZabbixAgent服务将从系统中获取的相关数据传送给ZabbixServer,然后ZabbixServer服务奖数据分析之后以PHP页面展示出来
    • Zabbix支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理Zabbix,通过C/S模式采集数据,通过B/S模式在Web端展示和配置!Agent监控端口10050

    四、Zabbix特点

    数据收集

    1、可用性和性能检查
    2、支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控
    3、自定义检查
    4、按照自定义的间隔收集需要的数据
    

    灵活的阀值定义

    • 可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值

    高度可配置化的告警

    1)可以根据升级计划,接收方和媒体类型来定制发送告警通知 
    2)使用宏变量可以使告警通知更有意义更高效
    3)自动化动作包含执行远程命令
    

    实时图表绘制

    • 使用内置图表绘制功能可以将监控项的内容立即绘制成图表

    Web监控功能

    • Zabbix可以模拟鼠标在Web网站上的操作来检查Web的功能和响应时间

    丰富的可视化选项

    1)能够创建自定义的图形,图形中可将多个监控项组合在一个视图展示
    2)网络拓扑图
    3)以仪表盘的样式展现自定义的展现和幻灯片
    4)报告
    5)监控资源的高级(业务)视图
    

    历史数据存储

    1)数据存储在数据库中
    2)可配置历史数据
    3)内置数据管理机制
    

    配置简单

    1)将被监控对象添加为主机
    2)主机被创建用于监控,在数据库中是唯一存在的
    3)应用模板来监控设备
    

    使用模板

    1)在模板中分组检查
    2)模板可以关联其他模板
    

    网络发现

    1)自动发现网络设备
    2)监控代理自动注册
    3)发现文件系统,网络接口和SNMP OID值
    

    简洁的Web界面

    1)Web前端基于PHP
    2)可从任何地方访问
    3)你可以定制自己的操作方式
    4)审核日志
    

    Zabbix API

    • Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的

    权限管理系统

    1)安全用户认证
    2)特定用户可以限制访问特定的视图
    

    功能强大并易于扩展的监控代理

    1)部署在被监控对象上
    2)可以部署在Linux和Windows上
    

    二进制代码

    1)为了性能和更少内存的占用,用C语言编写
    2)便于移植
    

    为复杂环境准备

    • 使用Zabbix proxy代理服务器,使得远程监控更简单

    五、Zabbix官网下载

    六、Zabbix源码编译安装

    (一)搭建LNMP环境

    详细过程略过,可参考之前文章《Centos7.2源码编译LNMP环境》

    (二)源码编译安装Zabbix for server端

    1. 修改php.ini配置文件
    vim /etc/php/php.ini
    
    date.timezone = Asia/Shanghai
    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    
    2. 创建Zabbix数据库
    mysql -u root -p123456
    
    mysql> create database zabbix;
    mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'nongkaige';
    mysql> flush privileges;
    
    3. 测试使用zabbix用户能否登录数据库
    mysql -u zabbix -pnongkaige
    
    4. 导入Zabbix数据库
    • 导入zabbix数据库的架构,已在源码包中,先解压zabbix的源码包
    cd /a01/apps/apps_src/
    tar -zxvf zabbix-3.2.11.tar.gz
    
    • 必须按顺序导入:
    mysql -u zabbix -pnongkaige zabbix < /a01/apps/apps_src/zabbix-3.2.11/database/mysql/schema.sql
    mysql -u zabbix -pnongkaige zabbix < /a01/apps/apps_src/zabbix-3.2.11/database/mysql/images.sql
    mysql -u zabbix -pnongkaige zabbix < /a01/apps/apps_src/zabbix-3.2.11/database/mysql/data.sql
    
    5. 源码编译安装zabbix
    1)创建zabbix运行用户(如果以root用户启动zabbix进程,会自动切换为zabbix用户)
    useradd -M -s /sbin/nologin zabbix
    
    2) 安装依赖
    cd /a01/apps/apps_src/zabbix-3.2.11
    yum -y install libevent-devel libxml2-devel libcurl-devel net-snmp-devel
    
    3)编译zabbix
    ./configure --prefix=/a01/apps/zabbix --sysconfdir=/etc/zabbix --datadir=/a01/apps/zabbix/data --enable-server --enable-agent --enable-java --with-mysql --with-net-snmp --with-libcurl --with-libxml2
    
    • 注意:编译时最好带上--enable-java参数,方便以后监控tomcat程序时候用。
    4)安装java

    Ps0VV1.png

    • 报错:configure: error: Unable to find "javac" executable in path
    • 没有安装java环境,去安装一下即可
    cd /a01/apps/apps_src/
    mkdir -p /usr/local/java
    tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/java/
    vim /etc/profile
    
    JAVA_HOME=/usr/local/java/jdk1.8.0_151
    PATH=$JAVA_HOME/bin:$PATH
    CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
    export PATH JAVA_HOME CLASSPATH
    
    source /etc/profile
    java -version
    

    Ps0e56.png

    • 安装完java之后继续编译

    Ps0K2D.png

    5)安装
    make install
    
    6)创建zabbix日志目录
    mkdir -p /var/log/zabbix
    chown -R zabbix:zabbix /var/log/zabbix/
    
    7)配置zabbix_server配置文件
    vim /etc/zabbix/zabbix_server.conf
    
    LogFile=/var/log/zabbix/zabbix_server.log
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=nongkaige
    
    8)配置zabbix_agent配置文件实现自己监控自己
    vim /etc/zabbix/zabbix_agentd.conf
    
    LogFile=/var/log/zabbix/zabbix_agentd.log
    Server=127.0.0.1
    ServerActive=127.0.0.1
    Hostname=Zabbix server
    UnsafeUserParameters=1		#允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
    
    9)启动zabbix
    /a01/apps/zabbix/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
    /a01/apps/zabbix/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
    

    Ps01rd.png

    • 报错:error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
    • 大概意思是找不到libmysqlclient.so.20,我们去看mysql安装目录下应该会有,软链接过来即可:
    ln -s /a01/apps/mysql/lib/libmysqlclient.so.20 /usr/local/lib
    vim /etc/ld.so.conf
    
    /usr/local/lib
    

    Ps0GVI.png

    • 运行ldconfig命令生效之后再重新启动成功。
    10)配置zabbix web页面
    mkdir -p /a01/apps/nginx/html/zabbix
    cd /a01/apps/apps_src/zabbix-3.2.11/frontends/php/
    cp -a . /a01/apps/nginx/html/zabbix/
    
    11)安装zabbix前端(http://<服务器IP或主机名>/zabbix)
    • 先重启一下php-fpm
    systemctl restart php-fpm
    

    Ps0NPf.png

    • 报错:PHP sockets extension missing (PHP configuration parameter --enable-sockets).
    12)安装php sockets扩展
    • 进入php的源码包,使用phpize工具安装
    cd /a01/apps/apps_src/php-7.1.7/ext/sockets/
    /a01/apps/php7/bin/phpize
    ./configure --with-php-config=/a01/apps/php7/bin/php-config
    make && make install
    vim /etc/php/php.ini
    
    [sockets]
    extension = sockets.so
    
    13)安装php ldap扩展

    Ps0Dqs.png

    yum -y install openldap-devel
    
    • 一定要执行这步,否则下边会报错:configure: error: Cannot find ldap libraries in /usr/lib.
    cp -frp /usr/lib64/libldap* /usr/lib
    
    cd /a01/apps/apps_src/php-7.1.7/ext/ldap/
    /a01/apps/php7/bin/phpize
    ./configure --with-php-config=/a01/apps/php7/bin/php-config
    make && make install
    vim /etc/php/php.ini
    
    [ldap]
    extension = ldap.so
    
    14)重启php-fpm
    systemctl restart php-fpm
    
    15)刷新一下页面继续安装zabbix前端

    Ps0giV.png

    Ps0RRU.png

    Ps04sJ.png

    Ps0Td1.png

    Ps0qJK.png

    • 报错了,我们可以把上图中的配置文件下载下来再上传到图中指定的目录,不过zabbix的web根目录下已经自带了,我们直接去修改即可
    cd /a01/apps/nginx/html/zabbix/conf
    cp zabbix.conf.php.example zabbix.conf.php
    vim zabbix.conf.php
    

    Ps0jQe.png

    16)接下来关闭浏览器重新访问就能登录了(默认账号:admin,密码:zabbix)

    PsBiJf.png

    PsBVyQ.png

    17)改成中文页面

    PsBnwn.png

    PsBQYV.png

    18)修改默认密码为nongkaige

    PsBlWT.png

    PsB3SU.png

    19)配置监控本机

    “配置”-----“主机”-----“启用”

    PsB8lF.png

    20)修复中文乱码

    PsBJOJ.png

    • 可以发现上图中有乱码的情况,变成了一些框框,我们可以去下载字体,或者直接去我们的win7系统上复制一些字体上传并修改配置文件即可。
    • 1、去win7控制面板复制字体

    PsBUT1.png

    • 2、复制字体,并上传到服务器

    PsBdFx.png

    • 3、mv字体到指定目录,并修改配置文件
    cd /a01/apps/apps_src/
    mv msyh.ttf /a01/apps/nginx/html/zabbix/fonts/
    vim /a01/apps/nginx/html/zabbix/include/defines.inc.php
    
    #修改45行
    define('ZBX_GRAPH_FONT_NAME',           'msyh'); // font file name
    #修改93行
    define('ZBX_FONT_NAME', 'msyh');
    
    • 4、刷新网页查看

    PsB0fK.png

    21)停用guest用户
    • “管理”------“用户群组”------“停用的”

    PsBDSO.png

    22)编写脚本把zabbix-server添加到系统服务
    cd /etc/systemd/system
    vim zabbix-server.service
    
    [Unit]
    Description=zabbix-server
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/a01/apps/zabbix/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
    
    [Install]
    WantedBy=multi-user.target
    
    chmod 754 /etc/systemd/system/zabbix-server.service
    systemctl enable zabbix-server
    
    23)编写脚本把zabbix-agentd添加到系统服务
    cd /etc/systemd/system
    vim zabbix-agentd.service
    
    [Unit]
    Description=zabbix-server
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/a01/apps/zabbix/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
    
    [Install]
    WantedBy=multi-user.target
    
    chmod 754 /etc/systemd/system/zabbix-agentd.service
    systemctl enable zabbix-agentd
    
    • 好了,到此zabbix server已经部署完成,并实现了监控zabbix本机,下面看看效果图

    PsBrlD.png

    (三)客户端源码编译安装Zabbix for agent端for centos 6

    1. 创建zabbix运行用户
    useradd -M -s /sbin/nologin zabbix
    
    2. 解包
    cd /a01/apps/apps_src/
    tar -zxvf zabbix-3.2.11.tar.gz
    cd zabbix-3.2.11
    
    3. 配置
    ./configure --prefix=/a01/apps/zabbix --sysconfdir=/etc/zabbix --datadir=/a01/apps/zabbix/data --enable-agent
    
    4. 安装
    make install
    
    5. 创建zabbix日志目录
    mkdir -p /var/log/zabbix
    chown -R zabbix:zabbix /var/log/zabbix/
    
    6. 配置zabbix_agentd配置文件
    vim /etc/zabbix/zabbix_agentd.conf
    
    LogFile=/var/log/zabbix/zabbix_agentd.log
    Server=192.168.10.21
    ServerActive=192.168.10.21
    Hostname=192.168.10.26
    UnsafeUserParameters=1
    
    7. cp源码包自带脚本把zabbix-agentd添加到系统服务
    cp /a01/apps/apps_src/zabbix-3.2.11/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
    vim /etc/init.d/zabbix_agentd
    
    ZABBIX_BIN="/a01/apps/zabbix/sbin/zabbix_agentd"		#修改
    CONF_FILE="/etc/zabbix/zabbix_agentd.conf"				#添加
    daemon $ZABBIX_BIN -c $CONF_FILE						#添加后边的-c $CONF_FILE
    
    chkconfig --add zabbix_agentd
    chkconfig --level 35 zabbix_agentd on
    
    8. 启动zabbix_agentd
    service zabbix_agentd start
    

    (四)在zabbix服务器端测试是否能和客户端通信

    /a01/apps/zabbix/bin/zabbix_get -s 192.168.10.26 -p10050 -k"net.if.in[eth2,bytes]"
    

    PsBs6e.png

    • 服务端能得到客户端的网卡信息,说明可以正常通信

    (五)到zabbix前端web页面上创建Host监控客户端

    • “配置”------“主机”------“创建主机”

    PsByOH.png

    PsBcmd.png

    PsB2TI.png

    PsBftP.png

    PsB5p8.png

    PsBI1S.png

    PsBo6g.png

  • 相关阅读:
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 50 Pow(x,n)
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 49 字母异位词分组
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 48 旋转图像
    Java实现 LeetCode 47 全排列 II(二)
    Java实现 LeetCode 47 全排列 II(二)
  • 原文地址:https://www.cnblogs.com/93bok/p/12425642.html
Copyright © 2011-2022 走看看