zabbix
2021-05-17 14:12:37 1 举报
AI智能生成
zabbix模块讲解
作者其他创作
大纲/内容
zabbix特性
数据收集<br>1.可用性及性能检测<br>2.SNMP、IPMI、JMX监控<br>3.自定义监控,自定义间隔时间<br>4.server/proxy/agents吸能<br>
高级告警配置<br>1.使用宏变量<br>2.自定义告警的接收者、接收方式、接收升级<br>3.远程命令实行自动化动作
自动发现<br>1.网络自动发现<br>2.agent自动注册<br>3.文件系统、网卡设备、SNMP OID自动发现
扩展的图形化显示<br>1.允许自定义创建多监控项视图<br>2.网络拓扑<br>3.自定义面板和slide shows
安全的权限认证,可以限制维护列表
数据存储到数据库并定时清理
模板可以添加组监控和继承
灵活的给触发器阈值定义
支持zabbix API<br>
快速的web接口
实时绘图
配置简单
zabbix进程
<span>.zabbix_server</span><br data-filtered="filtered"><span>zabbix服务端守护进程。其他进程数据都提交给server</span>
.<span>zabbix_agentd</span><br><span>客户端守护进程,收集客户端cpu负载、内存、硬盘等数据</span>
<span>zabbix_proxy</span><br data-filtered="filtered"><span>zabbix代理守护进程。功能类似server,它需要把收集到的数据提交/被提交到server里。</span>
<span>zabbix_java_gateway</span><br data-filtered="filtered"><span>Java网关,类似agentd,但是只用于Java方面。它只能主动去获取数据。它的数据最终会给到server或者proxy。</span>
<span>.zabbix_get</span><br data-filtered="filtered"><span>zabbix工具,单独使用的命令,获取客户端的内容的方式来做故障排查。</span>
<span>.zabbix_sender</span><br data-filtered="filtered"><span>zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。<br>于是我们在脚本执行完毕之后,使用sender主动提交数据</span>
软硬件需求
硬件
cpu:取决于数据库<br>(<span>AMD 3200+/2G内存可以监控500个主机</span>)<br>
硬盘:取决于监控项和历史保留时间<br>1.每秒处理数据量:监控项个数/刷新间隔时间 = 数据库每秒插入条数<br>2.历史记录保存时间:一条数据(50字节) * 数据每秒插入条数 * 时间<br>3.趋势数据保存时间:一条趋势数据(128字节) * 监控线个数 * 时间<br>4.事件记录保存时间:一个事件(130字节) * 事件次数<br>
软件
数据库
<span>MySQL:5.0.3或者以上</span><br data-filtered="filtered"><a title="Oracle" target="_blank">Oracle</a><span>:10g或者以上</span><br data-filtered="filtered"><span>PostgreSQL:8.1或者以上 .</span><br data-filtered="filtered"><span>SQLite:3.3.5或者以上</span><br data-filtered="filtered"><span>IBM DB2:9.7或者以上</span>
web应用
<span>Apache:1.3.12或者以上</span><br data-filtered="filtered"><a title="php" target="_blank">PHP</a><span>:5.3.0或者以上</span><br data-filtered="filtered"><span>PHP扩展:</span><br data-filtered="filtered"><span>gd </span><span>mbstring</span><br data-filtered="filtered"><span>bcmath </span><span>gettext</span><br data-filtered="filtered"><span>ctype </span><span>ibm_db2(可选)</span><br data-filtered="filtered"><span>libXML 2.6.15或以上 </span><span>mysqli(推荐)</span><br data-filtered="filtered"><span>xmlreader </span><span>oci8(可选)</span><br data-filtered="filtered"><span>xmlwriter </span><span>pgsql(可选)</span><br data-filtered="filtered"><span>session </span><span>sqlite3 (可选)</span><br data-filtered="filtered"><span>sockets</span><br>
服务器
<span>OpenIPMI:IPMI硬件监控</span><br data-filtered="filtered"><span>libssh2:版本1.0以上,监控ssh服务</span><br data-filtered="filtered"><span>fping:icmp监控项</span><br data-filtered="filtered"><span>libcurl:监控web项.</span><br data-filtered="filtered"><span>libiksemel:支持jabber报警</span><br data-filtered="filtered"><span>net-snmp:增加SNMP支持</span>
java网关
<span>logback-core-0.9.27.jar :http://logback.qos.ch/ ,0.9.27, 1.0.13, and 1.1.1已测试</span><br data-filtered="filtered"><span>logback-classic-0.9.27.jar :http://logback.qos.ch/ , 0.9.27, 1.0.13, and 1.1.1.已测试</span><br data-filtered="filtered"><span>slf4j-api-1.6.1.jar :http://logback.qos.ch/ ,1.6.1, 1.6.6, and 1.7.6.已测试</span><br data-filtered="filtered"><span>android-json-4.3_r3.1.jar :https://android.googlesource.com/platform/libcore/+/master/json ,2.3.3_r1.1 and 4.3_r3.1已测试</span>
zabbix升级
1.关闭zabbix<br>2.备份整个数据库目录<br>3.备份配置文件(/etc/zabbix)、php网站源码、整个zabbix目录<br>4.重新安装zabbix server和agentd,并检查配置文件<br>5.启动zabbix<br>6.部署php源码<br>
注意事项
1.zabbix禁止使用:<span>\ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # % @要使用的话,如%%,$$</span>
1.用户管理<br>2.创建主机<br>
zabbix配置
主机与组
1.创建主机
2.主机参数<span><br></span>
<span></span><span>主机名:zabbix客户端配置文件中的hostname名称一定要与这个名字一致。</span>
<span><span><span>主机接口:</span>zabbix agent默认</span>端口10050,snmp 161,jmx 12345,IMPI 623.</span>
3.主机模板
4.主机组<br>组名必须唯一<br>
监控项
item属性
名称:可使用$1,$2,$3...$9这9个参数
监控类型<br>impi:检查他的硬件<br>agent:检测他的mysql、<a target="_blank">nginx</a>之类<br>配置了多个接口:zabbix会依次(Agent→SNMP→JMX→IPMI)调用接口,直到找到合适的接口为止<br>
agent
主动
被动<br>http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/<br>
键值key
自带key
agent.hostname <br>agent.ping <br>agent.version zabbix agent版本<br>kernel.maxfiles 系统支持最大的openfiles<br>kernel.maxproc 系统支持最大的进程数量<br>log 监控日志文件<br><span>logrt[file_pattern,<regexp>,<encoding>,<maxlines>,<all/skip>,<output>]<br></span> <span>监控支持轮转的日志</span><br><span>net.dns[<ip>,zone,<type>,<timeout>,<count>] </span> <span> </span><span>检测DNS服务是否开启</span><span><br></span><span>net.dns.record[<ip>,zone,<type>,<timeout>,<count>] </span> <span> </span><span>执行一个DNS查询<br></span><span>net.if.collisions[if] </span> <span> windows网卡收集</span><br><span>net.if.discovery </span> <span> </span><span>列出网卡. 通常用于低级别的自动发现</span><br><span>net.if.in[网卡名称,packets/errors/dropped]</span> <span>网卡入口流量</span><br><span>net.if.out</span>[网卡名称,packets/errors/dropped] <span>网卡出口流量</span><br><span>net.if.total</span>[网卡名称,packets/errors/dropped] <span>网卡总流量</span><br><span>net.tcp.listen[port] </span> <span> </span><span>检测端口是否开启</span><br><span>net.tcp.port[<ip>,port] </span> <span> </span><span>是否可以连接到指定的TCP端口</span><br><span>net.tcp.service[service,<ip>,<port>] </span> <span> </span><span>检测服务是否开启,并且端口可用</span><span><br></span><span>net.tcp.service.perf[service,<ip>,<port>] </span> <span> </span><span>检测服务器性能</span><br><span>net.udp.listen[port]</span> 检测UDP端口是否在监听<br><span>proc.mem[<name>,<user>,<sum/max>,</span><span>命令行过滤(正则表达时)</span><span>] 用户进程消耗的内存</span><br><span>proc.num[<name>,<user>,<all/run/sleep>,<cmdline>]</span> 用户某些状态的进程数量<br><span>sensor[device,sensor,<mode>] 读取硬件传感器</span><br><span>system.boottime 系统启动的时间戳</span><br><span>system.cpu.intr 设备中断</span><br><span>system.cpu.load[<cpu>,<avg1/avg5/avg15>] CPU负载</span><br><span>system.cpu.num[<type>] </span> CPU数量<br><span>system.cpu.switches </span> 上下文交换<br><span>system.cpu.util[<cpu>,<type>,<</span>avg1/avg5/avg15<span>>] </span> CPU利用率<span><br></span><span>system.hostname[<type>] </span> 返回主机名<br><span>system.hw.chassis[<info>] </span> 返回机架信息<br><span>system.hw.cpu[<cpu>,<info>]</span> 返回CPU信息<br><span>system.hw.devices[<type>] 列出PCI或USB</span><br><span>system.hw.macaddr[<interface>,<format>] 列出MAC地址</span><br><span>system.localtime[<type>] 系统时间</span><br><span>system.run[command,<mode>] 在指定的主机上运行命令</span><br><span>system.stat[resource,<type>] 虚拟内存状态</span><br><span>system.sw.arch 返回软件信息</span><br><span>system.sw.os[<info>] 返回系统信息</span><br><span>system.sw.packages[<package>,<manager>,<format>] 已安装软件列表</span><br><span>system.swap.in[<device>,<type>] 磁盘到内存<br></span><span>system.swap.out[<device>,<type>] 内存到磁盘</span><br><span>system.swap.size[<device>,<type>] 交换分区大小</span><br><span>system.uname 返回主机信息</span><br><span>system.uptime 系统运行时长</span><br><span>system.users.num 登陆用户数量</span><br><span>vfs.dev.read[<device>,<type>,<mode>] 磁盘读写状态</span><br><span>vfs.dev.write[<device>,<type>,<mode>] 磁盘写入状态<br></span>vfs.file.time 文件时间<br><span>vfs.file.cksum 计算文件校验</span><br><span>vfs.file.contents </span>获取文本内容<br><span>vfs.file.exists 检验文件是否存在</span><br><span>vfs.file.md5sum 文件MD5校验码</span><br><span>vfs.file.regexp 文件中搜索字符串</span><br><span>vfs.file.regmatch 文件中是否搜索到字符串</span><br><span>vfs.file.size 文件大小</span><br><span>vfs.fs.discovery 列出挂载的文件系统</span><br><span>vfs.fs.inode[fs,<mode>] inodes数量</span><br><span>vfs.fs.size[fs,<mode>] 磁盘空间</span><br><span>vm.memory.size[<mode>] 内存大小</span><br><span>web.page.get[host,<path>,<port>] </span>获取网页内容<span><br></span><span>web.page.perf[host,<path>,<port>]</span><span> </span><span>获取完全加载网页消耗的时长</span><br><span>web.page.regexp[host,<path>,<port>,<regexp>,<length>,<output>] </span><span>在网页中搜索字符串</span><br>
自定义key
<span>1.在客户端配置文件zabbix_angentd.conf里面配置UserParameter = key,command(key必须唯一)<br>UserParameter = ping,echo 1<br></span>UserParameter = mysql.ping,mysqladmin -uroot ping | grep -c alive(返回1,mysql运行,返回0,mysql挂了)<span><br></span><span>2.重启客户端。<br></span><span>3.配置监控项中填入配制的key<br>4.key带参数</span>UserParameter = key[*],command<span><br> 例如:</span><span>统计一个文件中有多少行被匹配?<br></span><span> </span><span>UserParameter=wc[*],grep -c "$2" $1</span><br data-filtered="filtered"><span>如下方法将会返回文件中出现指定字符的行数</span><br data-filtered="filtered"><span>wc[/etc/passwd,root]</span><br data-filtered="filtered"><span>wc[/etc/services,zabbix]</span><span><br><br></span>
主机接口
信息类型
数字<br>浮点数<br>字符:最长255字节<br>日志:key必须为log[]<br>文本:大小无限制<br>
数据类型
<p>布尔数:true为0,false为1<br> TRUE:true, t, yes, y, on, up, running, enabled, available<br> FALSE: false, f, no, n, off, down, unused, disabled, unavailable<br>八进制<br>十进制<br>十六进制<br></p>
单位
数值单位<br>bps:默认超过1000会自动换算单位<br>B(byte),Bps(bytes per second):会除以1024<br>
时间单位<br>unixtime:yyyy.mm.dd hh:mm:ss(只能正数,如:2017.08.18 14:52:15)<br> uptime:hh:mm:ss或N days,hh:mm:ss(如:10 days,14:52:15)<br>
使用自定义倍数
<span>接收到的整数或者浮点数都会乘以这个文本框里面的值。<br>使用这个选项,zabbix将会把收到的KB,MBps等数据先转为B,Bps。</span>
自定义时间间隔
<span>最多只能设置7个灵活更新间隔<br></span><span>默认使用最小的时间间隔</span><br><span>Interval:10,Period:1-5,10:00-19:00<br>(星期一到星期五10点到19点每10秒更新一次)<br></span>
存储值
差量(简单变化)
差量(每秒速率)<br>
查看值
值映射
<span>需要配置数字映射到字符的映射表</span><br><span>1=>ttlsa.com访问正常(修改不保存到数据库)</span>
<span>key返回的数据只能为整数,并且不做任何修改保存到数据库中。<br></span><span>只有在显示的时候才会根据映射表来展示相应的内容。</span>
item key值<br>
key名称
key参数
1.名称允许范围:<span>0-9a-zA-Z_-.<br>2.多个参数之间用逗号“,”分开<br></span><span>带引号的字符串:</span><span><span>key参数带引号合法,参数里面带有双引号,那么要使用”\"来转义</span><br>不带引号的字符串:</span><span><span>除了逗号和右中括号其他任何unicode字符串都合法<br></span>数组:</span><span>key参数是一个数组,那么数组要多加一对中括号</span>
子主题
触发器
<span>什么是触发器:<br>触发器使用逻辑表达式来评估通过item获取到得数据是处于哪种状态,<br>item一收回数据,将任务交给触发器去评估状态</span>
触发器属性
触发器名称
<strong>$1, $2…$9</strong><span> 可以被用来关联表达式的常量<br>例如:</span><span>name:</span><span>Processor load above $1 on {</span><a rel="external nofollow">HOST.NAME</a><span>}”<br data-filtered="filtered"> 表达式:</span><span>system.cpu.load[percpu,avg1].last(0)}>5</span><span><br data-filtered="filtered"></span><span> 显示为:</span><span>Processor load above 5 on ttlsa云服务器</span>
表达式
<div><label for="type">多重问题事件生成</label></div>
<span><font color="#c41230">通过设置该选项,你可以在触发器产生problem的时候触发一个事件</font></span>
url
<span>在Monitoring → Triggers中,可以看到URL并且可以点击,一般情况下他需要配合触发器ID来使用,在url中包含触发器ID(宏变量</span><span> </span><span>{</span><a rel="external nofollow">TRIGGER.ID</a><span>}</span><span>),这样可以直接点击到具体触发器中。</span>
触发器告警级别和颜色
1.管理--->一般--->触发器严重性<br>2.把msgid "Important"<br> msgstr "very import"保存到/usr/local/nginx/html/zabbix/locale/en_US/LC_MESSAGES/frontend.po
事件<br>
可视化配置
模板配置
报警配置
宏变量
用户与组管理
外部命令检测
基本检测
<b>icmpping[<target>,<packets>,<interval>,<size>,<timeout>] 检测是否支持icmpping<br></b><b>cmppingloss[<target>,<packets>,<interval>,<size>,<timeout>] 返回丢包率百分比<br></b><b>icmppingsec[<target>,<packets>,<interval>,<size>,<timeout>,<mode>] 返回响应时间<br></b><b><br></b>
zabbix监控ODBC
<span>zabbix通过调用ODBC来获取数据库的数据以及数据库状态<br></span><h3>1.安装unixODBC :yum -y install unixODBC unixODBC-devel<br>2.安装unixODBC驱动 :yum install mysql-connector-odbc<br>3.配置unixODBC :[test]</h3><span> Description = MySQL test database</span><br data-filtered="filtered"><span> </span><span>Driver = mysql</span><br data-filtered="filtered"><span> </span><span>Server = 127.0.0.1</span><br data-filtered="filtered"><span> </span><span>User = root</span><br data-filtered="filtered"><span> </span><span>Password =</span><br data-filtered="filtered"><span> </span><span>Port = 3306</span><br data-filtered="filtered"><span> </span><span>Database = zabbix</span><h3>4.验证ODBC是否可用 :使用isql命令,如<span> isql test<br></span>5.编译支持ODBC的zabbix :--with-unixodbc[=ARG]</h3><h3>6.配置监控项 :<br><table cellspacing="0" cellpadding="0"><tbody><tr><td valign="top"><span><span>Type</span></span></td><td valign="top"><span> 类型,选择监控数据库.</span></td></tr><tr><td valign="top"><span><span>Key</span></span></td><td valign="top"><span> 监控项key <b>db.odbc.select</b>[unique_description,data_source_name]<br></span><span> unique_description:描述,要唯一</span><br data-filtered="filtered"><span> data_source_name:odbc.ini中定义的数据源名称.</span></td></tr><tr><td valign="top"><span><span>User name</span></span></td><td valign="top"><span> 数据库用户名 (可选,如果odbc.ini中已经定义)</span></td></tr><tr><td valign="top"><span><span>Password</span></span></td><td valign="top"><span> 数据库密码 (可选,如果odbc.ini中已经定义)</span></td></tr><tr><td valign="top"><span><span>SQL query</span></span></td><td valign="top"><span> SQL语句</span></td></tr><tr><td valign="top"><span><span>Type of information</span></span></td><td valign="top"><span> 返回值类型,如果类型选错了,这个监控项会不可用</span></td></tr></tbody></table></h3>
0 条评论
下一页