zabbix学习

作者:吴兆松(网名:itnihao)

“他始终坚信,技术的积累只是时间问题,解决问题的思路和思想高于具体的技术细节”

第一章 监控系统简介

1,那些东西需要监控

底层支持,硬件,存储,网络设备,网络环境

系统架构,操作系统,虚拟化,集群

上层应用,数据库,应用软件

2,监控系统的实现

数据采集,客户端实现

数据存储分析展示告警,服务端实现

a,被动模式:对server开销大,可以实现无agent方式

b,主动模式:客户端实现,server保持心跳

一个监控系统应该支持主动上报(主动模式)和定时采集(被动模式),这里站的角度是agent的角度

一个大规模分布式的监控系统,需要支持C/P/S(client,proxy,server),兼容异地多机房

可能存在的问题,告警洪水?数据延迟?专线带宽占用?

3,开源监控系统现状

Cacti,仙人掌,RRDtool绘图,网络流量监测图形分析软件

Smokeping,常规的ping,dns,ssh性能监控,RRDtool底层,网络丢包和延时

Opentsdb,开源时序数据库,支持秒级数据采集和告警

Zabbix,大规模分布式监控系统,功能丰富,可扩展,易用,支持二次开发等优点

4,监控系统的前世今生

为什么监控?突发的流量,突发的访问量,突发的负载,通知运维,介入修复

怎么实现?

a,支持完整的指标

b,支持和其他业务的扩展关联,包括cmdb,cas,和告警需求

c,api接口和api文档

d,数据汇总和容量评估

未来的目标?业务价值的持续提升,业务无中断

第二章 zabbix介绍

1,zabbix先知

zabbix用户群体大,文档齐全,社区繁荣,单节点理论支持 5w设备,适合企业需要

zabbix使用简单,从入门都高级,都有可以扩展和参考的地方

2,zabbix架构,数据压力,nvps,number of processed values per second(每秒处理的数据值)

通用 C/S 分布式 C/P/S or C/N/S

watchdog,

housekeeper,删除过期数据

alerter,

poller,

httppoller,

discoverer,

pinger,

db_config_syncer,

db_data_syncer,

nodewather,

timer,

escalator,

3,zabbix功能特性

a,多样化的数据收集,自带的和扩展的,支持网络发现

b,高度定制的告警触发,通知,处理

c,实时的绘图,历史的存储,多样话的界面展示

d,访问快速,配置简单,自带审计

e,api完备,c语言编写,性能非常高

第三章 安装与部署

1,安装条件

a,内存 4core 4GB >1000, 8core 8GB >10000

b,硬盘占用:history=items*3600*24*days*byte(byte取决于数据库引擎,一般是 50B)

trends=items*3600*24*day*byte(byte取决于数据库引擎,一般是128B)

events=events*24*3600*byte(byte取决于数据库引擎,一般是130B)

c,操作系统,数据库版本,web前端,zabbix-server依赖库,ntp时间同步

2,zabbix-server端安装步骤

a,安装zabbix官方源和 epel源

b,yum 安装zabbix-server

c,安装mysq数据库,导入数据表

d,配置zabbix_server.conf文件,启动zabbix-server

e,配置防火墙,selinux和文件权限

f,配置web界面,指定数据库和php页面配置

g,常见的异常和故障解决

3,zabbix-agent安装

a,linux安装

rpm -ivh 安装,rpm包可以定制,参考第十五章

iptables打开防火墙

配置zabbix_agentd.conf文件

b,windows安装

安装配置,下载安装包解压

注册服务,zabbix_agentd.exe --install

启动服务,net start “Zabbix Agent” net stop "Zabbix Agent"

c,zabbix_get  数据获取测试命令,相当于 snmp中的snmpwalk

zabbix_get -s <host/ip> -p <port>  -I <ip addr> -k <key>

4,zabbix-server

a,存储,优化housekeeper,数据表分区

b,源码init阅读

c,高可用和安全,设置严格的防火墙策略,关注漏洞

d,数据备份,排除历史数据表,保留配置表

