设为首页 收藏本站
查看: 831|回复: 0

[经验分享] zabbix 的部署及基础知识的讲解

[复制链接]

尚未签到

发表于 2019-1-19 10:37:57 | 显示全部楼层 |阅读模式
  一、Zabbix的介绍
  zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
  zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员
  快速定位/解决存在的各种问题,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台之上。
  - 安装与配置简单,学习成本低
  - 支持多语言(包括中文)
  - 免费开源
  - 自动发现服务器与网络设备
  - 分布式监视以及WEB集中管理功能
  - 可以无agent监视
  - 用户安全认证和柔软的授权方式
  - 通过WEB界面设置或查看监视结果
  - email等通知功能
  Zabbix主要功能:
  - CPU负荷
  - 内存使用
  - 磁盘使用
  - 网络状况
  - 端口监视
  - 日志监视
  -服务监控
  我个人用zabbix来做监控的主要原因是对比起其它两款开源软件cacit和nagios它具备了他们两款工具的优点。Cacti的优秀性主要在于对数据进行采样并绘制出直观的图片显示服务器的运行信息,对于服务器的报警功能支持不是很好(绘图室基于php开发的),而nagios则是更关注我们对服务器阈值的定义,对状态切换更敏感,报警功能强大。而zabbix则是结合和两者的优点。
  二、基础知识讲解
  1、zabbix工作的原理
  Zabbix支持四种工作方式分别是
  Snmp 、 zabbix(server/agent)、JMX、IPMI(基于硬件提供的专用接口)
  Snmp 协议介绍
  Agent:代理在UDP的161端口接收NMS的读写请求消息,agent:161,被监控端
  Manger:管理站在UDP的162端口接收代理的事件通告消息 ,NMS:162,监控端

  Zabbix 是基于zabbix协议工作的,其底层是依赖于snmp的工作方式来工作的,它的模型是
  Server/agent 方式
  Service : 10051 :由三部分组成(zabbix-web gui【依赖lamp平台、配置接口、展示数据】、zabbix-server【周期性去agent端采集数据】、service database【负责存储数据】)
  Agent: 10050:收集本机数据、暂时存储、监听等待server端来采集数据
  部署应用场景

  2、zabbix一次监控的全过程原理图
  定义监控主机,主机添加到主机组,定义item(监控主机的监控项,【监控资源】),graphs绘图【不是必须、套用用模板就不用】,teiggers:定义触发器,action:定义触发器触发后要执行的动作,比如服务重启,发邮件给管理员,动作升级,发邮件给部门主管

  3、一次全监控的工作流程
  数据采集、数据存储、数据展示、服务报警与升级

  三、实验安装zabbix并监控服务器服务
  node1  centos6.5 172.16.11.143  zabbix(agent)
  node2 centos6.5 172.16.11.144 zabbix(server、agent)
  实验前注意同步各主机的时间以免导致zabbix绘出图片时间跟现实时间不一致、注意主机名的定义
  Node2
  1、安装zabbix服务端、客户端、mysql-server、lamp #需要下载的软件
  下载地方:
  http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/
  zabbix-release-2.4-1.el6.noarch.rpm      zabbix-sender-2.4.0-1.el6.x86_64.rpm
  zabbix-2.4.0-1.el6.x86_64.rpm                zabbix-server-2.4.0-1.el6.x86_64.rpm
  zabbix-agent-2.4.0-1.el6.x86_64.rpm          zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm
  zabbix-get-2.4.0-1.el6.x86_64.rpm            zabbix-server-pgsql-2.4.0-1.el6.x86_64.rpm
  zabbix-java-gateway-2.4.0-1.el6.x86_64.rpm   zabbix-web-2.4.0-1.el6.noarch.rpm
  zabbix-proxy-2.4.0-1.el6.x86_64.rpm          zabbix-web-japanese-2.4.0-1.el6.noarch.rpm
  zabbix-proxy-mysql-2.4.0-1.el6.x86_64.rpm    zabbix-web-mysql-2.4.0-1.el6.noarch.rpm
  zabbix-proxy-pgsql-2.4.0-1.el6.x86_64.rpm    zabbix-web-pgsql-2.4.0-1.el6.noarch.rpm
  zabbix-proxy-sqlite3-2.4.0-1.el6.x86_64.rpm
  软件安装
  yum install zabbix-server-2.4.0-1.el6.x86_64.rpm zabbix-server-mysql-2.4.0-1.el6.x86_64.rpm zabbix-get-2.4.0-1.el6.x86_64.rpm zabbix-2.4.0-1.el6.x86_64.rpm zabbix-web-2.4.0-1.el6.noarch.rpm zabbix-web-mysql-2.4.0-1.el6.noarch.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm
  配置好yum源避免依赖关系
  2、授权用户可以来存储数据
  MariaDB [(none)]> create database zabbix character set utf8;
  Query OK, 1 row affected (0.00 sec)
  MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'172.16.%.%' identified by '1234';
  Query OK, 0 rows affected (0.01 sec)
  MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'node1.org.com' identified by '1234';
  Query OK, 0 rows affected (0.00 sec)
  MariaDB [(none)]> flush privileges;
  Query OK, 0 rows affected (0.01 sec)
  MariaDB [mysql]> select User,Password,Host from user;
  +---------+-------------------------------------------+---------------+
  | User    | Password                                  | Host          |
  +---------+-------------------------------------------+---------------+
  | root    | *A4B6157319038724E3560894F7F932C8886EBFCF | localhost     |
  | root    | *A4B6157319038724E3560894F7F932C8886EBFCF | 127.0.0.1     |
  | zbxuser | *A4B6157319038724E3560894F7F932C8886EBFCF | 172.16.%.%    |
  | zbxuser | *A4B6157319038724E3560894F7F932C8886EBFCF | node1.org.com  |
  | zbxuser | *24E65C3D3577DA6C2A596788CEAA02923A74B75D | localhost    |
  +---------+-------------------------------------------+---------------+
  3、导入zabbix内置数据库
  [root@localhost create]# mysql -u root -h 127.0.0.1 -p zabbix < images.sql
  [root@localhost create]# mysql -u root -h 127.0.0.1 -p zabbix < images.sql
  [root@localhost create]# mysql -u root -h 127.0.0.1 -p zabbix < data.sql
  [root@localhost create]# mysql -u zbxuser -h 172.16.11.144 -p #测试登录
  4、修改服务端配置文件注意和授权用户保持一致
  vim /etc/zabbix/zabbix_server.conf
  service httpd restart
  DBHost=172.16.11.144
  DBName=zabbix
  DBUser=zbxuser
  DBPassword=1234
  DBSocket=/tmp/mysql.sock
  Service zabbix-service restart
  5、Zabbix监控本机自身配置
  vim /etc/zabbix/zabbix_agentd.conf
  Server=127.0.0.1,172.16.11.144
  ServerActive=127.0.0.1,172.16.11.144
  Hostname=node1.org.com
  LogRemoteCommands=1 #允许服务端对客户端执行命令
  Service zabbix-agent restart
  前提是安装了lamp 并启动
  安装zabbix-web
  配置php时区
  vim /etc/php.ini
  date.timezone = Asia/Chongqing
  Service httpd restart
  6、安装zabbix web gui 配置zabbix监控主机服务
  http://172.16.11.144/zabbix/setup.php
  输入默认账户admin、和默认密码zabbix点击下一步
  时区的设置、确保所有都ok不然要解决再点击下一步

  配置数据存储连接数据库

  端口设置及配置信息显示

  安装完成

  登录配置监控服务
  zabbix 安装的默认账户和密码是
  admin
  zabbix
  登录后注意改管理员密码

  8、agent客户端(被监控端)安装软件
  Node1
  yum install zabbix-2.4.0-1.el6.x86_64.rpm zabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpm
  监控客户端配置文件修改
  vim /etc/zabbix/zabbix_agentd.conf
  Server=172.16.11.144
  ServerActive=172.16.11.144
  Hostname=node2.org.com
  service zabbix-agent restart
  四、监控服务的配置
  1、item的定义

  2、图片的定义

  3、触发器的定义

  4、添加用户并设置用户权限、否则无法报警、在此处我们也可以修改默认管理员账户密码、和添加新账户让它只有监控主机服务的权限不具有修改监控配的权限

  5、添加报警发送方式,发邮件、有三种方式email、sms、script、jabber

  6、四种报警方式选择

  7、action的定义触发事件发邮件给谁

  定义发邮件的级别

  8、定义报警升级

  9、图片设置展示

  五、对key的理解
  1、Key的主要应用是在定义item时,数据存储的设置,如果会自动增长的要改成
  Delta(speed per second):每秒数率(value - prev_value)/(time - prev_time)
  其它的则是AS is :不做任何处理
  2、举例解释
  Node2
  MariaDB [zabbix]> select * from items\G
  MariaDB [zabbix]> select key_,type from items;
  zabbix_get -h 获取帮助
  Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
  [root@localhost ~]# zabbix_get -s 172.16.11.144 -k "net.if.out[eth0]"
  44660716
  [root@localhost ~]# zabbix_get -s 172.16.11.144 -k "net.if.in[eth0]"
  44660724
  [root@localhost ~]# zabbix_get -s 172.16.11.144 -k "system.cpu.int"
  10660724
  AS is :不做任何处理
  Delta(speed per second):每秒数率(value - prev_value)/(time - prev_time)
  Delta (simple change): (value - prev_value)
  触发器 {:.()}
  3、解决绘图的时间与主机时间不同步的方法,在没有配置ntp服务器时,这里主要是为了试验,就不管啦,要想命令成功,要设置node1密钥认证node2
  [root@localhost ~]# ssh 172.16.11.143 "date -s '20141008 15:24:30'";date -s '20141008 15:24:30'
  Wed Oct  8 15:24:30 CST 2014
  Wed Oct  8 15:24:30 CST 2014
  解决时间不同步的机制
  4、采样时间设置应该注意的事项
  -数据保存时长  可以自己设定  #超过保存时长【heas】keep自动清理
  -保留历史趋势数据:每小时的最大值、最小值、平均值、 [保存时间较数据时长较长]
  -采样时长
  -监控时长定义
  node2
  yum install hping3
  hping3 172.16.11.144 --faster
  5、自定义监控网页并设置action服务端可以远程重启agent的httpd服务
  -添加item  net.tcp.service[service,,]
  -triggers {172.16.11.143:net.tcp.service[http,172.16.11.143,80].last(0)}=0
  -graphs 设置为线条图 0  1
  -action  注意要添加目标主机执行重启
  ###############################################################################
  开启配置文件中的命令 vim /etc/zabbix/zabbix_agentd.conf # EnableRemoteCommands=1
  此处经过验证zabbix用户去远程执行重启服务失败,配置没错,权限也有,但是就是实现不小,猜测可能是认证机制配置有错误,最后只好设置root用户去远程连接ssh执行重启httpd的任务,实验成功。
  不行的话我们可以执行ssh   用root身份去重启服务
  允许执行sudo命令 visudo #zabbix ALL=(ALL) NOPASSWD: /etc/rc.d/init.d/httpd restart
  su - zabbix -c "/etc/rc.d/init.d/httpd restart" #测试权限不行,为系统用户
  tail /etc/passwd #查看原因shell为/sbin/nologin
  zabbix:x:494:491:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
  tail /etc/shadow
  zabbix:!!:16349::::::
  [root@node1 ~]# chsh zabbix #修改shell
  Changing shell for zabbix.
  New shell [/sbin/nologin]: /bin/bash
  Shell changed.
  su -zabbix
  sudo -l#有权限,但是还是不行
  6、自定义报警脚本:
  zabbix_server.conf
  AlertScriptsPath=/usr/lib/zabbix/alertscripts
  报警脚本的特点:
  接受三个参数:
  $1: 指定的用户的“Media"中的"send to"所指向的位置;
  $2: 为指定的action中的“default subject”;
  $3: 为指定的action中的“default message”;
  短信报警:通过报警脚本实现
  7、自定义宏:宏就是变量,可以方便用户自定义item、模板、tigger
  宏:自动替换的文本模式
  内置宏:{MACRO_NAME}
  自定义宏:{$MACRO_NAME}
  全局: adminitration --> general --> macros
  模板: configration --> templates --> macros
  主机: configration --> hosts --> macros
  范围越小,优先级越高;
  触发器宏的定义

  模板宏的定义

  8、trapper 监控机制测试agent端和server端的连通性
  agent:zabbix-sender发送数据
  注意
  1、主机名
  create host ---name
  2、通过crontab周期性地通过zabbix-sender 发送数据给服务端
  3、创建item时,item type 为zabbix-trapper:key可以任意命名,但使用zabbix-sender发送数据时,使用key要与此处保持一致
  9、利用SNMP 协议来监控的简单介绍
  yum install net-snmp
  vim /etc/snmp/snmpd.conf
  com2sec notConfigUser  default       public
  可以修改认证方式
  com2sec localhost 172.16.0.0/16       local_public
  com2sec localhost 127.0.0.1       public
  group localGroup v2c localhost
  view  all   included .1.3.6.1.2
  access  localGroup ""      any       noauth    exact  prefix  all  none  none
  service snmpd restart
  ss -tunl 161 #udp协议
  snmpwalk -v 2c -c publick 127.0.0.1  #获取MIB树
  六、监控nginx的请求连接状态
  1、安装nginx 状态页配置
  Vim /etc/nginx/conf.d/default.conf
  location /status {
  stub_status on;
  access_log off;
  }

  2、状态页面各项数据的意义:
  active connections – 当前 Nginx 正处理的活动连接数。
  serveraccepts handled requests — 总共处理了 4 个连接 , 成功创建 4次握手 (证明中间没有失败的 ), 总共处理了 2个请求
  reading — nginx 读取到客户端的 Header 信息数。
  writing — nginx 返回给客户端的 Header 信息数。
  waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
  3、服务端测试并做处理
  Node2

  curl -s http://172.16.11.143/status | awk '/^Active/{print $NF}'
  Node1
  vim /etc/zabbix/zabbix_agentd.conf
  UserParameter=nginx.active
  • ,curl -s http://$1:$2/status | awk '/^Active/{print $$NF}'
      Service zabbix-agent restart
      Node2 #测试修改

      添加主机

      自定义主机宏

      自定义item

      自定义图片

      绘图成功

      七、zabbix监控开启自动发现功能
      主要功能就是自动发现主机、自动添加主机、自动套用模板、自动工作并绘图、注意开启这个功能的前提是1、它会耗费主机性能2、必须定义配置文件修改允许发现。
      1、定义发现规则

      2、定义发现后的action

      3、指定去在那个范围内发现

      4、定义发现主机后的动作、自动添加、自动套用模板

      5、实验查看是否自动添加、然后查看是否绘图等等

      另外zabbix还支持自动注册、只要主机上线就自动添加主机、对主机进行监控、主要是要配置服务配置文件、指定serviceactive、定义action就可以自动注册

      自动注册功能,要选这项,其它和自动发现一样




  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665099-1-1.html 上篇帖子: pacemaker+corosync实现zabbix高可用集群 下篇帖子: Cen7
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表