狐狸情 发表于 2019-1-19 10:37:57

zabbix 的部署及基础知识的讲解

  一、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,监控端
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958435eGAy.png
  Zabbix 是基于zabbix协议工作的,其底层是依赖于snmp的工作方式来工作的,它的模型是
  Server/agent 方式
  Service : 10051 :由三部分组成(zabbix-web gui【依赖lamp平台、配置接口、展示数据】、zabbix-server【周期性去agent端采集数据】、service database【负责存储数据】)
  Agent: 10050:收集本机数据、暂时存储、监听等待server端来采集数据
  部署应用场景
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958584Ip0X.png
  2、zabbix一次监控的全过程原理图
  定义监控主机,主机添加到主机组,定义item(监控主机的监控项,【监控资源】),graphs绘图【不是必须、套用用模板就不用】,teiggers:定义触发器,action:定义触发器触发后要执行的动作,比如服务重启,发邮件给管理员,动作升级,发邮件给部门主管
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_14129586214Ave.png
  3、一次全监控的工作流程
  数据采集、数据存储、数据展示、服务报警与升级
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958640BHtV.png
  三、实验安装zabbix并监控服务器服务
  node1centos6.5 172.16.11.143zabbix(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 > 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内置数据库
  # mysql -u root -h 127.0.0.1 -p zabbix < images.sql
  # mysql -u root -h 127.0.0.1 -p zabbix < images.sql
  # mysql -u root -h 127.0.0.1 -p zabbix < data.sql
  # 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不然要解决再点击下一步
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958663ZiAa.png
  配置数据存储连接数据库
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958672gUGd.png
  端口设置及配置信息显示
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958683DIxI.png
  安装完成
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_14129586918tNe.png
  登录配置监控服务
  zabbix 安装的默认账户和密码是
  admin
  zabbix
  登录后注意改管理员密码
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958698Ki8t.png
  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的定义
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958723lTJO.png
  2、图片的定义
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958736X4L6.png
  3、触发器的定义
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958748Rl3b.png
  4、添加用户并设置用户权限、否则无法报警、在此处我们也可以修改默认管理员账户密码、和添加新账户让它只有监控主机服务的权限不具有修改监控配的权限
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958763sCt9.png
  5、添加报警发送方式,发邮件、有三种方式email、sms、script、jabber
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958775P6PP.png
  6、四种报警方式选择
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958782RbQ1.png
  7、action的定义触发事件发邮件给谁
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958791SXZc.png
  定义发邮件的级别
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958801dQqo.png
  8、定义报警升级
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958812fpDO.png
  9、图片设置展示
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_14129588216gDw.png
  五、对key的理解
  1、Key的主要应用是在定义item时,数据存储的设置,如果会自动增长的要改成
  Delta(speed per second):每秒数率(value - prev_value)/(time - prev_time)
  其它的则是AS is :不做任何处理
  2、举例解释
  Node2
  MariaDB > select * from items\G
  MariaDB > select key_,type from items;
  zabbix_get -h 获取帮助
  Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load"
  # zabbix_get -s 172.16.11.144 -k "net.if.out"
  44660716
  # zabbix_get -s 172.16.11.144 -k "net.if.in"
  44660724
  # 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
  # ssh 172.16.11.143 "date -s '20141008 15:24:30'";date -s '20141008 15:24:30'
  Wed Oct8 15:24:30 CST 2014
  Wed Oct8 15:24:30 CST 2014
  解决时间不同步的机制
  4、采样时间设置应该注意的事项
  -数据保存时长可以自己设定#超过保存时长【heas】keep自动清理
  -保留历史趋势数据:每小时的最大值、最小值、平均值、 [保存时间较数据时长较长]
  -采样时长
  -监控时长定义
  node2
  yum install hping3
  hping3 172.16.11.144 --faster
  5、自定义监控网页并设置action服务端可以远程重启agent的httpd服务
  -添加itemnet.tcp.service
  -triggers {172.16.11.143:net.tcp.service.last(0)}=0
  -graphs 设置为线条图 01
  -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::::::
  # chsh zabbix #修改shell
  Changing shell for zabbix.
  New shell : /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
  范围越小,优先级越高;
  触发器宏的定义
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958824R8Ms.png
  模板宏的定义
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958830pogO.png
  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 notConfigUserdefault       public
  可以修改认证方式
  com2sec localhost 172.16.0.0/16       local_public
  com2sec localhost 127.0.0.1       public
  group localGroup v2c localhost
  viewall   included .1.3.6.1.2
  accesslocalGroup ""      any       noauth    exactprefixallnonenone
  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;
  }
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958839FIOV.png
  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
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958842WIG1.png
  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 #测试修改
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958843vbbW.png
  添加主机
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958849EPvj.png
  自定义主机宏
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412958853xUu4.png
  自定义item
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412959078bKBs.png
  自定义图片
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412959084PEec.png
  绘图成功
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_14129590892Hia.png
  七、zabbix监控开启自动发现功能
  主要功能就是自动发现主机、自动添加主机、自动套用模板、自动工作并绘图、注意开启这个功能的前提是1、它会耗费主机性能2、必须定义配置文件修改允许发现。
  1、定义发现规则
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412959095YmFx.png
  2、定义发现后的action
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412959109lKJu.png
  3、指定去在那个范围内发现
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412959120dSUK.png
  4、定义发现主机后的动作、自动添加、自动套用模板
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412959132RyXd.png
  5、实验查看是否自动添加、然后查看是否绘图等等
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_141295913951qX.png
  另外zabbix还支持自动注册、只要主机上线就自动添加主机、对主机进行监控、主要是要配置服务配置文件、指定serviceactive、定义action就可以自动注册
http://1983939925.blog.运维网.com/attachment/201410/10/8400375_1412959144UPsk.png
  自动注册功能,要选这项,其它和自动发现一样



页: [1]
查看完整版本: zabbix 的部署及基础知识的讲解