删除 history* trends* Acknowledges* Alerts Auditlog Events service_alarms

第四章 快速配置和使用

1,忘记zabbix密码

mysql> select * from zabbix.users where alais='Admin';

mysql> update zabbix.users set passwd=md5('zabbix') where alias='Admin';

mysql> flush privileges;

2,配置流程

Host groups 主机组  ----> Hosts 主机 ---->  Applications 监控项组 ---->  Items 监控项 ----> Triggers 触发器 ----> Event 事件 ----> Actions 处理动作 ----> User groups 用户组 ----> Users 用户 ----> Medias 告警媒介----> Audit 审计日志

3,主机组的添加

分组管理策略:

a,以地理位置的维度划分

b,以业务为单位划分

c,以机器用户划分

d,以系统版本划分

e,以应用程序划分

f,其他方式划分方法

mysql> select * from zabbix.groups;

4,模板的添加

基于主机的同类数据的归纳抽象,统一成模板。模板可以继承,模板可以关联模板

模板中 宏的概念?

5,添加主机

必填项 hostname,visible name,groups,agent interfaces,ip address,port,status

主机使用link关联模板,取消模板关联的时候,unlink不会把已经添加的数据给清理掉,unlink and clear,不仅去除关联,而且清除模板中的关联指标和数据

6,graphs图像  >> screen 视图  >> slide shows 幻灯片

graphs type,normal线条图,stacked叠图,pie饼图,exploded分解饼图

simple graph是item自带的绘图,不需要单独配置

7,map地图

8,web scenario拨测

监控web程序的下载速度,放回码及相应时间,可以把一组连续的web作为一组拨测场景

通过脚本或者程序,使用curl命令,http库实现需求

9,IT服务

IT服务时间可用性度量带来的好处:

a,对提高服务的持续性提供数据依据

b,明确服务提供过程中的薄弱点

c,迫使服务得到有效的监控

d,为服务成本提供数据支撑

IT服务可用性指标包括:

a,服务的范围和定义,划分边界

b,服务重要性定义,区分核心和非核心

c,服务数量级定义

d,服务不可用造成的业务影响程度评估

e,服务的可用时间,关键时间,次要时间,计划中断时间,容许的不可用时间等时间指标定义

可用性分级为,持续性100%,容错性100.00%,弹性99.99%,高可用99.90%,一般可用99%-95%

10,Availability report可用性报表,Host inventory资产管理

第五章 深入配置和使用

1,Items 监控项

Item里面有什么? 获取数据的方式,取值的数据类型,取值的间隔,历史数据保存周期,趋势数据保存周期,key分组等

Items添加,必选项,name,type,key,host interface。。。

2,key 键值

key格式 key[接参数],参数分为 引号字符串,非引号字符串,数组

引号字符串,用反斜杠 \ 转义,非引号字符串一般能用,数据字符串用逗号 ,分开

key值返回类型,character,log,text,无效显示为ZBX_NOTSUPPORTED

3,Items类型

zabbix-agent,默认被动模式,passive,主动模式,active

自带的常用key 分类和示例:

a,网络的

net.if.in[eth0] 获取eth0 的流量,等同于 net,if.in[eth0,bytes]

net.if.in[eth0,packets] 获取eth0网卡接收的包量

net.if.out[if,<model>]

net.if.colisions[if]

net.if.total[if,<mode>]

数据来源于,ip a

b,端口的

net.tcp.listen[port]

net.tcp.port[<ip>,<port>]

net.tcp.service[service,<ip>,<port>]

net.tcp.service.perf[service,<ip>,<port>]

net.udp.listen[port]

数据来源于 netstat

c,监控进程的

kernel.maxfiles

kernel.maxproc

proc.mem[<name>,<user>,<mode>,<cmdline>]

proc.nu[<name>,<user>,<state>,<cmdline>]

数据来源于 proc文件

d,监控CPU和内存的

system.cpu.intr

system.cpu.load[<cpu>,<mode>]

system.cpu.num[<type>]

system.cpu.switches

