zoukankan      html  css  js  c++  java
  • 监控服务zabbix单机部署

    zabbix介绍

    对于运维人员来说,监控是非常重要的,因为如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监控他们,我们则需要依靠一些外部的工具,而zabbix就是一个被广泛使用的,可以实现集中监控管理的应用程序。

    监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常,所以,监控工具需要定期的对被监控主机进行检查、信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺,那么,一个监控工具就应该具备采集信息、存储信息、展示信息、报警通知等功能,而zabbix就可以做到这些,除了zabbix,你可能还听说过cacti、nagios、ganglia等类似的监控系统等

    zabbix支持的通讯方式

    agent: 通过专用的代理程进行监控序,与master/afent模型类似,首选推荐方式

    ssh/telent:通过远程控制协议通讯,

    SNMP:通过SNMP(simple netwirk management protocl"简单网络协议")协议与被监控对象通信,一般来说无法再交换机,路由器这种硬件上安装agent,但是这些硬件一般都支持NSMP,SNMP协议工作方式也可以理解为master/agent的工作模式,只是在这些设备中的SNMP中内置了agent,所以大部分设备都支持这中协议

    IPMI:通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等

    JMX:通过JMX进行监控,JMX(java management extensions"java管理扩展"),监控JVM虚拟机时,使用这种方法

    zabbix

    • Zabbix是一个基于web解密的提供分布式系统监视以及网络监视功能的企业级开源解决方案,zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位、解决存中的各种问题
    • Zabbix 是由Akexek Vkadishey创建,目前有Zabbix SIA在持续开发种
    • Zabbix是一个企业级的分布开源监控方案
    • Zabbix是一款能够监控各种网络参数以及服务器监控性和完整性的软件
    • Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的警告,这样可以快速反馈服务器的问题,基于已存储的数据,Zabbix提供了出色的报告和数据的可视化,这些功能使用Zabbix成为容量规划的理想方案
    • Zabbix支持轮询和被动捕获
    • Zabbix所有的报告,统计信息个配置参数都可以通过基于web的前端页面可以确保你可以从任何方面评估你的网络状态和服务器的健康性
    • Zabbix是免费的,zabbix是根据CPL通过公共许可证第2版编写和发行的,这意味着它的源代码都是免费发行的,可供公众任意使。

    监控区别: cacti:监控是轮询的,效率低,图形界面相对nagios好看 nagios:图形不是特别好,也可以安装图形插件,但是也不怎么好,一般情况如果需要图形可以和cacti配合使用

    zabbix: 和nagios是并发监控,对cpu的要求更高,在性能和功能上都强大很多,支持多种监控方式(zabbix-agent,snmp等),支持分布式监控,能监控的agent非常多,有图形的web配置界面,配置简洁,支持自动发现功能

    zabbix优点缺点

    优点

    • 开源,无软件成本投入
    • server对设备性能要求不高
    • 支持多设备,自带多监控模板
    • 支持多分布式集中管理,优质的发现功能,可以实现自动化监控
    • 开放式接口,扩展性强,插件编写容易
    • 当监控的item比较多,服务器列队比较大时可以采用主动状态,被监控的客户端主动从server端去下载监控的item然后数据上传到server端。这样的方式对服务器的负载比较小
    • api的支持,方便与其他系统结合 缺点
    • 需要在被监控主机上安装agent,所有数据都存在数据库中,产生的数据量很大,瓶颈主要在数据库。
    • 项目批修不方便。
    • 中文资料比较少,支持服务有限。
    • 入门容易,能实现基础监控,但是深层次需求要非常熟悉zabbix并进行大量的二次开发,难度较大
    • 系统级别的报警设置相对比较多,如果不筛选的话报警邮件会很多,并且自定义项目报警需要自己设置,过程繁琐
    • 缺少数据总汇功能,比如无法查看一组服务器的平均值,需要二次开发

    Zabbix监控方式

    被动监控

    • 被动监控: 相对于agent端而言,agent,server向agent请求获取配置的各项监控相关的数据 agent接收请求获取数据并响应给server。

    主动监控

    • 主动监控: 相对于agent端而言,agent(active),agent向server请求与自己相关的监控项配置,主动的将server配置的监控项目相关的数据发送给server,主动监控能够大量节约监控server的资源

    Zabbix结构

    zabbix server:

    是agent程序报告系统可用性,系统完整性和数据统计的核心组件,是所有配置信息,统计信息和操作数据的核心存储器。

    zabbix basedata:

    所有配置信息和zabbix搜集的数据都被存储在数据库中。

    zabbix web:

    为了从任何地方和任何平台都可以访问zabbix,提供了zabbix的web界面,该界面是server的一部分,通常和zabbix server运行在同一台物理机上。

    如果要使用SQLite,必须要和zabbix server运行在同一台物理机上

    zabbix proxy:

    zabbix proxy可以替zabbix server收集性能和可用性数据,proxy代理服务器是zabbix中可选部署的一部分,当然proxy代理服务器可以帮助单台zabbix server分担负载压力

    zabbix agent

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

    zabbix 数据流

    监控方面,为了创建一个监控项(item)用于采集数据,必须创建一个主机。

    告警方面,在监控项里创建触发器(trigger),通过触发器来触发告警动作,如果你想收到server XCPU负载过高的告警,必须满足

    1.为server X创建一个host并关联一个用于对CPU进行监控的监控项(item)

    2.创建一个Trigger,设置成当CPU负载过高时触发

    3.trigger被触发的时,发送告警邮件

     

    zabbix配置文件

    zabbix配置文件有两种:

    • 服务器端配置文件(/usr/local/etc/zabbix_server.conf)
    • 客户端配置文件(/usr/local/etc/zabbix_agentd.conf)
    • zabbix代理配置文件(/usr/local/etc/zabbix_proxy.conf)

    服务器端配置文件zabbix_server.conf常用配置参数:

    参数作用
    LogFile 设置服务端日志文件存放路径
    ListenIP 设置服务端监听IP
    ListenPort 设置服务端监听的端口号
    PidFile 设置服务端进程号文件存放路径
    DBHost 指定zabbix的数据库服务器IP
    DBName 指定zabbix使用的数据库库名
    DBUser 指定zabbix数据库登录用户
    DBPassword 指定zabbix数据库登录密码
    DBPort 指定zabbix数据库端口号
    User 设置zabbix以什么用户的身份运行
    AlertScriptsPath 设置告警脚本存放路径
    ExternalScripts 外部脚本存放路径

    客户端配置文件zabbix_agentd.conf常用配置参数:

    参数作用
    Server 指定zabbix服务器的IP或域名
    ServerActive 指定zabbix服务器的IP或域名
    Hostname 指定本机的主机名,此项必须与web界面配置项一致
    UnsafeUserParameters 是否启用自定义监控项,可选值为{1 | 0}
    UserParameter 指定自定义监控脚本参数
    LogFile 设置客户端日志文件存放路径

    zabbix安装部署

    环境说明:

    环境IP要安装的应用
    服务器 192.168.248.134 lamp架构
    zabbix server
    zabbix agent

    官网地址:https://www.zabbix.com/

    #下载zabbix源码包
    [root@localhost ~]# wget https://cdn.zabbix.com/zabbix/sources/stable/5.2/zabbix-5.2.6.tar.gz
    
    #解压缩
    [root@localhost ~]# tar -xf zabbix-5.2.6.tar.gz  -C /usr/local/
    
    #创建zabbix用户
    [root@localhost ~]# useradd -r -M -s /sbin/nologin zabbix
    
    #配置zabbix数据库
    [root@localhost ~]# mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 2
    Server version: 5.7.31 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
     
    mysql> create database zabbix character set utf8 collate utf8_bin;
    Query OK, 1 row affected (0.01 sec)
    
    mysql>  grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    
    mysql>  grant all privileges on zabbix.* to zabbix@192.168.248.134 identified by '123456';
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> exit
    
    
    #导入数据表
    [root@localhost database]# cd /usr/local/zabbix-5.2.6/database/mysql/
    
    [root@localhost mysql]# ls
    data.sql  double.sql  images.sql  Makefile.am  Makefile.in  schema.sql
    
    [root@localhost mysql]# mysql -uroot -p123 zabbix < schema.sql 
    mysql: [Warning] Using a password on the command line interface can be insecure.
    
    [root@localhost mysql]# mysql -uroot -p123 zabbix < images.sql 
    mysql: [Warning] Using a password on the command line interface can be insecure.
    
    [root@localhost mysql]# mysql -uroot -p123 zabbix < data.sql 
    mysql: [Warning] Using a password on the command line interface can be insecure.
    

    编译安装zabbix

    #安装依赖包
    [root@localhost ~]# yum -y install net-snmp-devel libevent-devel libxml2-devel curl-devel
    
    #编译安装
    [root@localhost ~]# cd /usr/local/zabbix-5.2.6/
    [root@localhost zabbix-5.2.6]# ./configure --enable-server 
    > --enable-agent 
    > --with-mysql 
    > --with-net-snmp 
    > --with-libcurl 
    > --with-libxml2
    .........................................
    ..........................................
    [root@localhost zabbix-5.2.6]# make install
    

    服务端配置

    [root@localhost zabbix-5.2.6]# vim /usr/local/etc/zabbix_server.conf
    .............................
    .......................
    DBName=zabbix   
    DBUser=zabbix
    DBPassword=123456  #设置zabbix数据库连接密码
    
    #启动服务
    [root@localhost zabbix-5.2.6]# zabbix_server
    [root@localhost zabbix-5.2.6]# zabbix_agentd 
    [root@localhost zabbix-5.2.6]# ss -antl
    State        Recv-Q       Send-Q              Local Address:Port                Peer Address:Port       
    LISTEN       0            128                       0.0.0.0:22                       0.0.0.0:*          
    LISTEN       0            128                       0.0.0.0:10050                    0.0.0.0:*          
    LISTEN       0            128                       0.0.0.0:10051                    0.0.0.0:*          
    LISTEN       0            128                       0.0.0.0:9000                     0.0.0.0:*          
    LISTEN       0            80                              *:3306                           *:*          
    LISTEN       0            128                             *:80                             *:*          
    LISTEN       0            128                          [::]:22                          [::]:*
    

    zabbix服务端web界面安装与配置

    修改/etc/php.ini的配置并重启php-fpm
    [root@localhost ~]# sed -ri 's/(post_max_size =).*/1 16M/g' /etc/php.ini
    [root@localhost ~]# sed -ri 's/(max_execution_time =).*/1 300/g' /etc/php.ini
    [root@localhost ~]# sed -ri 's/(max_input_time =).*/1 300/g' /etc/php.ini
    [root@localhost ~]# sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini  #现版本可以不用此步
    [root@localhost ~]# systemctl restart php-fpm
    
    
    [root@localhost ~]# mkdir /usr/local/apache/htdocs/zabbix
    [root@localhost ~]#  cp -a  /usr/local/zabbix-5.2.6/ui/*  /usr/local/apache/htdocs/zabbix/
    [root@localhost ~]# chown -R apache.apache /usr/local/apache/htdocs
    
    
    #自己虚拟主机配置的文件位置
    [root@localhost ~]# vim /usr/local/apache/conf/httpd.conf
    //在配置文件的末尾加如下内容
    <VirtualHost *:80>
        DocumentRoot "/usr/local/apache/htdocs/zabbix"
        ServerName www.xxx.com
        ProxyRequests Off
        ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zabbix/$1
        <Directory "/usr/local/apache/htdocs/zabbix">
            Options none
            AllowOverride none
            Require all granted
        </Directory>
    </VirtualHost>
    
    #设置zabbix/conf目录的权限,让zabbix有权限生成配置文件zabbix.conf.php
    [root@localhost ~]# chmod  777 /usr/local/apache/htdocs/zabbix/conf
    
    #重启apache
    [root@localhost ~]# apachectl -t
    Syntax OK
    [root@localhost ~]# apachectl restart
    

    在浏览器上访问域名进行安装:

    恢复zabbix/conf目录的权限为755:

    [root@localhost ~]# chmod  755 /usr/local/apache/htdocs/zabbix/conf
    

    zabbix默认登录用户名和密码:

    用户名密码
    Admin zabbix

    zabbix配置开机自启动

    [root@localhost ~]# cp -a /usr/local/zabbix-5.2.6/misc/init.d/fedora/core5/zabbix_server  /etc/init.d/
    
    [root@localhost ~]# cp -a /usr/local/zabbix-5.2.6/misc/init.d/fedora/core5/zabbix_agentd  /etc/init.d/
    
    [root@localhost ~]# chkconfig --add zabbix_server
    
    [root@localhost ~]# chkconfig zabbix_server on
    
    [root@localhost ~]# chkconfig --add zabbix_agentd
    
    [root@localhost ~]# chkconfig zabbix_agentd on
    
    [root@localhost ~]# chkconfig --list | grep zabbix_agentd
    
    Note: This output shows SysV services only and does not include native
          systemd services. SysV configuration data might be overridden by native
          systemd configuration.
    
          If you want to list systemd services use 'systemctl list-unit-files'.
          To see services enabled on particular target use
          'systemctl list-dependencies [target]'.
    
    zabbix_agentd  	0:off	1:off	2:on	3:on	4:on	5:on	6:off
    [root@localhost ~]# chkconfig --list | grep zabbix_server
    
    Note: This output shows SysV services only and does not include native
          systemd services. SysV configuration data might be overridden by native
          systemd configuration.
    
          If you want to list systemd services use 'systemctl list-unit-files'.
          To see services enabled on particular target use
          'systemctl list-dependencies [target]'.
    
    zabbix_server  	0:off	1:off	2:on	3:on	4:on	5:on	6:off
    
  • 相关阅读:
    ES6~Promise的原理及使用二 理解Promise规范(copy自:https://www.cnblogs.com/lvdabao/p/5320705.html?utm_source=tuicool&utm_medium=referral)
    Google的Python代码格式化工具YAPF详解
    在ubuntu上使用QQ的经历
    Ubuntu 14.04 下安装Skype
    pip install lxml mysql-python error
    情人节的宠物-测试小工具
    戴维营收集
    工作日志(10.29)
    求职面试
    面试题集(转载)
  • 原文地址:https://www.cnblogs.com/diqiyao/p/14627529.html
Copyright © 2011-2022 走看看