boss44 发表于 2019-1-18 14:16:47

zabbix监控系统的介绍及zabbix监控系统的高级应用

  监控系统:zabbix
  数据的采集-》存储-》报警(告警)-》展示
  监控对象:包括主机,主机之间的数据流量
  主机:硬件设备
  系统指标:CPU,memory io(disk磁盘io network网络io)
  cpu:sys(系统空间的比例),usr(用户空间的比例) idle
  业务指标:
  SNMP:简单网络管理协议 实现网络管理
  jmx:java管理平台
  tps:每秒的事务数
  qps:每秒的查询书
  采集:
  多保留趋势数据,历史数据只保留最近几个月的时间
  存储:
  关系型数据库
  rrd轮询存储系统(cacti)轮转 没有对应的接口
  时序数据库:时间序列产生的密集型数据存储
  influxdb
  报警:(发邮件)
  写程序调用ATI服务端的接口
  展示:
  展示界面
  nagios:很好的告警系统,默认没有存储系统,不能进行展示
  cacti:很好的展示系统,告警系统不行
  zabbix:监控系统,整合了所有,接口简单直观 c语言编写 ,展示接口使用PHP
  采集:接口(agent snmp ipml imx)
  存储:mysql pgsql
  报警:email,script脚本(短信,微信) ,远程命令,报警升级
  展示:简单图 图形 screen slide show map....
  grafana:作为众多的展示接口 可以作为zabbix的接口
  statsd:数据采集器
  promethues(适用于大规模集群系统监控)+grafana展示
  graphite+grafana:
  zabbix常用的术语:
  host (主机)
  host group (主机组)
  item 监控项
  trigger (触发器)
  event(事件)
  action(动作)
  escaiation(报警升级)
  media(媒介)
  notification(通知)
  remote command(远程命令)
  template(模版)
  application(应用)
  web场景(web scennario)
  frontend(前端)zabbix的web接口
  trigger(触发器):ok ,PROBLEM,event,action(remote command,alert)
  监控核心:监控项
  zabbix proxy 分布式监控 可一将部分监控委托出去
  zabbix监控Java需要统一专门的网关来实现
  实现过程:
  准备三台虚拟机:node1 node2 server
  LFT[ ntpdate 172.17.0.159(server ip)
  1.sever
  wget下载包
  zabbix-release-3.4-2.el7.noarch.rpm后缀为rpm要用 yum localinstall 安装
  rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
  //yum install zabbix-release-3.4-2.e17.noarch.rpm
  yum info zabbix-agent
  yum repolist
  确定数据库配置正确
  vim /etc/my.cnf.d/server.cnf
  
  skip_name_resolve=ON
  innodb_buffer_pool_size=256M
  innodb_file_per_table=ON
  max_connections=2000
  log-bin=master-log
  systemctl start mariadb.service
  //mysql_secure_installationmysql安全脚本,运行后进入mysql需要密码
  yum install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent zabbix-get zabbix-sender
  mysql
  >create database zbxdb CHARACTER SET 'utf8 ';建立数据库
  >GRANT ALL ON zdxdb.* TO 'zbxuser'@'172.17.0.%'IDENTIFIED BY 'zbxpass';
  >flush privileges; 刷新授权
  >exit
  rpm -ql zabbix-server-mysql
  cp /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz ./
  gzip -d create.sql.gz
  导入指定文件
  mysql -uzbxuser -h172.17.0.159 -pzbxpass zbxdb < create.sql
  mysql -uzbxuser -h172.17.0.159 -pzbxpass
  >show databases;
  >use zbxdb;
  >show tables;
  >exit
  cd /etc/zabbix
  cp zabbix_server.conf{,.bak}
  vim zabbix_server.conf
  //grep -i &quot;^####&quot; zabbix_server.conf
  listenport=10051
  DBHost=172.17.0.159
  DBname=zbxdb
  DBUser=zbxuser
  DBPassword=zbxpass
  DBport=3306
  systemctl start zabbix-server.service 启动进程
  systemctl status zabbix-server.service查看状态
  cd /etc/httpd/conf.d
  vim zabbix.conf
  vim /etc/php.ini
  data.timezone=Asia/Shanghai
  systemctl start httpd.service
  ss -ntl 查看80端口是否开启
  zabbix_get -s 172.17.0.170 -p 10050 -k &quot;net.if.in&quot;手动获取参数
  浏览:
  172.17.0.159/zabbix
  next step
  next step
  mysql
  172.17.0.159
  0
  zbxdb
  zbxuser
  zbxpass
  next step
  172.17.0.159
  10051
  server
  next step
  next step
  finish
  admin
  zabbix
  sign in 进入仪表盘
  configuration配置
  hosts
  hostgroups
  creat
  mysrvs
  hosts
  creat
  node1.magedu.com
  node1
  mysrvs
  172.17.0.170
  add
  Application
  creat
  cpu utils
  add
  creat
  memory stats
  add
  creat
  Network interface stats
  items
  creat
  rate of interrupt
  zabbix agent
  system.cpu.intr cpu的中断次数
  172.17.0.170:10050
  5s
  system stats
  preprocessing
  change per second
  add
  monintoring
  select
  node1
  apply
  graph
  configuration配置
  host
  action
  trigger
  operation
  //zabbix_get -s 172.17.0.170 -p 10050 -k &quot;system.cpu.intr&quot;
  configuration
  templates
  configuration
  hosts
  item
  rate of packets(in)
  zabbix agent
  net.if.in
  172.17.0.170:10050
  numeric(unsigned)
  pkts/sec
  5s
  network interface stats
  add
  preprocessing
  change per second
  add
  克隆
  configuration
  hosts
  items
  找到想要克隆的
  clone就可以
  定义触发器:
  configuration
  hosts
  triggers
  creat
  hight speed in pkts
  waring
  {node1.magedu.com:net.if.in.last(0)}>100//add
  add
  动作:
  configuration
  actions
  action
  operation
  send message
  Asministration
  users
  admin
  media
  add
  local_email
  root@localhost
  add
  not classifiled
  tail /var/log/zabbix/zabbix_server.log
  2.node1
  zabbix-release-3.4-2.el7-noarch.rpm
  wget zabbix-release-3.4-2.el7-noarch.rpm
  rpm -ivh zabbix-release-3.4-2.el7-noarch.rpm
  yum repolist
  yum install zabbix-agent zabbix-sender
  cd /etc/zabbix
  vim zabbix_agentd.conf
  server=172.17.0.159
  listenip=0.0.0.0
  serverActive=172,17.0.159
  hostname=node1.magedu.com
  systemctl start zabbix-agent.service
  ss -tnl
  yum install redis
  vim /etc/redis.conf
  bind 0.0.0.0
  systemctl start redis.service
  ss -ntl6379
  visudo
  zabbix ALL=(ALL)NOPASSWD:ALL
  # befaultrequiretty
  cd /etc/zabbix
  vim zabbix_agent.conf
  EnableRemoteCommands=1
  LogRemoteCommands=1开启记录日志
  systemctl restart zabbix-agent.service
  *在浏览器加入redist
  configuration
  hosts
  item
  redis status
  zabbix agent
  neet.tcp.service
  172.17.170.x:10050
  numeric
  5s
  (new applicaition )redis
  add
  monitoringg
  latest data
  redis
  apply
  hosts
  trigger
  creat
  redis status down
  .....
  add
  actions
  action
  redis service unavailable
  triggernode1:redis service down
  add
  operation
  5s
  new
  5m
  1 1
  remote command
  current host
  custom script
  zabbix agent
  sudo /usr/bin/systemctl restart redis service
  add
  add
  recovery
  send messages
  admin
  local_email
  add
  add
  vmstat 1 查看
  最后展示:
  自定义graph
  configuration
  hosts
  node1 graph点击
  create
  interface traffic packets
  exploded/normal/stacked/pie
  item
  add
  rate of packets(in)
  tate of packets(out)
  select
  add
  monitoring
  graphs
  mysrvs node1interface traffic packets
  screens
  node1.magedu.com monitoring graphs
  2
  2
  add
  编辑
  screens
  edit screen
  change
  maps
  create
  map
  模版:
  configuration
  templates
  create
  template
  redis stats
  redis stats
  db services
  add
  宏():
  configurationActionsoperation
  Default subject:
  Default message:
  item
  name redis listen status{$REDIS_PORT} 运用宏
  keynet.tcp.listen[{$REDIS_PORT}]
  全局宏:
  Administration
  General   Macros
  {$SNMP_COMMUNITY} public
  {$REDIS_PORT}
  Update
  //*在server的虚拟机在 安装 redis
  yum install redis
  vim /etc/redis.conf
  bind 0.0.0.0
  systemctl start redis.service
  //
  zabbix
  采集:agent/snmp/IPMI/jmx
  设备:主机(hosts)-->主机组(hostgroups)
  监控项(items)-->应用组(applications)
  触发器(triggers 表达式)--> trigger events
  动作(actions CONDITIONS ,OPERATIONS ,RECOVERY OPERATIONS)
  OPERATIONS:
  remote command
  send message-->USERS(media)
  media type:
  可视化:graph slide show map
  监配控制:
  术语:host group-->host -->application -->item-->trigger-->action(conditions operations)
  graph
  simple:每个item定义完成后自动生成
  customed:用于将多个item的数据整合于一个图形中展示
  items:key+parameter(参数)
  key:
  zabbix内建
  type:
  agent(server:pull)被动模式
  agent(active) (agent:push)主动模式
  snmp v1
  .....
  用户自定义(userprameter)
  采集数据:item
  采集到的数据类型:
  数值:
  整数
  浮点数
  字符数:
  字符串
  文本
  存储的值:
  As is:不对数据做任何处理
  Delta:(simple change) 本次采样减去前一次采样的值的结果
  Delta:(speed per second)本次采样减去前一次采样的值,再除以经过的时长
  trigger触发器:界定某特定的item采集到的数据的非合理区间或非合理状态:逻辑表达式
  逻辑表达式:阈值 ;通常用于定义数据的不合理区间
  ok:正常 状态-->叫老的zabbix版本,其为true;
  problem:非正常 状态-->较老的zabbix版本,其为true
  ok-->problem
  pecovery:problem-->ok
  定义触发器的依赖关系
  触发器存在可调用的函数:
  nodata()
  last()
  data()
  time()
  now()
  dayofmonth()
  触发器表达式:
  {hostname:key.function(arguments)}
  > < = # (not equal)...
  {n1.magedu.com:net.if.in.last(#1)}>15
  trigger间存在依赖关系:
  zabbix serverrouter1host1
  事件机制:
  四种事件源:trigger discovery,auto regilstration internal
  media:媒介
  告诫信息的传递通道;
  类型:
  Email:邮件
  script:自定义脚本
  sms:短息
  jabber :
  ez texting:
  接收信息的目标为zabbix用户:
  需要用户上定义对应各种媒介通道的接收方式
  Action:
  conditions:
  多个条件之间存在逻辑关系
  展示接口:
  graph:simple custom
  screen:把多个graph整合于同一个屏幕进行展示
  map
  模版:
  主机配置模版:用于连接至目标主机实现快速监控管理
  link unlink unlink and clear
  模版可继承
  宏:macro 预设的文本替换模式
  级别
  全局:Administration-->general -->macros对所有主机所有模版都有效
  模版:编辑模版-->macros 对于链接至此的主机都有效
  主机:编辑主机-->macros只对单个主机有效
  类型:
  内建:{MACRO_name}
  自定义:{$MACRO_NAME}
  命名方式:大写字母,数字和下划线;
  action:
  运行测试: zabbix_get -s 172.17.0.159 -p 10050 -k &quot;net.tcp.listen&quot;
  vim /etc/redis.conf
  tail /var/log/zabbix/zabbix_server.logs
  hostnamectl set-hostname node1.magedu.com 修改主机名
  ntpdate 172.17.0.xxx 同步时间
  exec bash 刷新
  高级用法:自定义
  agent: user parameters(key值)能不反回字符型数值就不返回字符型数值
  key的使用:
  如下:
  node1:
  systemctl start zabbix-agent.service
  iptables -F
  cd /etc/zabbix
  cd zabbix_agent.d
  vim memory_usage.conf
  UserParameter=memory.used,free -m | awk '/^Mem/{print $3}'
  UserParameter=memory.stats
[*], cat /proc/meminfo | awk '/^$1/{print $$2}'
  systemctl restart zabbix-agent.service
  server:
  systemctl start zabbix-server.service
  systemctl start mariadb
  systemctl start httpd
  iptables -F
  zabbix_get -s 172.17.0.170 -p 10050 -k &quot;memory.used&quot;
  实例2:
  1.node1
  cd /etc/zabbix
  cd zabbix_agent.d
  yum install nginx php-fpm
  vim /etc/php-fpm.d/www.conf
  user=nginx
  group=nginx
  pm.status_path= /fpm-status php的状态页
  ping.path= /ping
  ping.response= pong
  systemctl start php-fpm.service
  ss -ntl 查看端口是否开启
  nginx反代PHP的页面
  vim /etc/nginx/nginx.conf
  listen80 default_service
  location ~* \.php${
  fastcgi_pass127.0.0.1:9000
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
  }
  location ~* /(fpm-status|ping){
  fastcgi_pass127.0.0.1:9000
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  include fastcgi_params
  allow 127.0.0.1;
  deny all;
  access_log off;
  }
  nginx -t
  systemctl start nginx.service
  172.17.0.170:80/fpm-status
  本机测试:
  curl -s http://127.0.0.1/fom-status
  //67:node
  //:server
  创建zabbix共享
  vim php-fpm.conf
  UserParameter=fpm.stats
[*],curl -s http://127.0.0.1/fpm-ststus | awk '/^$1/{print $$NFF}'
  systemctl restart zabbix-agent.service
  server:
  zabbix_get -s 172.17.0.170 -p 10050 -k &quot;fpm.stata&quot;
  network discovery:
  网络发现是zabbix最具特色的功能之一 它能够根据用户事先定义的规则自动添加监控的主机或服务等
  zabbix server扫描指定网络范围内的主机;
  发现方式:
  ip地址范围
  可用服务(ftp ssh http)
  zabbix_agent的响应
  snmp_agent的响应
  分两个阶段:
  discovery
  action:把discvery events 当作前题条件;
  发现:--》discovery events
  Service Host
  可采取的动作:
  send message remote command
  add/remove host
  enable/disable host
  add host to group
  link template to host
  ..
  Action:
  网络发现中的事件可以触发action,从而自动执行指定的操作
  配置网络发现:
  node2:68
  rpm -ivh zabbix-release-3.4-2.el17.noarch.rpm
  yum install zabbix-agent zabbix-sender
  scp -r /etc/zabbix/* 172.17.0.172:/etc/zabbix
  cd /etc/zabbix
  vim zabbix_agentd.conf
  Hostname=node2.magedu.com
  systemctl start zabbix-agent.service
  ss -tnl
  configuration
  Discovery
  creat
  test net
  172.17.0.170-180
  1m
  check type: zabbix agent
  key: system.uname
  add
  ip address
  enable
  add
  Actions
  Disscovery
  Action
  auto add host of test.net
  operation
  web监控:
  监控指定的站点的资源下载速度,及页面响应时间,还有响应代码
  一个站点 ,有多个页面。
  内建key:
  web.test.in:传输速率
  web.test.time:响应时长
  web.test.rspcode:响应码
  主动/被动 检测
  被动检测:相对于agent而言,agent server向agent请求获取配置的各监控项相关的数据,agent接收请求,获取数据并响应给server
  主动检测:相对于agent而言,agent(action)agent向server请求与自己相关监控项配置,主动的将server配置的监控项相关的数据发送给server
  agent端所需要基本配置:
  ServerActive =
  Hostname=
  HostnmaeItem=
  zabbix_sender发送数据
  zabbix server上的某主机上,直接定义item时随便定义一个不与其它已有key冲突key即可 即item 为“zabbixtrapper”;
  configuration
  hosts
  web
  creat
  基于SNMP监控
  SNMP:简单网络管理协议,基于tcp/ip 和udp协议 实现网络设备之间交换监控,或管理信息
  agent/nms
  SNMP接口:   读(get,getnext)写(set)trap(陷阱);
  161/udp 端口 被监控端
  162/udp 端口 监控端
  SNMP版本:
  v1:1989
  v2:1993
  v3:1998
  MIB:management Information Base
  OID:Object Id
  网络设备:交换机,路由器
  要想支持snmp先安装包,linux启用snmp的方法
  1.node2:
  yum install net-snmp
  yum installnet-snmp-utils
  管控端只需要开启snmptrapd.service
  被管控端需要监控套接字只要开启 snmpd.service
  cd /etc/snmp
  cp snmp.conf{,.bak}
  vim snmp.conf
  view systemview included .1.3.6.1.2.1.1
  view systemview included .1.3.6.1.2.1.25.1.1
  //view systemview included .1.3.6.1.4.1.2021
  // view systemview included .1.3.6.1.2.1.25.1.1
  systemctl start snmp.service
  测试:
  snmpget -v 2c -c public 172.17.0.x 1.3.6.1.2.1.1.3.0
  snmpwalk -v 2c -c public 172.17.0.x
  snmpget -h 获取数据
  定义ACL
  .1.3.6.1.2.1.
  1.1.0:系统描述信息
  1.3.0:监控时间
  1.4.0:系统联系人信息
  1.5.0:主机名
  1.7.0:主机提供的服务
  2.1.0:网络接口数目
  2.2.1.2 :网络接口的描述信息
  2.2.1.3:网络接口类型snmp
  ......
  JMX:监控 JMX本身就可连接套结字
  tomcat主机设置
  监控tomcat
  /etc/sysconfig/tomcat 添加
  CATALINA_OPTS=
  zabbix-java-gateway主机设置:
  安装 zabbix-java-gateway程序包 启动服务
  zabbix-server端的设置:
  JavaGateway=172.17.0.x
  JavaGateway=10052
  StartJavaPollers=5
  zabbix proxy的配置
  1.node2:
  yum install java-1.8.0-openjdk-devel    tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp
  vim /etc/sysconfig/tomcat
  CATALINA_OPTS=&quot; -Djava.rmi.server.hostname=172.17.0.172 -Djavax.management.builder.initial= -Dco.sun.management.jmxremote
  =true   -Dcom.sun.management.jmxtemote.port=12345 -Dcom.sun.managemen.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false&quot;
  systemctl start tomcat.service
  ss -tnl
  2.server:
  yum install zabbix-java-gateway
  cd /etc/zabbix
  vim zabbix_java_gateway.conf
  systemctl restart zabbix-java-gateway.start
  vim zabbix_server.conf
  JavaGateway=172.17.0.159
  JavaGatewayPort=10052
  StartJavaPollers=5
  systemctl restart zabbix-server.service
  systemctl status zabbix-server.service
  zabbix-proxy(代理):分布监控
  1.新的虚拟机
  ntpdate 172.17.0.x 同步时间
  hostnamectl set-hostname zbxproxxy.magedu.com 修改主机名
  exec bash刷新
  yum install mariadb
  vim /etc/my.cnf.d/server.cnf
  skip_name_resolve =ON
  innodb_file_per_table = ON
  innodb_buffer_pool_size= 256M
  log-bin =master-log
  systemctl start mariadb.service
  mysql
  >create database zbxproxydb character set 'utf8';
  >GRANT ALL ON zbxproxydb.* TO 'zbxproxyuser'@'172.17.0.%' IDENTFIED BY 'zbxproxypass'%;授权
  >flush privileges; 刷新权限
  node1:
  scp zabbix-release-3.4-....noarch.rpm root@172.17.0.x/root
  rpm -ivh zabbix-re.....
  yum install zabbix-proxy
  yum installzabbix-proxy-mysql zabbix-get zabbix-aget zabbix-sender
  cd /etc/zabbix
  rpm -ql zabbix-proxy-mysql
  cp /usr/share/doc/zabbix-proxy-mysql-3-4.3/schema-sql.gz .
  ls
  zgip -d schema.sql.gz
  mysql -uzbxproxyuser -h172.17.0.x -pzbxproxypass zbxproxydb < schema.sql
  mysql
  >use zbxproxdb;
  >show tables;
  >exit
  cd /etc/zabbix
  cp zabbix_proxy.conf{,.bak}
  vim zabbix_proxy.conf
  server=172.17.0.x , 代理ip
  ServerPort=10051
  Hostname=zbxproxy.magedu.com
  listenport=10051
  EnbleRemoteCommands=1
  LogRemoteCommands=1
  DBHost=172.17.0.x
  DBName=zbxproxydb
  DBUser=zbxproxyuser
  DBPassword=zbxproxypass
  ConfigFrequency=30
  DataSenderFrequency=1
  StartPoller=5
  StartTrappers=5
  StartPingers=1
  StratHTTPPollers=1
  ServerActive=172.17.0.70,172.18.0.69
  systemctl start zabbix-proxy.service
  systemctl status zabbix-proxy.service
  Administration
  proxies
  creat
  zbxproxy.magedu.com/ ip地址
  add
  configuration
  hosts
  creat
  node2.magedu.com
  node2
  snmp hosts
  172.17.0.x   node2.magedu.com
  zabbix.magedu.com
  creat item
  //vim /etc/hosts
  //scp /etc/hosts nodex:/etc
  zabix站点服务:
  node1为例
  yum install nginx
  vim /etc/nginx/nginx.conf
  server段进行配置
  location /stub_status {
  stub_status on;
  access_log off;
  //    allow 127.0.0.1;
  //   deny all;
  }
  nginx -s reload
  systemctl start nginx
  cd/etc/zabbix
  ls
  mkdir -pv /srv/zabbix/libexec
  cd /srv/zabbix/libexec
  wgetnginx.sh (浏览器上)
  cat nginx.sh
  chmod +x nginx.sh
  cd /etc/zabbix/zabbix_agentd.d
  wgetuserparameter ngnx.conf (网上下载)
  物理机上安装:
  wget zbx_export_templates.xml(获取模版)
  configuration
  templates
  creat
  选择文件zbx prox
  import
  tempates
  server:
  zabbix_get -s 172.17.0.x -p 10050 -k &quot;nginx.status&quot;
  压测一下:
  ab -n 10000 -c 100 http://172.17.0.x/index.html
  调优:
  Database
  历史数据不要保存太长时长
  尽量让数据缓存在数据库服务器的内存中
  触发器表达式:减少使用min() max()avg() 尽量使用last() nodata()
  数据收集:polling较慢(减少使用SNMP/agent);尽量使用trapptrapping(agent (active));
  数据类型:文本型数据处理速度较慢   尽量少收集类型为text或string 类型的数据 多使用类型为numeric的;
  zabbix服务进程:
  (1)服务器组件的数量
  alerter discovererescalator http poller hourekeeper icmp pingerr ipmi pooller trapper
  configrationsyncer....
  (2)设定合理的缓存大小
  (3)数据库优化
  其他解决方案:
  grafana:展示
  collectd:收集
  influxdb:存储
  grafana+ collectd+influxdb
  prometheus:
  exporter:收集
  alertmanager
  grafana:展示
  openfalcon
  Maintenance 服务维护,系统维护



页: [1]
查看完整版本: zabbix监控系统的介绍及zabbix监控系统的高级应用