system.cpu.util[<cpu>,<type>,<mode>]

vm.memory.size[<mode>]

system.swap.in[<device>,<type>]

system.swap.out[<device>,<type>]

system.swap.total[<device>,<type>]

e,磁盘IO的

vfs.dev.read[<device>,<type>,<mode>]

vfs.dev.read[<device>,<type>,<mode>]

vfs.fs.inode[fs,<mode>]

f,文件监控的

vfs.file.cksum[file]

vfs.file.contents[file,<encoding>]

vfs.file.exits[file]

vfs.file.md5sum[file]

vfs.file.regexp[file,regex,<encoding>,<start line>,<end line>,<output>]

vfs.file.size[file]

vfs.file.time[file,<mode>]

vfs.fs.discovery

vfs.fs.size[fs,<mode>]

g,日志监控的

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

logrt[file_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

simple-check用于无客户端环境的检查

常用key 分类和示例:

icmpping[<target>,<packets>,<interval>,<size>,<timeout>]

icmppinglosss[<target>,<packets>,<interval>,<size>,<timeout>]

icmppingsec[<target>,<packetes>,<interval>,<size>,<timeout>,<mode>]

net.tcp.service[service,<ip>,<port>]

zabbix-agent active模式

案例:日志的监控,这里选日志是因为日志的监控需要使用主动模式

zabbix internal 监测zabbix server或者proxy 的自身性能数据,自带又server,proxy,agent

SSH,Telent和扩展检测

4,Macros 宏的配置

宏的作用是便于在模板 Template,指标 Items,触发器 Trigger中的引用,{$名称},比如{$SSH_PORT}

全局宏,Administration > General > Macros,作用于 模板,主机

模板宏,顾名思义,作用于模板,Configuration > Template > Macros

主机宏,Configuration > Hosts > Macros

5,维护时间 Maintenance

6,事件确认 Ack

第六章 告警和配置

告警是监控的职能,zabbix的告警流程如下:

Host Groups 设备组 ---> Hosts 设备 ---> Applications 监控项组 ---> Items 监控项 ---> Triggers 触发器 ---> Actions告警动作 ---> Medias告警媒介 ---> User Groups用户组 --->  Users 用户

告警的必备条件:有触发器,有告警动作,有通知用户,有通知媒介

1,Trigger 的配置

Trigger状态两种,OK,PROBLEM,tigger之间可以有不同的安全级别

Trigger 添加配置,name,expression,description,url,serverity,enable等项目

一个expression包含,item 监控值,function正则逻辑表达式,last of time时间,time shit,时间偏移

serverity的等级分类,基本上通用所有监控系统

a,Not classified,未知等级

b,Information,一般信息

c,Warning,警告信息

d,Average,一般故障

e,High,高级别故障

f,Disaster,致命故障

2,Trigger 告警依赖

场景:机房路由异常,agent会批量告警

3,常用单位

计时单位:S,second秒 m,minutes分钟 h,hour小时 d,days天数 w,weeks星期

计量单位:K,kilo M,mega G,giga

4,表达式  function+function parameter +运算符+ 滞留状态

eg,

滞留状态?  {TRIGGER.VALUE}=0 OR 1

温度大于20度告警,小于15度才算恢复,告警和恢复的阈值之间是一个间隔,不是一个具体值

({TRIGGER.VALUE}=0&{&SERVER:TEMP.LAST(0)}>20 )| ({TRIGGER.VALUE}=1&{SERVER:TEMP.LAST(0)}>15)

5,trigger函数,这个一次是记不住的,只能是后面边学习边使用

a,abschange,差值的绝对值

b,avg,时间间隔的平均值

c,change

d,count,指定时间间隔的数值统计

e,date,返回当前日期,dayteofmonth,返回当前月的第几天,dayofweek,返回当前星期的第几天

f,delta,max()-min(),最大值减去最小值

g,diff,返回1说明有差异,返回0为其他情况

h,fuzzytime,常用system.localtime来检查本地时间与zabbix-server的时间同步

i,iregexp,与regexp类似,区别是不区分大小写,支持 str,log,text

j,last,最近的值,#num表示最近的第n个值(往前数),当前的#num和其他函数的#num有差别

k,logeventid,返回日志条目的id是否符合正则,logserverity,返回最近日志条目的日志等级,logsource,检查是否匹配日志来源

l,max,返回指定时间间隔的最大值,min,返回指定时间间隔的最小值

m,nodata,返回值为1表示指定时间(间隔不小于30s)没有数据,0为其他情况

n,now,返回距离Epoch(1970年1月1日 00:00:00 UTC)时间的秒数

o,pre,返回之前的值,类似于last(#2)

p,str,查找最近值中的字符串

q,strlen,指定最近值的字符串长度,用法类似 last(#3)

r,sum,返回指定时间间隔内的值总和,float 和int

s,time,放回当前时间,yyyyddmm HHMMSS

6,Action 是触发器 trigger被触发后,产生事件 events之后的一系列动作 actions,

Trigger events,discovery events,auto registration events,internal events

Action 配置内容,Action 动作 --> Conditions --> Operations

a,Action的基本内容,name,subjiect,message defind,status。subject和message都是需要用 macros 宏

常用的macros宏包括:{TRIGGER.NAME},{TRIGGER.STATUS},{HOST.HOST},{ITEM.KEY},{TRIGGER.EXPRESSION},{EVENT.STATUS},{EVENT.AGE}

b,Condiction配置中的逻辑运算

=,条件等于 >=,条件大于或等于 <=,条件小于或等于 <>,排除 like,部分匹配 not like,部分不匹配 in,在范围内 not in,不在范围内

默认创建的action会包含两个condiction,Trigger.value = problem &&  maintenance status = not in mantainance

Operation功能,send message发送消息,执行远程命令 remote command

告警消息发送配置注意点,media配置,user permission用户权限,message audit日志审计

Romote command执行远程命令配置

a,操作涵盖,拉起应用服务(web服务,中间件,crm),通过IPMI协议远程重启,磁盘满了之后,清理磁盘空间,CPU负载高后的VM迁移,资源不足下的扩容

b,注意点,远程命令不支持agent主动模式,server -->agent,不支持代理,长度限制255字符,zabbix用户有命令执行权限,开通防火墙,zabbix不返回命令执行状态

c,EnableRometCommands =1

Media 告警媒介配置,mail邮件,sms短信,wechat微信,dingding钉钉

自定义告警脚本,/etc/zabbix/zabbix_server.conf AlaertScriptsPath=/etc/zabbix/alertscripts

zabbix-server 在调用脚本的时候,会传递三个变量参数给脚本作为位置参数,$1是收件人,$2是主题,$3是内容

7,告警升级机制,梯度告警处理

eg,示例1

default operation step duraton,告警时间间隔,120(minimum 60 seconds)

steps details start in durations(seconds)

1-2 send message to users(admin) via send-mail immediately 60

3-5 send message to users(admin) via send-sms 00:02:00 60

6-7 send message to users(manager) via send-sms 00:05:00 default

第一梯度,1,2步,通过邮件发送给admin用户,间隔60s,发送2次

第二梯度,3,5步,告警发送2分钟后,通过短信发送给admin用户,间隔60s,发送3次

第三梯度,6,7步,告警发生5分钟后,通过短信发送给manager用户,默认时间间隔 120s,发送2次

eg,示例2

default operation step duration,告警时间间隔,120(minimum 60 seconds)

steps details start in durations(seconds)

1-0 send message to users(admin) via send-mail immediately 60

5-7 send message to users(manager) via send-sms 00:04:00 90

第一梯度,1,0步,通过邮件发送给admin用户,间隔60s,发送次数不限制,直到告警恢复为止

第二梯度,5,7步,告警发生4分钟后,通过短信发送给manager用户,间隔90s,发送3次

eg,示例3

default operation step duration,告警时间间隔,1800(minimum 60 seconds)

steps details start in durations(seconds)

1-0 send message to users groups(mysql admin) via send-mail immediately default

5 send message to users groups(mysql manager) via send-mail 02:00:00 default

6 run remote commands on current host 02:30:00 default

7 send message to user groups(mysql admin) via send-sms 03:00:00 default

8 run remote commands on current host 04:00:00 default

第一梯度,1,0步,通过邮件发送给mysql admin用户组,间隔1800s即30分钟,发送次数不限制,直到告警恢复为止

第二梯度,5步,告警发生2小时后,通过邮件发送给mysql manager用户,发送1次

第三梯度,6步,告警发生后的2小时30分钟,执行远程重启mysql命令

第四梯度,7步,告警发生后的3小时,短信通知mysql admin用户组

第五梯度,8步,告警发生的4小时候后,执行远程命令,通过IPMI重启当前主机

step设置从1 --> 0 时,一直发送告警,直到告警恢复

step设置从1 --> 1 时,告警只发送1次,后面不再重复发送

8,常见故障排查

a,检查脚本权限,告警账号配置

b,检查告警机器读取权限,检查告警屏蔽策略

c,检查zabbix-server日志和audit审核日志

第七章 监控方式剖析

1,zabbix支持的监控方式包括 Agent(tcp端口)、SNMP(udp端口)、JMX(jmx服务)、IPMI(ipmi协议)

2,Agent监控方式,主动和被动,第八章详细讲

3,Trapper监控方式

trapper可以发送任意数据到服务器,主动推送,需要安装 zabbix-sender

zabbix_sender -z host -p port -s “hostname” -k key -o message -vv verbose

4,SNMP监控方式

Simple Network Managerment Protocol,简单网络管理协议,管理进程 和被管理设备

基于TCP/IP的网络管理包含三部分:

a,管理信息库,management information base,MIB,主要是参数

b,管理信息结构,stucture fo management information,SIM,主要是公式和表示符号

c,简单网络管理协议,simple network management protocol,通讯协议

协议包含的命令有:Get,GetNext,Set,Response,Trap,前4个命令使用UDP协议,使用161端口,trap命令,使用UDP协议,使用162端口

snmpwalk -v 2c -c public 127.0.0.1 snmpwalk -v 2c -c public 127.0.0.1 SNMPv2-MIB::sysUpTime.0

5,IPMI监控方式

IPMI,Intelligent Platform Managerment Interface,智能平台管理接口,可以利用IPMI检测服务器的物理特征,包括温度,电压,电扇,电源和机箱

yum install -y OpenIPMI impitool && /etc/init.d/ipmi start && /etc/init.d/ipmievd start

6,JMX监控方式

JMX,Java Management Extendions,JAVA扩展管理,是管理功能框架

java application --> zabbix-java-gateway --> zabbix server

配置JMX监控的步骤:

a,安装Zabbix-Java-Gateway,配置 zabbix_java_gateway.conf参数

b,配置zabbix_server.conf参数

c,java application 开启JMX协议

d,web配置监控的指标和阈值

监控java程序,配置java启动参数,监控tomcat,配置catalina.sh脚本,监控weblogic,配置setDomianEnv.sh

7,命令的执行

system.run是zabbix agent 自带的一个key,默认不能使用,要使用需要打开 zabbix_agentd.conf中的 EnableRemoteCommands=1

第八章 分布式监控

1,zabbix是一个分布式的监控系统,支持一个中心,多个节点的分布模式,适用于跨机房,跨地域的网络监控

zabbix agent -->  zabbix proxy --> firewalld --> zabbix server

2,agent的主动模式 和被动模式

默认是被动模式,zabbix_agentd.conf中的 Server= 配置

server 向 agent请求数据,<item key>\n,agent 向 server响应数据,<HEADER><DATALEN><DATA>

被动模式的流程:

a,server打开一个tcp链接

b,server发送一个key为agent.ping\n

c,agent接收到这个请求,然后响应数据<HEADER><DATALEN>1

d,server对接收的数据进行处理

e,tcp连接关闭

主动模式的配置,需要配置 ServerActive=Server IP,配置后重启agent生效

批量修改模式,可以选择所有item 后,选择 mass update 批量修改

agent向server请求检测列表,返回的item以json返回,包括 key,delay

请求列表的运行流程:

a,agent向server建立一个tcp连接

b,agent请求需要检测的数据列表

c,server响应agent,发送一个item列表,(item key,delay)

d,agent响应请求

e,tcp连接完成本次会话后关闭

f,agent开始周期的收集数据

agent向server发送采集数据,也是以json,host,keyi,value,clock

发送数据的运行流程:

a,agent向server建立一个tcp连接

b,agent发送在采集周期内,需要采集的数据给server

c,server处理agent发送的数据

d,tcp连接关闭

第九章 zabbix与自动化运维

zabbix的自动化,网络自动发现,主动注册,LLD等自带的自动化功能,对解决监控自动化运维具有不可比拟的优势,同时考虑对配置的文件的管理,涉及到salt自动化配置工具,从工具层面展示自动化运维底层的配置管理。

自动化的目的,使用是减少工作量,提高工作效率

1, 自动添加主机,自动添加模板,自动分组,自动添加监控项,触发器等 --->>> 网络自动发现,自动注册

自动添加监控项中有规律的变量 --->>> LLD,自动发现

2,server端网络发现,完成快速发现并添加主机,简单的管理,随着环境改变快速更新监控系统

网络发现实现基于以下信息:ip地址段,基于服务的ftp,ssh,pop协议信息,zabbix-agent上报,snmp agent上报

a,配置自动发现规则,Configuration 配置 ---> Discovery 发现 ---> Creat discovery rule 创建自动发现规则

b,配置自动发现动作,Configuration 配置 ---> Action 动作 ---> 选择 event source ---> Discovery ---> 添加actions

sending notification #发送通知 adding/removing hosts #添加/删除监控主机 enabling/diabling hosts #开启/关闭主机监控

removing hosts from a group #从一个组中移除一个监控设备 excuting remote scripts #执行远程脚本

c,检查自动发现历史,Monitoring 监控 ---> Discovery 自动发现

网络发现的强大在于,短时间自动添加成百上千的机器,自动添加模板,自动分组功能依赖于标准化交付

3,agent主动方式的自动注册,Active Agent Auto-Registration,主动自动发现功能,适用于云环境下,ip端不集中,agent可以和server联系,使用 HostMetadata 或者HostMetaDataItem 来做自动注册的条件判断,扩展自动注册的筛选过滤

4,Low level discovery,LLD自动发现,适用于具有共同特性的一组变量,完成过程分为两步,1、自动发现特定变量的名称,2、添加变量的item

LLD发现的数据是一个json格式,设计到转制的问题,使用 zabbix-get验证

5,LLD配置案例,监控多个url的状态码

a,zabbix agent 配置,添加server serveractiv配置,添加zabbix_agentd.conf/下配置

b,编写low level discovery脚本,可以使用shell,使用python,perl代码会更简洁,目的是输出json格式内容

c,自定义key配置文件,设置 userparameter值,使用zabbix_get验证数据

d,页面先添加模板,添加 LLD规则,使用{#SITENAME}定义宏(macro),使用$1来代表检测出来的url,配置item,trigger,graph

e,host管理模板,完成LLD规则对应

6,saltstack,chef,puppet等自动化部署、配置文件管理与zabbix的协作

第十章 使用经验和技巧分享

1、如何有效的设置监控告警

监控告警消息的发送,是一件特别慎重的事情,处理得好,会提高响应速度,反之,则会影响工作情绪,影响工作效率,进而导致反感

监控告警信息的需求有:

a,基于业务类型,区分基础运维,应用运维,网络运维,业务运维,不同的告警发送不同的用户

b,基于故障级别,低级故障一线运维处理,严重故障运维负责人处理,灾难故障通知部门负责人,特大故障周知其他部门领导

c,基于时间发送,设置维护期,设置非工作时间的告警发送级别

d,基于故障的相关依赖,避免告警的洪水泛滥,关联业务尝试脚本自动操作

告警信息的定制需要关注以下内容:

a,哪些业务需要告警?

b,哪种故障需要告警?

c,告警等级如何划分/

d,故障依赖关系如何定义?

e,告警信息如何汇总?

f,如何做到精准有效的告警

2,监控项适当添加item图形,扩展默认图标

3,针对默认的触发器调整,以适应本地生产需求

4,数据图断图的情况,此类情况有通用思路,但是要具体问题具体分析

a,系统负载高

b,tcp连接数过多

c,网络异常

d,数据获取异常

e,数据库无法更新

第十一章 监控案例

1,监控TCP连接数

ss命令,ss state all |awk '{++S[$1]}' END {for (a in S) {printf "%ll -s %s\n",a,S[a]}}'

netstat命令,netstat -an|awk '/^tcp/ {++S[$NF] }' END {for (a in S) {printf "%ll -s %s\n",a,S[a]}}'

cat /proc/net/tcp文件,0A代表tcp_listen,0B代表tcp_closing

2,监控nginx

nginx.conf配置中添加 /nginx_status页面,curl "127.0.0.1/nginx_status” |awk ‘/active/reading/writing’ {priint $3}

3,监控PHP-FPM

php-fpm.conf中配置pm.status_path=/phpfpmstatus,nginx.conf中配置location phpfpmstatu的 fastcgi_pass uninx:/tmp/fpm.sock

4,自带模板监控mysql

mysql的监控比较简单,使用show status可以查看相关的性能参数

在脚本中配置mysql_user=$2,mysql_password=$3,mysql_host=$4,这里的参数可以作为web界面宏macro传进来的自定义变量

5,使用percona监控mysql

perconna对mysql服务器进行了改进,提升了高负载下innodb的性能,使用perconna monitoring plugins可以补充perconna的监控

先下载安装percona monitoring plugins,再安装perconna-zabbix-templates,测试key值,导入模板,完成监控

6,监控DELL服务器

导入DELL IPMI 监控模板

7,监控cisco路由器

配置cisco的snmp服务,安装net-snmp-utils,使用 snmpwalk -v 2c public 127.0.0.1 MIB 验证

8,监控vmware

配置zabbix-agentd.conf中的 startvmwarecollectors=1,使用系统自带的vmware模板添加监控

第十二章 zabbix性能优化

1,zabbix性能低下的表现:

a,zabbix队列中有比较多的延迟,通过Admiinistration --> Queen查看

b,zabbix绘图中有断图,item没有数据

c,带有nodata的触发器经常出现 False

d,前端页面无响应,打开慢

2,性能优化的依据,每秒处理的数量,nvps,等待的队列数量,queen

3,配置文件中的参数优化

a,进程的数量,包括startpollers,startpollersunreachable,starttrappers,startpingers,startdiscoverers

b,缓存的大小,缓存的大小和内容的大小有关,要具体看

c,超时的时间,包括自动发现时间,数据上报时间

4,zabbix数据库优化

a,数据库软件本身优化,使用更高性能的percona版本

b,数据库参数调优

c,表结构优化,分表等形式。注意,分表后,houserkeeper需要关闭

d,开启慢查询,针对慢查询优化

5,最后,扩容zabbix集群规模,使用更好的硬件和配置,是银弹

第十三章 zabbix-api使用

zabbix api具有重要功能,可以实现第三方调用,批量操作,与其他运维系统集成,使用JSON RPC协议

1,json-rpc协议是什么? 基于json的跨语言远程调用协议,相比webservice,java-rpc更便于调试,实现,扩展

a,调用和响应:

调用,{“method”:“getid”,“params”:["args"],“id”:1},method是调用方法名,params是参数,id是调用标识符,标记一次调用过程

响应,{“result”:“id is 000”,“error”:null,“id”:1},result是方法返回值,error是调用时错误,无错误返回null,id是调用标识符,与传入的id一致

b,支持的数据类型,bool,flag,integer,float,ftring,timestamp,array,object,query

2,zabbix api中的代码路ing位于前端php中的api/api_jsonapi.php,是api的入口文件,调用时的url为 http://x.x.x.x/api_jsonrpc.php

3,zabbix api 的使用流程

a,连接http://x.x.x.x/api_jsonrpc.php,提供用户名和密码,表示头部json,使用post方法

b,获得sessionid

c,通过sessionid,建立后续的连接,

d,提交post数据,格式为json,使用对应的方法,获取需要的数据

4,使用curl 模拟api 的使用

a,获取session的语句:

curl -i -X POST -H 'Conten-Type:application/json' -d '{"jsonrpc":"2.0","method":"user.authenticate","params":{"user":"Admin","password":"zabbix"},"auth":null,id:0}' http://192.168.0.0:8090/zabbix/api_jsonapi.php

b,响应的结果

{“jsconrpc”:“2.0”,“result”:“abcdefghijklmn”,“id”:0}

c,使用session请求调用api 的host.get方法

curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrcp":"2.0","method":"host.get","params":{"ouput":"extend","filter":{"host":""}},"auth":"abcdefghijklmn","id":1}'

d,得到响应如下:

{“jsonrpc”:“2.0”,“result”:[{"maintainances":[],"hostid":"10010","host":"zabbix server","status":"0"}],"id":1}

5,常用的接口方法和示例

a,用户认证

b,获取主机

c,添加host

d,删除host

6,使用第三方zabbix api模块

第十四章 zabbix协议讲解(跳过)

第十五章 定制zabbix-agent安装包

定制安装包,减少依赖问题,添加自定义配置,开箱即用

1,定制安装包的步骤

a,yum install -y rpm-build git

b,useradd admin

c,su - admin

d,echo “% _topdir /home/admin/rpmbuild” >~/.rpmmacros

e,rpm2cpio zabbix-2.2.2.el6.zbx.src.rpm |cpio -div

f,mv zabbix2.2.2.spec /home/admin/rpmbuild/specs

g,mv * /home/admin/rpmbuild/sources

h,cd /home/admin/rpmbuild/specs

i,rpmbuild -ba zabbix2.2.2.spec

2,参数的配置,命令的编写,都在spec文件中,修改后打包,这样安装好之后,就无需再次配置,可以开箱即用

第十六章 大型分布式监控案例

1,大规模的监控系统中,需要考虑一下因素

a,分布式架构为首要考虑因素,将中心节点压力分散到个边缘节点

b,对数据存储的可扩展性成为一个必须解决的问题,是监控系统能否正常工作的前提

c,系统的高可用和健壮性,灾备能力

d,具备为其他业务提供api的能力,和其他业务系统的联系更为紧密

e,具备自动化功能,解决以业务为核心的运维智能

2,应用安装部署

a,机器资源规划,ip地址规划,应用角色规划

b,zabbix DB安装,安装perconna server,设置开机启动

c,初始化db数据库,导入zabbix数据,设置db 主从和定期备份

d,安装zabbix server

e,配置keepalive 高可用,编写keepalive检测脚本

f,安装zabbix-gui,配置nginx和php-fpm

g,安装 zabbix-proxy,设置 zabbix-proxy服务开机自启动,web页面添加proxy

h,配置zabbix agent conf文件

3,业务相关配置

a,用户的配置,包括媒介media,用户组 user groups

b,业务组配置,按照分组方法分

c,添加和定制监控模板

d,配置自动发现等功能

f,针对其他功能的二次开发

4,最重要的是,定时检查,修补遗漏。大胆假设,仔细验证


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 7,958评论 0 37
  • 前言 因为一个运维项目关注了一下开源监控软件,比较了Nagios、Zabbix、Zenoss、Cacti、Gang...
    开源大熊阅读 861评论 0 6
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 8,977评论 0 13
  • 1.写在前面 本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的...
    天之蓝色阅读 2,525评论 0 16
  • 人的一生,振作着接触一个又一个人,为了治愈名叫孤独的伤痕。我的伤势如何,不好言说。只是发觉忧郁在慢慢放大,心在结冰...
    劲寂草阅读 228评论 0 0