suncool 发表于 2019-1-18 08:03:16

zabbix 从0开始学习的步骤

  注明:以下学习过程参考了很多文档,如有问题,请留言联系!谢谢
  

  一、系统版本
  CentOS-6.5-x86_64
  

  二、环境
  1、主机名
  1.1 hostname
  1.2 vim /etc/sysconfig/network
  HOSTNAME=
  
  2、网卡
  vim /etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0
  ONBOOT=yes
  BOOTPROTO=static
  IPADDR=192.168.2.35
  

  3、selinux
  vim /etc/selinux/config
  SELINUX=disabled
  setenforce 0#使配置立即生效
  

  4、时间同步
  ntpdate 0.pool.ntp.org
  
  方法二
  ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  vi /etc/ntp/step-tickers
  加入一行:
  pool.ntp.org
  service ntpd start
  
  5、防火墙
  iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  iptables -I INPUT -p tcp --dport 21 -j ACCEPT
  iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
  service iptables save
  或:service iptablesstop 关闭防火墙
  

  二、LAMP环境
  yum-y groupinstall"Development Tools"
  
  1、安装Apache
  yum install -y httpd
  vim /etc/httpd/conf/httpd.conf
  ServerName www.domain.com:80去掉注释并把域名改成localhost或本机地址
  service httpd start
  chkconfig httpd on
  

  2、安装PHP与关联
  yum -y install php php-gd php-xml php-bcmathphp-mbstring php-mysql
  

  3、安装Mysql
  yum -y install mysql mysql-server mysql-devel
  service mysqld start
  chkconfig mysqld on
  mysqladmin -u root password '123456'         创建数据库登陆账户和密码
  查看数据库:show databases;
  查看库中的表:show tables FROM zabbix
  

  4、测试
  vim /var/www/html/index.php
  
  

  三、安装zabbix
  1、安装依赖软件包
  yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc libxml2*
  
  2、下载zabbix(可供选择的下载地址)
  http://www.zabbix.com/download.php
  http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/http://jaist.dl.sourceforge.net/project/zabbix/
  

  3、下载,解压zabbix (在官网选择要安装的版本)
  2.4
  wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.0/zabbix-2.4.0.tar.gz
  2.48(汉化)
  http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.8/zabbix-2.4.8.tar.gz
  2.2
  wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz
  
  tar xf zabbix
  cd zabbix
  4、编译
  ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2
  

  注1://--prefix指定zabbix安装目录,--enable-server 支持zabbix服务器,--enable-agent支持zabbix代理,--enable-proxy 支持zabbix代理服务器,--with-mysql 使用MySQL客户端库可以选择指定路径mysql_config,--with-net-snmp 使用net - snmp软件包,择性地指定路径NET- SNMP配置,--with-libcurl 使用curl包
  

  注2:
  报错:error: MySQL library not found
  安装:yum install mariadb-devel
  报错:error: LIBXML2 library not found,
  安装:yum install -y libxml2*
  报错:error: Invalid Net-SNMP directory
  安装:yum install -y net-snmp-devel
  
  5、安装执行
  make&&make install
  

  6、 进入zabbix目录创建用户
  groupadd zabbix                                 创建用户组zabbix
  useradd -g zabbix -m zabbix                  创建用户zabbix属于zabbix组
  chown -R zabbix.zabbix /usr/local/zabbix   改变zabbix安装目录的拥有者和组群
  

  7、创建数据库
  mysql -u root -p
  mysql> create database zabbix character set utf8;
  mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
  授权:本机能访问mysql,root用户下授权
  mysql> flush privileges;    ##刷新系统授权
  mysql>quit;
  

  8、导入数据库
  在解压后的zabbix目录中执行
  mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/schema.sql
  mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/images.sql
  mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/data.sql
  
  10、服务器端配置文件
  vim /usr/local/zabbix/etc/zabbix_server.conf
  DBName=zabbix      数据库名
  DBUser=zabbix      数据库登陆账户
  DBPassword=zabbix    数据登陆密码
  
  11、配置PHP
  vi /etc/php.ini
  max_input_time = 600
  # sed -i 's/max_input_time = 60/max_input_time = 600/g' php.ini
  max_execution_time = 300
  # sed -i 's/max_execution_time = 30/max_execution_time = 300/g' php.ini
  date.timezone = Asia/Shanghai
  post_max_size = 16M
  # sed -i 's/post_max_size = 8M/post_max_size = 16M/g' php.ini
  memory_limit = 128M
  
  service httpd restart
  
  12、启动设置
  1、修改启动参数
  修改启动脚本中的路径/usr/local改成/usr/local/zabbix
  cp misc/init.d/fedora/core/* /etc/init.d/
  sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_server
  sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd
  
  2、启动进程
  echo "/etc/init.d/zabbix_server start" >> /etc/rc.local
  echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local
  /etc/init.d/zabbix_server start
  /etc/init.d/zabbix_agentd start
  ps -ef | grep zabbix   查看进程
  
  3、开放端口
  iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT
  iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT
  service iptables save
  查看端口
  netstat -npl|grep 10050
  netstat -npl|grep 10051
  

  四、页面初始化
  cd zabbix-2.2.5
  cp -R frontends/php/ /var/www/html/zabbix
  打开:
  http://192.168.2.35/zabbix/
  

  

  五、客户机端安装配置
  1、主机名
  1.1 hostname
  1.2 vim /etc/sysconfig/network
  HOSTNAME=
  
  2、依赖环境
  yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc
  
  3、下载与服务器端同版本,步骤相似
  编译:
  ./configure --prefix=/usr/local/zabbix --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
  
  4.1、客户端配置文件
  vim /usr/local/zabbix/etc/zabbix_agentd.conf
  Server=#修改为zabbix服务器端IP
  ServerActive=#修改为zabbix服务器端IP
  Hostname=Zabbix server
  UnsafeUserParameters=1 #启用自定义key
  
  5、防火墙,端口
  iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT
  iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT
  service iptables save
  或:service iptables stop
  
  6、进入zabbix目录创建用户
  groupadd zabbix                                 创建用户组zabbix
  useradd -g zabbix -m zabbix                     创建用户zabbix属于zabbix组
  chown -R zabbix.zabbix /usr/local/zabbix   改变zabbix安装目录的拥有者和组群
  
  7、启动设置
  1、修改启动参数
  修改启动脚本中的路径/usr/local改成/usr/local/zabbix
  cp misc/init.d/fedora/core/* /etc/init.d/
  sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd
  
  2、启动进程
  echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local
  /etc/init.d/zabbix_agentd start
  ps -ef | grep zabbix   查看进程
  
  3、开放端口
  iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT
  iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT
  service iptables save
  查看端口
  netstat -npl|grep 10050
  netstat -npl|grep 10051
  
  8、测试与主机的链接(在zabbix-service端)
  /usr/local/zabbix/bin/zabbix_get -s 192.168.190.2 -p 10050 -k "system.uptime"
  注:192.168.190.2 指agentd端IP
  #有数据显示说明通信正常
  
  9、服务重启(如不能正常重启,则使用以下方法)
  查看进程
  ps ax|grep zabbix_agentd
  关闭进程
  ps ax|grep zabbix_agentd|grep -v grep |awk '{print $1}'|xargs kill -9
  启动服务
  /etc/init.d/zabbix_agentd restart
  

  六、控制台使用
  
  1、添加主机(主机组一样的创建方法)
  configuration(配置)---> Hosts(主机)---> Create host(创建主机)
  1.1Host选项
  host name主机IP
  visible name (显示的名字)
  Groups(组)
  New host group (新建组)
  Agent interfaces
  IP address被监控端IP
  
  1.2链接模板
  configuration ---> hosts ---> Name前选择要链接的服务器 ---> 左下角(下拉菜单)选择mass update(go) ---> 模板 ---> 选择模板“Template OS liunx”
  
  2、用户
  创建新登录用户
  管理 ---> 用户 ---> 右上下拉菜单处选择‘用户’ ---> 右上‘创建用户’ ---> 组群(添加超级超级管理员组) --->添加媒介(比如邮件) ---> 许可权 ---> 保存
  
  注:许可权 指:权限,当前用户对哪些主机有权限,选择”超级管理员“。
  
  3、图表数据
  Monitoring ---> Graphs ---> group / host / Graph
  
  4、item(监控项)
  configuration(配置)---> Hosts(主机)---> (主机) ---> (item) ---> Create item
  重点:key
  Nameitem的名字
  Typeitem类型,采集数据的方式
  keyitem的标识符(标记item的键),唯一,可接受参数
  Type of information采集的数据类型
  Flexible intervals采集数据间隔数据
  New flexible interval   添加采集数据间隔数据
  applicationitem组
  
  5、创建图像
  5.1Graphs
  Configuration---> Hosts ---> Graphs ---> Create Graphs
  Name图像名
  Graph type图像类型
  items (add)添加需要加进来的item(监控项)
  
  5.2 Screen
  configuration(配置)---> Screen ---> Create Screen
  
  6、Triggers(触发器)
  6.1表达格式:{:.()}
  server 主机名
  key 主机上关系,相应监控项(item)的key
  function 评估采集到的数据是否在河里范围内时所使用的函数
  parameter函数参数
  举例:
  {192.168.0.104:system.cpu.load.last(0)}>3
  说明:
  主机192.168.0.104上所有CPU的过去1分钟内的平均负载的最后一次取值大于3时将触发状态变换
  
  6.2创建triggers(触发器)
  configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers
  6.2.1Triggers(触发器)
  configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers
  Name (Triggers名)
  Expression(定义条件)
  Severity触发级别
  
  7、action (动作,操作)
  (宏参考文档:https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location)
  7.1定义媒介
  Administration ---> Media types ---> Create media type
  Name:媒介名字(自定义)
  Type:(媒介类型)
  
  7.2 接收人配置
  Administration ---> Users ---> (用户)---> Media ---> add:
  Type: (选择上一步自定义的媒介名)
  send to:(收件邮箱)
  ---> add ---> save
  

  7.3设置Action
  Configration ---> Action ---> Create action
  1.Actions项(发送邮件的格式和内容)
  Name:action的名字
  Default message(信息内容)
  Recovery message(转换成OK时发送信息)
  
  2.Conditions(发送警告的条件)
  Trigge = PROBLEM (触发器)
  
  3.Operation ---> New
  Step (告警级别)
  Operation type(告警方式)
  Send message(发送信息)
  ******Remote command (命令操作)
  Send to User groups(发送到的用户组)
  Send to Users(发送到的用户)
  Send only to (选择调用脚本)
  ---> add ---> save
  
  8、模板
  Configration ---> Templates
  Create Templates (创建模板)
  

  七、web监控
  

  网页状态码获取(正常值为200):
  curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" www.baidu.com
  

  1、首页是否能打开
  创建application
  1.1*********configuration ---> Host ---> Application ---> create application
  
  1.2configuration ---> Host ---> 你的主机 ---> web ---> 右上角Create scenario
  scenario 主要选项:
  Name:监控项的名称
  Application:放到哪个应用中
  Update interval:更新周期,默认60秒
  Agetn:模拟浏览器
  Variables:宏变量(没有可以不填)
  
  steps 主要选项
  name:当前step名称,item key中可以用到
  url:需要检测的网址
  POST:你需要post提交上去的内容(没有可以不填)
  Timeout:超时时间,默认15秒
  Required status codes:响应代码必须包含在里面,多个响应代码用逗号分隔
  正常响应码为:200
  
  
  web监控方案创建后自动添加以下item,可在创建trigger中直接使用
  说明:使用时,Scenario换为真是方案的名称
  
  web.test.in
  说明:页面(step)的下载速度,默认单位bps
  
  web.test.fail
  说明:出现错误的步骤(步骤指监控的页面):ailed step of scenario "Scenario".
  
  web.test.error
  说明:最后一次的错误信息:Last error message of scenario "Scenario".
  
  web.test.in
  说明:页面(step)的下载速度(指定相应方案Scenario的相应步骤step)
  
  web.test.rspcode
  说明:指定步骤中的页面的响应码,页面正常的响应码为200
  
  web.test.time
  说明:指定步骤中的页面的响应时间
  
  2、登陆*********
  scenario 选项:
  Variables:宏变量
  用来定义能登录的账号密码
  user=
  password
  steps 主要选项
  POST:你需要post提交上去的内容,
  例如:使用宏变量:user={user}&password={password}&Sign in
  
  3、验证登录*********
  steps 主要选项:
  Required string :Profile
  
  4、查看结果
  monitorning ---> web---> 筛选出你的主机 ---> 查看“WEB性能监控_FOR_TTLSA”,Status,显示OK 便是正常
  
  5、监控项*********
  web方案监控项当web监控项创建好之后,下面的key会被自动添加好(备注:Scenario为web方案的名称)
  web.test.in 整个阶段中的下载速度,单位字节/秒
  web.test.rspcode 检索指定阶段的http响应代码
  
  八、自定义邮件报警
  1、linux zabbix-server端配置
  mutt+msmtp下载安装:
  下载MSMTP
  # wget http://down1.chinaunix.net/distfiles/msmtp-1.4.30.tar.bz2
  # tar xvf msmtp-1.4.17.tar.bz2
  # cd msmtp-1.4.17
  # ./configure --prefix=/usr/local/msmtp
  # make
  # make install
  # cd /usr/local/msmtp/
  # mkdir etc #配置文件目录和配置文件都要自己建
  # cd etc
  # vim msmtprc #手动创建配置文件
  # account default
  # host smtp.163.com
  # port 25
  # from xman@163.com #要从哪个邮箱发出
  # auth login #这里如果使用on的话会报 "msmtp: cannot use a secure authentication method"错误
  # tls off
  # user xman@163.com #邮箱用户名
  # password xmanufo#邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性
  # logfile /var/log/mmlog
  保存退出。简单测试一下
  /usr/local/msmtp/bin/msmtp xman@163.com
  随便输入一些内容用ctrl+d结束。然后到邮箱查看
  
  安装MUTT
  yum -y install mutt
  # vim /etc/Muttrc
  # set sendmail="/usr/local/msmtp/bin/msmtp"
  # set use_from=yes
  # set realname="fan******_007@163.com"
  # set editor="vim"
  

  测试一下吧!
  echo "testmail" | mutt -s "测试" ufo@sina.com
  这里的-a 是指添加附件,如果是多个附件的话就 多加几个 -a 文件名
  

  脚本路径
  cd /usr/local/zabbix/share/zabbix/alertscripts/
  
  编写sendmail脚本:
  #!/bin/bash
  #zabbix use msmtp+mutt sendmail script.
  echo $1;#to email address.
  echo $2;#title.
  echo $3;#content.
  echo "$3" | mutt -s "$2" $1
  

  脚本权限:
  chmod +x sendmail.sh
  
  测试:
  ./sendmail.sh $1 $2 $3
  $1 收邮件地址
  $2 邮件标题
  $3邮件内容
  

  2、控制台配置使用sendmail.sh脚本
  2.1创建媒介
  Administration ---> Media types ---> Create media type
  # Name:媒介名字(自定义)
  # Type :Script(选择脚本Script)
  # Scriptname:sendmail.sh(脚本名)
  
  2.2接收人配置
  Administration ---> Users ---> (用户)---> Media ---> add:
  # Type: (选择上一步自定义的媒介名)
  # send to:(收件邮箱)
  ---> add ---> save
  

  2.3设置Action
  (宏参考文档:https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location)
  Configration ---> Action ---> Create action
  1.Actions项(发送邮件的格式和内容)
  Name:action的名字
  # Default message(信息内容)
  # Recovery message(转换成OK时发送信息)
  
  2.Conditions(发送警告的条件)
  # Trigger value = PROBLEM (触发器)
  
  3.Operation ---> New
  Step (告警级别)
  Operation type(告警方式,选择:Send message(发送信息))
  Send to User groups(发送到的用户组)
  # Send to Users(发送到的用户)
  # Send only to (选择调用脚本)
  # ---> add ---> save
  
  2.4 测试
  
  
  十、测试操作
  1、主机:node1无任何模板和触发器
  用户:admin
  
  2、自定义item
  选定node1对应的items ---> greate item --->
  Name:Network Outbound Rating
  key:net.if.out
  store value:Delta(speed per second)
  application:Net
  
  Name:Network Inbound Rating
  key:net.if.in
  store value:Delta(speed per second)
  application:Net
  
  Name:CPU Switches
  key:system.cpu.switches
  store value:As is
  application:CPU
  
  Name:CPU Interrupts
  key:system.cpu.intr
  store value:As is
  application:CPU
  
  save 保存
  查看各个item采集的数据图像
  Monitoring---> Latestdata ---> Graph
  
  3、可视图
  3.1 自定义Graphs
  图一:Network Outbound Rating
  Network Inbound Rating
  图二:CPU Switches
  CPU Interrupts
  
  3.2 自定义Screen
  
  4、Triggers(触发器)
  configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers
  自定义:Network Inbound Rating 的 Triggers(触发器)
  Expression(定义条件)
  {node1:net.if.in.last()}>10000
  Severity触发级别
  High
  
  5、设置邮件报警
  当触发Triggers,邮箱便会收到邮件
  
  
  十一:本机测试
  1、创建媒介
  Administration ---> Media types ---> Create media type
  name:localhost_mail(自定义名)
  Type:Email
  SMTP server:localhost
  SMTP helo:localhost
  SMTP email:zabbix@localhost
  
  2、创建收件人媒介配置(测试用admin配置)
  Administration ---> Users ---> (admin)---> Media ---> add:
  # Type: localhost_mail
  # send to:root@localhost
  ---> add ---> save
  
  3、action动作配置
  Configration ---> Action ---> Create action
  1.Actions项(发送邮件的格式和内容)
  Name:action的名字
  # Default message(信息内容)
  # Recovery message(转换成OK时发送信息)
  
  2.Conditions(发送警告的条件)
  # Trigger value = PROBLEM (触发器)
  
  3.Operation ---> New
  Step:1-3(告警级别)
  Operation type:(告警方式,选择:Send message(发送信息))
  # Send to Users:Admin
  # Send only to:localhost_mail
  # ---> add ---> save
  
  

  十二、自定义宏
  官方参考文档:
  https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location
  
  变量可以用于如下地方:
  item 名称
  item key 参数
  触发器名称和描述
  触发器表达式
  其他地方
  
  宏变量优先级:
  主机宏(checked first)
  主机模板定义的宏,如果有多个模板,那么按照模板越靠前那么宏的优先级越高
  全局宏(checked last)
  
  自定义宏
  定义全局宏
  Administration → General → Macros
  
  十三、自定义监控
  客户端配置文件 zabbix_angentd.conf 里面配置 UserParameter=1.
  
  语法如下:
  UserParameter=,
  
  示例:
  1、自定义监控客户端free,(zabbix_angentd端添加)
  vim zabbix-agentd.conf #zabbix-agent配置文件添加
  UserParameter=memory.free,/usr/bin/free | awk '/^Mem/{print $4}'
  重启zabbix_angentd
  
  测试是否定义成功:(在zabbix_server端)
  /usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.free"
  返回了数据,即表示成功
  
  控制台添加items
  key:memory.free
  

  灵活的自定义 key:
  UserParameter=key
[*],command
  

  示例:
  自定义监控cat /proc/meminfo下的所有项,
[*]指/proc/meminfo下的项目参数
  UserParameter=memory.usage
[*],/bin/cat /proc/meminfo | awk '/^$1:/{print $$2}'
  

  测试是否定义成功:(在zabbix_server端)
  /usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage"
  /usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage"
  /usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage"
  

  控制台添加items
  key:memory.usage
  key:memory.usage
  key: memory.usage
  
  实战:监控nginx(本机IP:192.168.0.106)
  (参考文档:http://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/)
  
  nginx status信息
  curl http://127.0.0.1/ngx_status
  
  yum安装nginx:
  rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
  yum -y install nginx
  service nginx start
  
  配置:
  cd /etc/nginx/conf.d/
  vim default.conf
  nginx.status开启方法:
  server{
  ...
  location /status {
  stub_status on;
  access_log off;
  allow 192.168.0.0/16;
  deny all;
  }
  }
  
  nginx -t检查语法
  
  状态页面各项数据的意义
  active connections - 当前 Nginx 正处理的活动链接数
  serveraccepts handled requests - 总共处理了233851个链接,成功创建233851次握手(证明中间没有失败的),总共处理了687942个请求(平均每场握手处理了2.94个数据请求)
  reading - nginx 读取到客户端的 header 信息数
  writing - nginx 返回给客户端的 header 信息数
  waiting - 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是Nginx已处理完正在等候下一次骑牛指令的驻留链接
  
  nginx压力测试:
  ab -n 1000 -c 100 http://192.168.0.106/status/
  
  vim /usr/local/zabbix/etc/zabbix_agentd.conf
  修改
  UnsafeUserParameters=1
  
  文档末尾:添加以下内容:
  UserParameter=Nginx.active
[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/{print $NF}'
  UserParameter=Nginx.reading
[*],/usr/bin/curl -s "http://$1:$2/status" | grep 'Reading' | cut -d" " -f2
  UserParameter=Nginx.writing
[*],/usr/bin/curl -s "http://$1:$2/status" | grep 'Writing' | cut -d" " -f4
  UserParameter=Nginx.waiting
[*],/usr/bin/curl -s "http://$1:$2/status" | grep 'Waiting' | cut -d" " -f6
  UserParameter=Nginx.accepted
[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]++[ \t]++[ \t]++/{print $$1}'
  UserParameter=Nginx.handled
[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]++[ \t]++[ \t]++/{print $$2}'
  UserParameter=Nginx.requests
[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]++[ \t]++[ \t]++/{print $$3}'
  说明:
  $1 指主机HOST(IP或域名)
  $2 端口
  
  服务器端测试:
  /usr/local/zabbix/bin/zabbix_get -s 192.168.0.106 -k "Nginx.accepted"
  
  控制台(192.168.0.105/zabbix)key
  Nginx.activeas is
  Nginx.readingas is
  Nginx.writingas is
  Nginx.waitingas is
  Nginx.accepteddelta
  Nginx.handleddelta
  Nginx.requestsdelta
  
  网页的http_code:
  UserParameter=web.http_code:curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" 192.168.2.35/index.php
  

  第一阶段总结:定义一次完整的监控:
  1、添加主机(主机组)
  2、添加item(内置的简单图形 Monitoring ---> Latest data)
  3、trigger(event:OK ---> Problem,Recovery)
  4、action(发通知 message(通知信息中使用宏)conditond(自定义触发条件),operation(step))
  5、媒介 Administration ---> Media types
  Email
  Script(脚本)
  6、自定义图形
  1、Graphs
  2、screen
  7、map(拓扑图)***********
  8、定义模板
  configuration --->Templates
  
  十四、自动发现
  1、定义模板
  1、创建定义模板
  configuration --->Templates ---> creat Template
  必填参数:
  Template name
  Visible name
  Groups
  New group
  
  2、为自定义的模板添加item
  configuration --->Templates ---> 创建的模板 ---> item ---> create item
  
  3、为创建的item创建trigger
  
  4、为创建的item创建graphs
  
  2、discovery(发现)设置:
  configuration ---> Discovery ---> create Discovery rule(自定义发现规则)
  Name
  Discovery by proxy
  IP range:(IP范围,如:192.168.2.1-100)
  Delay (in sec):(延迟时间)
  Checks (New)
  Check type:zabbix agent (发现规则)
  Port range:10050
  Key:(获取其中监控的一个key作为获取的手段)
  Device uniqueness criteria: IP address
  
  3、action添加主机:(添加主机:定义接口,关联模板)
  configuration ---> Action ---> Event source:(discovery) ---> create action
  1、action
  Name
  2、Conditions(发现条件)
  New condition
  Host IP=
  Discovery rule =
  Discovery status = Discovered
  3、operations(发现后的操作)
  Add host(添加发现的主机)
  Link to templates: Test-Template(为添加的主机连接测试模板)
  
  自动注册
  configuration ---> Action --->Event source:(Auto registration) ---> create action
  
  4、移除主机
  configuration ---> Action ---> Event source:(discovery) ---> create action
  1、action
  Name
  2、Conditions
  Discovery status = "Lost"
  Host IP=
  3、operations(发现后的操作)
  Remove host
  
  

  十五、分布式环境中使用zabbix_proxy
  
  1、依赖环境
  yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc
  
  2、proxy安装配置
  下载,解压zabbix (在官网选择要安装的版本)
  2.4
  wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.0/zabbix-2.4.0.tar.gz
  2.48(汉化)
  http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.8/zabbix-2.4.8.tar.gz
  2.2
  wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz
  
  3、下载与服务器端同版本,步骤相似
  编译:
  ./configure --prefix=/usr/local/zabbix --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl
  注:如需监控proxy端,可安装:--enable-agent
  
  make && make install
  

  4、安装mysql
  yum -y install mysql mysql-server mysql-devel
  service mysqld start
  chkconfig mysqld on
  mysqladmin -u root password '123456'         创建数据库登陆账户和密码
  查看数据库:show databases;
  查看库中的表:show tables FROM zabbix
  

  5、创建数据库
  mysql -u root -p
  mysql> create database zabbix_proxy character set utf8;
  注:创建数据库 zabbix_proxy
  mysql> grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
  授权:本机能访问mysql的zabbix_proxy库,root用户下授权
  mysql> grant all on zabbix_proxy.* to zabbix@'192.168.%.%' identified by 'zabbix';
  授权:192.168.网段的用户能访问mysql的zabbix_proxy库,root用户下授权
  注:在其他服务器登录
  mysql -u zabbix -h192.168.%.% -p
  mysql> flush privileges;    ##刷新系统授权
  mysql>quit;
  

  6、导入数据库
  在解压后的zabbix目录中执行
  mysql -uzabbix -pzabbix -hlocalhost zabbix_proxy < database/mysql/schema.sql
  
  7、配置文档
  vim /usr/local/zabbix/etc/zabbix_proxy.conf
  Server=#zabbix-server端IP
  Hostname=#必须和控制台端的Proxy name 保持一直,建议使用IP
  DBHost=localhost#数据库主机
  DBName=zabbix_proxy#数据库名,与前面创建的数据名一定要相同
  DBUser=zabbix#数据库登录用户
  DBPassword=zabbix#数据库密码
  ConfigFrequency=1#默认3600秒,建议修改为短时间
  DataSenderFrequency=10#默认1秒,建议修改为10-30秒
  ProxyOfflineBuffer=1#默认1小时
  

  8、进入zabbix目录创建用户
  groupadd zabbix                                 创建用户组zabbix
  useradd -g zabbix -m zabbix                  创建用户zabbix属于zabbix组
  chown -R zabbix.zabbix /usr/local/zabbix   
  
  9、启动设置******
  /usr/local/zabbix/sbin/zabbix_proxy
  
  查看proxy端是否启动
  ss -tanlp
  
  重启方法:同zabbix-agentd端重启方法
  
  10、需要被proxy监控的host的zabbix_agentd.conf的Server=指向proxy的IP
  
  11、配置zabbix-server控制台端
  11.1、创建proxy
  Administration ---> DM ---> creat proxy
  必填选项:
  Proxy name
  #必须和zabbix_proxy.conf配置文件的Hostname=保持一致
  Proxy mode:Active
  11.2、创建主机
  Configuration ---> Hosts ---> creat host
  必填选项:
  Host name
  Visible name
  Agent interfaces
  Monitored by proxy
  重点:选择创建proxy时的Proxy name
  
  11.3、创建item、trigger或嵌套模板
  

  十六、监控Windows
  1、agents端win版下载(官方下载)
  conf目录存放是agent配置文件 bin文件存放windows下32位和64位安装程序
  示例:
  c:/zabbix
  c:/zabbix/bin/
  c:/zabbix/conf/
  c:/zabbix/logs/
  
  2、配置与安装
  2.1 配置zabbix agent相关配置。
  找到conf下的配置文件 zabbix_agentd.win.conf ,修改以下参数:
  LogFile=c:/zabbix/logs/#日志路径
  Server#zabbix-server端IP
  Hostname#本机名
  ServerActive#zabbix-server端IP
  

  3、启动
  开始---> 运行 ---> CMD
  cd c:\zabbix\bin
  zabbix-agentd.exe -c c:\zabbix\conf/zabbix_agentd.win.conf
  安装成Windows服务
  service.msc开始Windows服务控制台--->开启服务
  netstat -an查看端口是否被监控
  
  4、控制台设置
  添加主机、item、trigger
  

  十七、监控类型
  zabbix agent
  zabbix 自带的客户端程序(被动模式)
  需要注意的是,server 检索数据有超时限制,最大超时时间 30 秒,如果检索数据经常超过 30 秒,那么,不建议你使用主动模式的agent
  
  zabbix agent (active )
  agent主动模式
  
  simple check
  基本的检测,可以检测网络、端口、fping 这些,功能很少并且无需安装客户端。
  
  snmp check
  适用于以下场景:
  客户基于安全考虑,不同意安装agent
  路由器、打印机等无法安装的设备
  

  

  十八、维护模式
  Configuration(配置) → Maintenance(维护)—>点击 Create maintenance period (创建维护周期)
  Maintenance
  Maintenance type 维护类型
  With data collection – 依旧收集数据
  No data collection– 暂停收集数据
  Active since维护周期开始时间
  Active till维护结束时间
  
  Periods:维护周期
  
  十九、zabbix命令
  19.1、zabbix_server
  启动zabbix_server端
  zabbix_server -c
   指配置.conf文件路径
  
  19.2、获取agent端的key的数据
  zabbix_get -s --host -p-k --key
  --host 指客户端主机名或IP
   指监控端口
  --key   指客户端的key
  实例
  ./zabbix-get -s 127.0.0.1 -p 10050 -k "system.hostname"
  
  19.3、zabbix_agentd
  启动zabbix_agentd端
  zabbix_agentd -c
   指配置.conf文件路径
  
  19.4、zabbix_proxy
  启动 zabbix_proxy 端
  zabbix_proxy -c
   指配置.conf文件路径
  
  二十、优化
  1、操作系统优化
  2、数据库优化
  3、数据库分离
  4、数据库引擎
  mysql5.6或更高的版本
  5、其他优化
  减少item获取时间
  减少不必要的监控项
  

  
  
  终章:实战
  zabbix监控
  puppet_master
  mem cached
  mysql (master)
  mysql (slave)
  nginx(mogilefs) amoeba
  mogilefs mogstored
  tomcat
  
  

  

  

  

  

  

  

  

  

  

  

  

  
  
  
  
  
  
  其它:
  zabbix-service端安装配置,页面初始化“简易脚本”
  

  #!/bin/bash
  #
  # 环境
  yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc libxml2*
  # 下载安装
  cd /usr/local/src
  wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz
  tar xf zabbix-2.2.5.tar.gz
  cd zabbix-2.2.5
  ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2
  make && make install
  # 创建用户
  groupadd zabbix
  useradd -g zabbix -m zabbix
  chown -R zabbix.zabbix /usr/local/zabbix
  # 数据库设置
  mysql -u root -p123456 -e "
  create database zabbix character set utf8;
  grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
  flush privileges;
  quit"
  #数据库导入
  mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/schema.sql
  mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/images.sql
  mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/data.sql
  # 修改配置文件:zabbix_server.conf
  cd /usr/local/zabbix/etc/
  sed -i 's/DBUser=root/DBUser=zabbix/g' zabbix_server.conf
  echo DBPassword=zabbix >> zabbix_server.conf
  # 修改php配置文件
  cd /etc/
  sed -i 's/max_input_time = 60/max_input_time = 600/g' php.ini
  sed -i 's/max_execution_time = 30/max_execution_time = 300/g' php.ini
  sed -i 's/post_max_size = 8M/post_max_size = 16M/g' php.ini
  echo 'date.timezone = Asia/Shanghai' >> php.ini
  service httpd restart
  # 启动设置
  cd /usr/local/src/zabbix-2.2.5/
  cp misc/init.d/fedora/core/* /etc/init.d/
  sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_server
  sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd
  echo "/etc/init.d/zabbix_server start" >> /etc/rc.local
  echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local
  /etc/init.d/zabbix_server start
  /etc/init.d/zabbix_agentd start
  cp -R frontends/php/ /var/www/html/zabbix
  

  

  

  

  

  

  

  




页: [1]
查看完整版本: zabbix 从0开始学习的步骤