zabbix

http://www.ttlsa.com/zabbix/introduction-zabbix-the-first-section-of-chapter/

zabbix简介(第一章第一节)

Alexei Vladishev创建了Zabbix项目,当前处于活跃开发状态,Zabbix SIA提供支持.

Zabbix是一个企业级的、开源的、分布式的监控套件

Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划.

Zabbix支持polling和trapping两种方式. 所有的Zabbix报告都可以通过配置参数在WEB前端进行访问. Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix可以通过尽可能的配置来扮演监控你的IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司.

Zabbix是零成本的. 因为Zabbix编写和发布基于GPL V2协议. 意味着源代码是免费发布的.

Zabbix公司也提供商业化的技术支持.

以上内容来自“zabbix翻译”,只翻译了简介与特性,在找zabbix介绍内容之时,群主提供以上内容,翻阅了下,内容不错,便直接从上面转了内容。需要中文文档的同学可以继续关注这个网站,当然也要同时关注“运维生存时间”了,我想,我们这的内容会更多,更全面,更实用~

全球有大量的不同规模的组织利用Zabbix作为主要的监控平台,我也是使用者之一,zabbix的各种特性深深的吸引了我,下一节谈谈zabbix的特性。   

zabbix特性(第一章第二节)

在知道zabbix是什么之后,我们最关心的是zabbix有什么特性,了解特性之后,我们才能决定是否会使用zabbix,以及zabbix是否适合我们.

概述

Zabbix是一个高度集成的网络监控套件,通过一个软件包即可提供如下特性

数据收集

  ● 可用性及性能检测

  ● 支持SNMP(trapping及polling)、IPMI、JMX监控

  ● 自定义检测

  ● 自定义间隔收集收据

  ● server/proxy/agents吸能

灵活的阀值定义

  ● 允许灵活地自定义问题阀值,Zabbix中称为触发器(trigger), 存储在后端数据库中

高级告警配置

  ● 可以自定义告警升级(escalation)、接收者及告警方式

  ● 告警信息可以配置并允许使用宏(macro)变量

  ● 通过远程命令实行自动化动作(action)

实时绘图

  ● 通过内置的绘图方法实现监控数据实时绘图

扩展的图形化显示

  ● 允许自定义创建多监控项视图

  ● 网络拓扑(network maps)

  ● 自定义的面板(screen)和slide shows,并允许在dashboard页面显示

  ● 报告

  ● 高等级(商业)监控资源

历史数据存储

  ● 数据存储在数据库中

  ● 历史数据可配置

  ● 内置数据清理机制

配置简单

  ● 主机通过添加监控设备方式添加

  ● 一次配置,终生监控(译者注:除非调整或删除)

  ● 监控设备允许使用模板

模板使用

  ● 模板中可以添加组监控

  ● 模板允许继承

网络自动发现

  ● 自动发现网络设备

  ● agent自动注册

  ● 自动发现文件系统、网卡设备、SNMP OID等

快速的web接口

  ● web前端采用php编写

  ● 访问无障碍

  ● 你想怎么做就能做么做

  ● 审计日志

Zabbix API

  ● Zabbix API提供程序级别的访问接口,第三方程序可以很快接入

权限系统

  ● 安全的权限认证

  ● 用户可以限制允许维护的列表

全特性、agent易扩展

  ● 在监控目标上部署

  ● 支持Linux及Windows

二进制守护进程

  ● C开发,高性能,低内存消耗

  ● 易移植

具备应对复杂环境情况

  ● 通过Zabbix proxy可以非常容易的创建远程监控

喜爱zabbix以及还在学习zabbix的SA们,请继续关注“运维生存时间”zabbix系列文章。下一篇文章:《zabbix进程构成(第一章第三节)》

zabbix进程构成(第一章第三节)

了解完zabbix特性之后,本该进入zabbix安装教程,但是我觉得在安装之前我们很有必要了解一下zabbix进程组成结构,默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。

进程介绍

zabbix_agentd

客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等

zabbix_get

zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

zabbix_sender

zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。

zabbix_server

zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server

备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

zabbix_proxy

zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。

zabbix_java_gateway

zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。

结束

Java各种进程介绍到此介绍,是不是对zabbix的了解更多了呢,学好这一章尤其重要。今天就到此,还是那句话,喜欢zabbix的同学们继续关注运维生存时间zabbix教程系列。下一篇:《zabbix硬件、软件需求(4)》

zabbix硬件、软件需求(4)

在了解完zabbix进程构成之后,我们接着聊zabbix的硬件配置、软件需求,或者说我安装zabbix需要什么软件,服务器需要什么样的配置,监控100台服务器需要怎样的一台服务器,或者我有一台8核16G的服务器,我能监控多少台服务器?来,带着困惑往下看.

1. 硬件需求

无非就是cpu、内存、硬盘之类的

1.1 CPU

由你的zabbix数据库使用情况来做决定,如果你监控的项目越多,那你的cpu要越好。具体多好,下面有个表格

1.2 内存与硬盘

最基本的需求:128MB内存、256MB硬盘,当然这样的机器这年头应该找不到了吧,尤其要说明硬盘的问题,你的监控项越多、历史记录保留时间的越久数据库将会越大。我所知道的100来台服务器,做基本的cpu、内存、硬盘、网卡流量等监控,长年累月下来大概60GB左右。

1.3 其他硬件

如果你觉得有必要的话,你再准备一个GSM短信猫吧,不过很少人用,基本上都使用email或者飞信报警.

1.4 硬件需求表

[图片]

zabbix硬件

如上,P2的CPU、256MB内存已经可以监控20个主机。AMD 3200+/2G内存可以监控500个主机(05年大学的时候,中低端主流cpu,这都快10年了,尤其可见zabbix对服务器的硬件配置要求有多低),现在的服务器一般都比上面最高配还来得高,所以我武断的认为,大家手头的服务器都有能力监控1w+以上的服务器,我再武断的认为手头上有1w+服务器的公司能有多少.

2. 操作系统

支持如下平台,平台之多让人刮目相看,但是window只能跑客户端

Linux

IBM AIX

FreeBSD

NetBSD

OpenBSD

HP-UX

Mac OS X

Solaris

Windows: 2000, Server 2003, XP, Vista, Server 2008, 7, 8, Server 2012 (只能跑Zabbix agent)

3. 软件需求

3.1 数据库

MySQL:5.0.3或者以上,推荐使用InnoDB引擎(TTLSA推荐使用MySQL,开源免费资料多)

Oracle:10g或者以上

PostgreSQL:8.1或者以上 .

SQLite:3.3.5或者以上

IBM DB2:9.7或者以上

3.2 WEB应用

Apache:1.3.12或者以上

PHP:5.3.0或者以上,zabbix早期版本支持5.2,但是2.2版本只支持到5.3

PHP扩展:

gd

bcmath

ctype

libXML     2.6.15或以上

xmlreader

xmlwriter

session

sockets

mbstring

gettext

ibm_db2(可选)

mysqli(推荐)

oci8(可选)

pgsql(可选)

sqlite3    (可选)

3.3 服务器

以下内容都为可选项,如果你需要监控特定项,安装特定支持即可。

OpenIPMI:IPMI硬件监控

libssh2:版本1.0以上,监控ssh服务

fping:icmp监控项

libcurl:监控web项.

libiksemel:支持jabber报警

net-snmp:增加SNMP支持

3.4 JAVA网关

如果你需要通过Java网关来监控你的Java进程,那么你需要增加如下支持

logback-core-0.9.27.jar :http://logback.qos.ch/ ,0.9.27, 1.0.13, and 1.1.1已测试

logback-classic-0.9.27.jar :http://logback.qos.ch/ , 0.9.27, 1.0.13, and 1.1.1.已测试

slf4j-api-1.6.1.jar :http://logback.qos.ch/ ,1.6.1, 1.6.6, and 1.7.6.已测试

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已测试

4. 时间同步

最重要的一点在最后提,请确保你所有的服务器时间都是正确的,为了确保时间ok,请在crontab里面加上定时时间同步。

1

2# crontab -l

00 00  * * *  /usr/sbin/ntpdate -u 195.13.1.153

5. 结束

说到这里,大家对zabbix的一个需求大概都明白了,不过还是有人特别想知道:我有N个监控项到底需要多大的硬盘空间呢?好奇害死猫,请看下下回的《zabbix数据库空间需求计算方法》,下一篇文章《zabbix安装》。请大家继续一如既往的支持运维生存时间,官方网站http://www.ttlsa.com/

zabbix监控多JMX端口

http://www.ttlsa.com/zabbix/zabbix-monitor-mutli-jmx-port/

个人很少发表文章,算的上是处女作吧,大家轻喷,高手可以略高,主要是给zabbix新手提供一个简单的思路。下面附上操作步骤:

1. 开启Tomcat JMX功能

CATALINA_OPTS="$CATALINA_OPTS

-Dcom.sun.management.jmxremote

-Djava.rmi.server.hostname=10.124.129.241

-Dcom.sun.management.jmxremote.port=8889

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false"

重启tomcat即可;

注:java程序都会提供一个JMX接口去进行采集相关的数据,其他开启方式请参考相关说明,我主要是已tomcat监控为主;

2. 编写自动发现端口脚本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33[root@localhost scripts]# cat /etc/zabbix/scripts/jmx_discovery.sh

#!/bin/bash

# function:monitor tcp connect status from zabbix

source /etc/bashrc >/dev/null 2>&1

source /etc/profile >/dev/null 2>&1

jmx_port_discovery () {

jmx_port=($(cat /etc/zabbix/scripts/java.txt|cut -d "|" -f2))

Tomcat_Name=($(cat /etc/zabbix/scripts/java.txt|cut -d "|" -f1))

printf '{\n'

printf '\t"data":[\n'

for((i=0;i<${#jmx_port[@]};++i))

{

num=$(echo $((${#jmx_port[@]}-1)))

if [ "$i" != ${num} ];then

printf "\t\t{ \n"

printf "\t\t\t\"{#JMX_PORT}\":\"${jmx_port[$i]}\",\n"

printf "\t\t\t\"{#JAVA_NAME}\":\"${Tomcat_Name[$i]}\"},\n"

else

printf "\t\t{ \n"

printf "\t\t \n"

printf "\t\t\t\"{#JMX_PORT}\":\"${jmx_port[$i]}\",\n"

printf "\t\t\t\"{#JAVA_NAME}\":\"${Tomcat_Name[$i]}\"}]}\n"

fi

}

}

case "$1" in

jmx_port_discovery)

jmx_port_discovery

;;

*)

echo "Usage:$0 {jmx_port_discovery}"

;;

esac

编写/etc/zabbix/scripts/java.txt文件,内容如下:

1

2

3[root@localhost scripts]# cat /etc/zabbix/scripts/java.txt

Tomcat_442|8880

Tomcat_8591|8881

注:其实这里有个弊端,不太智能,也就是需要把监控的jmx端口和相关服务名称写到这个文本里去,这里还需要网友提供一个更可靠的方法,还请大家不要栗色指教。

3. 编写jmx监控配置文件

1

2

3

4

5[root@localhost ~]# cat /etc/zabbix/zabbix_agentd.conf.d/discovery_java_status.conf

UserParameter=java.jmx.discovery,/etc/zabbix/scripts/jmx_discovery.sh jmx_port_discovery

UserParameter=java.HeapMemoryUsage.status[*],/usr/local/jdk1.7.0_71/bin/java -jar /etc/zabbix/scripts/cmdline-jmxclient-0.10.3.jar – 127.0.0.1:$1 java.lang:type=Memory HeapMemoryUsage 2>&1|grep $2|cut -d " " -f2

UserParameter=java.NonHeapMemoryUsage.status[*],/usr/local/jdk1.7.0_71/bin/java -jar /etc/zabbix/scripts/cmdline-jmxclient-0.10.3.jar – 127.0.0.1:$1 java.lang:type=Memory NonHeapMemoryUsage 2>&1|grep $2|cut -d " " -f2

UserParameter=java.LoadClass.status[*],/usr/local/jdk1.7.0_71/bin/java -jar /etc/zabbix/scripts/cmdline-jmxclient-0.10.3.jar – 127.0.0.1:$1 java.lang:type=ClassLoading $2 2>&1|cut -d " " -f6

4. 进行测试

[图片]

zabbix监控多JMX端口 – 01

其实,整体大致就是如此,key都能定义好了,至于模板我相信大家都能写了。(我也是今天才刚刚弄了下,很多也还没有完善)有关不同java的服务,最好是查看一下相关的文档,比如tomcat官方文档。这里大家可以参考一下tomcat自带的模板,下面给大家展示一下效果图:

[图片]

zabbix监控多JMX端口 – 02

[图片]

zabbix监控多JMX端口 – 03

谢谢"北京 – 小易"的分享。

http://www.ttlsa.com/zabbix/zabbix-use-jmx-monitor-tomcat/

zabbix监控Tomcat/JVM实例性能(115)

最近陆续写了几个zabbix监控实例,也提供了监控模板。今天群里有兄弟问什么时候出一个zabbix通过JMX监控tomcat的文章。鉴于tomcat用户群体大而且之前也有很多兄弟有过相似需求,今天在此分享zabbix监控tomcat一文。

安装Tomcat

既然你需要监控tomcat,基本说明你已经安装好tomcat。如有正好你不会安装tomcat,那么请参考TTLSA之前的文章《Tomcat7安装》

配置Tomcat JMX

配置jmx

编辑catalina.sh,加入如下配置

1

2# vim /usr/local/tomcat-7.0.65/bin/catalina.sh 

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345"

启动Tomcat

1# /usr/local/tomcat-7.0.65/bin/startup.sh

zabbix server配置

首先我们需要了解一下他们的对应关系,zabbix_server开启java poller, zabbx_java开启JavaGateway,端口为10052,Tomcat JMX开启12345提供性能数据。

数据获取:java poller<–>JavaGateway:10052<–>Tomcat:12345.

Java支持

编译安装zabbix server需要加上–enable-java以支持jmx监控,如果之前的zabbix server没加,那么请重新编译安装, 分享下我的安装参数:

1# ./configure –prefix=/usr/local/zabbix-3.0.0/ –enable-server –enable-agent –with-mysql –with-net-snmp –with-libcurl –with-libxml2 –enable-java

启动zabbix_java

1# /usr/local/zabbix-3.0.0/sbin/zabbix_java/startup.sh

zabbix_server.conf配置

默认未启用JavaPollers,需要修改如下配置

1

2

3

4# cat /usr/local/zabbix-3.0.0/etc/zabbix_server.conf | grep Java | grep =

JavaGateway=127.0.0.1

JavaGatewayPort=10052

StartJavaPollers=5

Zabbix图形界面配置

主机增加JMX接口

进入后台,configuration->hosts->选择你的主机->jmx interface 点击add,输入对应的tomcat ip地址和jmx端口,如下图:

[图片]

Link TOMCAT模板

切换到templates选项卡,选择zabbix自带的tomcat/JMX模板,如下

[图片]

最后Update即可。接下去等数据。

效果展示

自带的jmx两个模板监控项目非常多,自己去摸索。

[图片]

后续有更多zabbix实例文章,请保持对ttlsa的关注!

启用nginx status状态详解

http://www.ttlsa.com/nginx/nginx-status-detail/

nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助。为了后续的zabbix监控,我们需要先了解nginx状态页是怎么回事。

1. 启用nginx status配置

在默认主机里面加上location或者你希望能访问到的主机里面。

1

2

3

4

5

6

7

8

9

10

11server {

  listen  *:80 default_server;

  server_name _;

   location /ngx_status 

   {

     stub_status on;

     access_log off;

     #allow 127.0.0.1;

     #deny all;

   }

}

2. 重启nginx

请依照你的环境重启你的nginx

1# service nginx restart

3. 打开status页面

1

2

3

4

5# curl http://127.0.0.1/ngx_status

Active connections: 11921 

server accepts handled requests

 11989 11989 11991 

Reading: 0 Writing: 7 Waiting: 42

4. nginx status详解

active connections – 活跃的连接数量

server accepts handled requests — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求

reading — 读取客户端的连接数.

writing — 响应数据到客户端的数量

waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

5. 完成

下篇文章我们将使用zabbix监控nginx

Zabbix监控nginx性能(113)

http://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/

需要使用zabbix监控nginx,首先nginx需要配置ngx_status,如果开启请看凉白开之前的文章《启用nginx status状态详解》

nginx status信息

1

2

3

4

5# curl http://127.0.0.1/ngx_status

Active connections: 11921 

server accepts handled requests

 11989 11989 11991 

Reading: 0 Writing: 7 Waiting: 42

以上为nginx性能计数,我们除了监控以上数据,还需要监控nginx进程状态,并且配置触发器!

zabbix客户端配置

编写客户端脚本ngx_status.sh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39#!/bin/bash

# DateTime: 2015-10-25

# AUTHOR:凉白开

# WEBSITE: http://www.ttlsa.com

# Description:zabbix监控nginx性能以及进程状态

# Note:此脚本需要配置在被监控端,否则ping检测将会得到不符合预期的结果

# 文章地址:<span id="sample-permalink" tabindex="-1">http://www.ttlsa.com/zabbix/<span id="editable-post-name" title="临时固定链接,点击可更改这部分。">zabbix-monitor-nginx-performance</span>/</span> ‎

HOST="127.0.0.1"

PORT="80"

# 检测nginx进程是否存在

function ping {

 /sbin/pidof nginx | wc -l 

}

# 检测nginx性能

function active {

 /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'

}

function reading {

 /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'

}

function writing {

 /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'

}

function waiting {

 /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'

}

function accepts {

 /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'

}

function handled {

 /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'

}

function requests {

 /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'

}

# 执行function

$1

zabbix客户端配置

将自定义的UserParameter加入配置文件,然后重启agentd,如下:

1

2

3

4#cat /usr/local/zabbix-3.0.0/etc/zabbix_agentd.conf | grep nginx

UserParameter=nginx.status[*],/usr/local/zabbix-3.0.0/scripts/ngx-status.sh $1

# killall zabbix_agentd

# /usr/local/zabbix-3.0.0/sbin/zabbix_agentd

zabbix_get获取数据

此步骤可以跳过,但是最好是测试一下,因为通过此命令我们可以检测配置是否正确

1

2

3

4# /usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[accepts]'

9570756

# /usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[ping]'

1

在zabbix server服务器上执行如上命令, 10.10.1.121为agentd机器

zabbix web端配置

导入Template App NGINX模板

模板我已经写好了,将会放到附件中。具体导入方式请看前面的文章《zabbix链接及解除模板链接(76)》

Link NGINX模板

到了最后一个阶段,登陆zabbix管理端,link模板到nginx服务器:configuration->hosts->点击nginx所在服务器->点击template->Link new templates输入"Template App NGINX"->Add->最后点击update。

监控效果

[图片]

zabbix-nginx-status

模板附件下载:zabbix_monitor_nginx_template_ttlsa_com

zabbix模板介绍(74)

http://www.ttlsa.com/zabbix/zabbix-templates-introduction/

zabbix模板是做什么的?

我们不提概念,通过一个案例来说明他是干什么的。

王小明是某公司系统管理员,负责100台Linux服务器,还有几台windows服务器。他选择了zabbix作为监控服务器基本性能,如cpu、内存、硬盘、网络这些基本的东西,主管要求他一天内搞定。于是他开始做,第一台服务器添加cpu、内存、硬盘、网络的items,然后第二台在一个个添加,添加了两天两夜,他一夜没合眼,突然看到zabbix模板的功能,卒了。

这是一个忧伤的故事,没文化害死人是真的。如果他一开始创建一个模板,然后每个服务器套用/链接这个模板,那么只要在创建主机的过程中在link(套用/链接)这个模板,一个服务器就完成了。也不会发生这么悲伤的事情….

平时工作中,我们需要监控web、mysql、redis、nginx这些服务器,众多服务器的业务都是一样的,所以我们只要事先创建好模板,然后所有服务器链接这个模板即可,如果后续有修改、新增功能,只需要修改模板即可。

创建zabbix模板 配置zabbix templates(75)

继上篇《zabbix模板介绍》,接下来便是创建zabbix模板的实例,zabbix模板中可以包含监控项、触发器、web监控、图表等等项目,一一创建这些项目之后,在后续的主机只需要套用这个模板,那么主机便可以监控模板里面所配置的监控项目。

创建zabbix模板

点击Configuration(配置) —Templates(模板)—create template(创建模板),template标签信息如下

[图片]

create_template_1

Template name:模板名称,在嵌套模板中,都使用template name

Visible name :显示的名称,template显示是visible name,方便识别

Groups Host/template :当前模板归到哪个组

New group:创建一个新组,当前模板便会加入这个组,可以为空

Hosts/Templates:把模板链接到主机

linked template标签如下

[图片]

zabbix创建模板 – 2

模板嵌套,是一个继承的关系。例如我们定义了一个基础模板,里面item有cpu、内存、硬盘、网卡等等基本信息监控,我们有需要定义个MySQL与WEB监控模板,那么这两个模板分别嵌套这个基础模板即可,而不需要重复定义监控项。

使用方法:

文本框里输入关键词,例如Linux即可搜索到名称含有linux的模板,在下拉列表中选择你要的模板,最后点击Add(千万不要忘记)。

Macro标签如下

[图片]

zabbix创建模板 – 3

Macro变量名称,value为变量值。更多的使用方法请参考《zabbix自定义用户Macro》

添加items, triggers, graphs,low-level discovery rules,web scenarios,screens

一一添加items, triggers, graphs,low-level discovery rules,web scenarios,screens。与在单台host添加item,trigger,graphs等等的方法是一样,这边我就不再重复了。添加完毕之后,一个模板也就这么完成了。

编辑zabbix模板

点击Configuration(配置) —Templates(模板)—你需要编辑的模板,当前的底部要比创建模板要多几个按钮,我们分别来讲下这下按钮都是做什么的

save:保存,没什么好说的

Clone:克隆模板,克隆一个与当前模板一模一样的模板,此时你只需要修改下模板名称,以及在其基础上做修改,便能很快的完成一个模板

full clone:完全克隆,比clone多一点东西,例如screen

delete:删除模板,如果主机有嵌套当前模板,那么这些item依旧保留在主机上,主机不受影响

delete and clear:删除模板,如果主机有嵌套当前模板,那么这些item也被删除掉。

cancel:取消

http://www.ttlsa.com/zabbix/zabbix-linking-unlinking-templates/

zabbix链接及解除模板链接(76)

上一节讲到《zabbix创建模板》,其中就已经涉及到了链接与解除模板链接(link与unlink),这篇文章除了说明怎么链接模板以外,还会特别讲到一些需要特别注意的细节。HOST链接模板之后,便继承了模板里定义的item,trigger等等,使用这个方法,配置zabbix监控会减少很多重复的体力劳动,并且更加灵活。

备注:模板只能被链接到host,不是链接到组里面。

zabbix主机链接模板

Configuration –Hosts–点击你需要链接模板的主机—-切换到templates(模板)选项,Link new templates的文本框里面输入你需要link的模板名称(关键词就可以了),选择你需要添加的模板,点击Add,最后save。最后,当前host便获得了模板所有的item,trigger,web等等实体。

备注:主机link多个模板必须注意,模板们不能含有相同的item key。trigger和graphs中使用的items不能是来自多个模板。

当实体 (items, triggers, graphs等等)添加之后,内部操作如下:

  1. host原有的项目与模板的相同,那么host原有的监控项目将会被模板所有的覆盖

  2. 模板中的所有实体添加到主机中

关于item列表

link模板之后,我们可以发现,item的名称也有些变化。凡是从模板带来的item,名称前缀带有灰色的模板名称。没有任何前缀的,那么表示这个item是在当前host里定义的。

实体唯一性规则

通过前面描述,我们可以了解到,zabbix link多个模板,这些模板不能有相同的实体。如果模板里的实体与当前host实体冲突,那么当前hosts的实体将会被覆盖,基于此,我们需要了解实体唯一性的规则由什么决定!

  ● items:item key

  ● trigger:trigger名称与表达式

  ● 自定义图表:图表名称与它的items

  ● applications:application的名称

多台主机批量link模板

批量link主机的方法

Configuration–Templates, 点击你需要选择的模板, Other | group 里面选择你的主机,点击« ,讲主机们添加到左边Hosts / templates,最后点击save即可,如果想移除主机,只需要点击»。

批量更新template

Configuration — Hosts — 勾上你需要批量更新的主机,左下角下拉框选择Mass update,然后点击Go,切换到template,选择你需要的模板。最后点击update即可。

备注:

zabbix默认提供了很多模板,有什么不懂的可以参考他,但是不推荐你直接在自带的模板上修改,确实有修改修改,我倾向于让你去克隆一个模板。

编辑link实体

在host里面,点击zabbix实体,大部分文本框都是灰色/不可编辑状态,只有更新间隔等等少量内容可以修改。因为很多host使用同一个模板,一旦你修改了一个实体,所有host都会跟着变化,所以zabbix不允许直接修改link过来的实体类。如果你确实需要修改他,那么你只能去修改zabbix模板,不过记住,修改之前要谨记,所有link当前模板的host都会一起变动。

Unlinking模板

Configuration–Hosts–切换到Templates选项–点击Unlink 或者Unlink and clear,最后点击save。

unlink与unlink and clear的区别

  ● unlink:仅仅移除template,原先的实体会继续保留在host上

  ● unlink and clear:移除template,template所包含的实体也会一起移除,相对比较彻底。

本文就到这里结束了,请继续关注下一篇文章:《zabbix内嵌模板》

zabbix模板嵌套 Templates Nesting(77)

http://www.ttlsa.com/zabbix/zabbix-templates-nesting/

在zabbix使用过程中,在某些情况下,一个host需要link多个模板。这么做显得比较麻烦,很容易忘记到底要link哪些模板,我想link一个模板就达成这个目标,行不行?然没问题,zabbix模板内嵌就是这么做的。实际上模板内嵌在《zabbix创建模板》一文就提到了,简单的说就是:模板link多个模板,这便是内嵌。

zabbix模板内嵌步骤

configuration(配置)– Templates(模板),点击你的目标模板,切换到linked templates选项,在文本框里面搜索你需要的模板,然后点击Add,如下:

[图片]

zabbix内嵌

说明下两个参数

Unlink and clear:移除模板,并且移除所有hosts上的实例(什么是实体不用我说了吧?前面章节有提过)。比如之前host有使用这个模板,那么从这个模板来的实体全部被移除掉。

Unlink:仅仅是移除模板,实体依旧保留在host上。

Zabbix 3-11. MySQL 監視テンプレートの設定

https://blog.apar.jp/zabbix/1669/

[图片]

データベース管理システムの MySQL が正常に起動していることを監視するためのテンプレートを作成します。LAMP環境で構築されているWEBサイトの MySQLデータベースには、一般的にユーザ情報やブログ記事などが保存されていますので、MySQL が起動していないとWEBサイトを表示することができません。MySQL の死活監視は3306番ポートにTCP接続ができることにより確認します。また、MySQL への同時接続数(スレッド数)と、データベースからの読み出しに時間がかかったスロークエリ数の監視設定も行います。

[ZabbixでLAMPサーバを監視設定メモ] もくじへ移動 サーバ構成図

>>次のページ 3-12. Memcached 監視テンプレートの設定

<<前のページ 3-10. Apache(HTTP/HTTPS)監視テンプレートの設定

MySQL のスレッド数やスロークエリ数は mysqladmin コマンドで確認できます。Zabbixからの監視もこの mysqladmin コマンドの出力結果をユーザーパラメータという仕組みを使って取得します。

1

2

3$ mysqladmin status -u root -p

Enter password: 

Uptime: 4480003 Threads: 19 Questions: 492747 Slow queries: 0 Opens: 817 Flush tables: 1 Open tables: 137 Queries per second avg: 0.109

上の出力ではスレッド数(Threads)は19、スロークエリ数(Slow queries)は0となっていますね。

MySQLの参考書籍

[图片]

[图片]

MySQLの詳細な設定方法や運用ノウハウ、トラブル対応までこれ一冊で網羅されています。メンテンンス系コマンドについても詳細に解説されているので、MySQLの監視項目を検討するのにも役立ちます。

テンプレートの作成

[設定]→[テンプレート]→[テンプレートの作成]をクリックします。

[图片]

[テンプレート]タブを選択 下記を入力し「追加」をクリックすればテンプレートが作成されます。

テンプレート名:A_Template_App_MySQL グループ:A_Templates グループを作成する

[图片]

[图片]

アプリケーションの作成

[設定]→[テンプレート] 「A_Template_App_MySQL」行の「アプリケーション」をクリックします。

[图片]

「アプリケーションの作成」をクリックします。

[图片]

名前に「mysql」を入力し「追加」をクリックすればアプリケーションが作成されます。

[图片]

ポート監視アイテムの作成

[設定]→[テンプレート] 「A_Template_App_MySQL」行の「アイテム」をクリックします。

[图片]

「アイテムの作成」をクリックします。

[图片]

下記を設定し「追加」をクリックすればアイテムが作成されます。

[图片]

—(設定箇所)—————————

名前:2020_mysql ポート監視

タイプ:シンプルチェック

キー:net.tcp.service[tcp,,3306]

更新間隔(秒):60

値のマッピングの使用:Service state(0 ⇒ Down, 1 ⇒ Up と表示されます)

アプリケーション:mysql

——————————

アイテムキー net.tcp.service のパラメータ

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

service – ssh、 ntp、ldap、smtp、ftp、http、pop、nntp、imap、tcp、https、telnetの何れか1つ

ip – Zabbixのホストの定義のIPアドレス

port – ポート番号(デフォルトでは標準のサービスポート番号が使用されます)

詳細は公式マニュアル 5 シンプルチェック | Zabbix Documentaion 2.2 をご参照ください。

MySQLのスレッド数とスロークエリ数の監視アイテムの作成

MySQLの状態を監視するアイテムキーはありませんので、監視される側のサーバのZabbixエージェントの設定ファイルにユーザーパラメータとして登録します。

ユーザーパラメータは Linuxコマンドなどの出力結果を、オリジナルのアイテムキーとして定義できるとても便利なしくみです。登録するコマンドは自分で作ったシェルスクリプトなどでも構いませんので、ほぼどんな項目でもアイテムキーとして定義することができます。

以下の設定は監視される側のLAMPサーバに行います。

[图片]

MySQL スロークエリログの有効化

MySQLの設定ファイル [mysqld] セクションに下記を追加します。スロークエリログファイルの場所はご自分の環境にあわせて指定してください。

sudo vi /etc/my.cnf

1

2

3

4

5

6

7

8

9

10[mysqld]

—(下記を追加)—————————

# スロークエリログの有効化

slow_query_log=1

# 何秒以上かかったクエリをスロークエリログへ記録するかを指定

long_query_time=1.0

# スロークエリログファイルの指定

slow_query_log_file=/var/log/mysql/slow_query.log

・設定が終わったらMySQLを再起動します。

sudo service mysqld restart

MySQL 監視用ユーザの作成

MySQLの監視用ユーザを作成します。ここで作成したユーザとパスワードを使って、ユーザーパラメータ内で mysqladmin コマンドを実行します。

1

2$ mysql -uroot -p

grant process on *.* to zabbixagent@localhost identified by '<パスワード>';

作成したユーザで mysqladmin コマンドを実行できるかを確認します。

1

2

3$ mysqladmin status -u zabbixagent -p

Enter password:<パスワード>

Uptime: 312 Threads: 1 Questions: 8 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.025

ユーザーパラメータの登録

Zabbixエージェントの設定ファイルにMySQLの状態を監視するユーザーパラメータ(UserParameter)を追加します。

sudo vi /etc/zabbix/zabbix_agentd.conf

Shell

1

2

3

4

5

6

7

8

9

10

11

12—(下記を変更)—————————

Include=/etc/zabbix/zabbix_agentd.d/

 ↓

# Include=/etc/zabbix/zabbix_agentd.d/

—(下記を最終行に追加)—————————

# MySQL:アクティブスレッド (クライアント) の数

UserParameter=mysql.threads,HOME=/var/lib/zabbix /usr/bin/mysqladmin -u zabbixagent status|cut -f3 -d":"|cut -f1 -d"Q"

# MySQL:スロークエリの累積数(long_query_time 秒よりも時間を要したクエリー)

UserParameter=mysql.slowqueries,HOME=/var/lib/zabbix /usr/bin/mysqladmin -u zabbixagent status|cut -f5 -d":"|cut -f1 -d"O"

・zabbixユーザーのホームディレクトリ作成

mkdir /var/lib/zabbix

chmod 700 /var/lib/zabbix

chown zabbix:zabbix /var/lib/zabbix

・MySQLの監視用ユーザのパスワードファイルを作成

vi /var/lib/zabbix/.my.cnf

Shell

1

2

3

4—(下記を追加)—————————

[mysqladmin]

user=zabbixagent

password="<パスワード>"

※ <パスワード> はクオートしておくことを、オススメします。

・パーミッションの設定(パスワードを書いてあるためzabbixユーザー以外は読み書き禁止にする)

chown zabbix:zabbix /var/lib/zabbix/.my.cnf

chmod 600 /var/lib/zabbix/.my.cnf

・Zabbixエージェントを再起動します。

sudo service zabbix-agent restart

動作確認

Zabbixサーバ上で zabbix_get コマンドを実行して動作確認をします。ユーザーパラメータで指定したコマンドと同じ出力結果が返ってくればOKです。

1

2

3

4

5

6$ zabbix_get -s 172.16.1.20 -p 10050 -k mysql.threads

1

$ zabbix_get -s 172.16.1.20 -p 10050 -k mysql.slowqueries

0

ユーザーパラメータの書式

ユーザーパラメータの書式は「UserParameter=<アイテムキー名>,<実行するコマンド>」になります。実行するコマンドはフルパスで指定するのがよいでしょう。

例えば今回設定したMySQLアクティブスレッドのユーザーパラメータは、Zabbixサーバで「mysql.threads」アイテムキーを実行すると、監視対象サーバ上で「mysqladmin -u zabbixagent status|cut -f3 -d":"|cut -f1 -d"Q"」コマンドが実行され出力結果をZabbixサーバに返します。

詳細は公式マニュアル 4 ユーザーパラメータ | Zabbix Documentation 2.2 をご参照ください。

アイテムの作成

[設定]→[テンプレート] 「A_Template_App_MySQL」行の「アイテム」をクリックします。

[图片]

「アイテムの作成」をクリックします。

[图片]

下記を設定し「追加」をクリックすればMySQLスレッド数のアイテムが作成されます。

[图片]

—(設定箇所)—————————

名前:3010_mysqld スレッド数

キー:mysql.threads

更新間隔(秒):60

アプリケーション:mysql

——————————

同様にMySQスロークエリ数のアイテムを作成します。スロークエリ数はMySQLを起動してからの累積数になりますので、保存時の計算を「差分」にしておきます。

—(設定箇所)—————————

名前:3012_mysqld スロークエリ数

キー:mysql.slowqueries

更新間隔(秒):60

保存時の計算:差分

アプリケーション:mysql

——————————

トリガーの作成

MySQLが起動していない場合は通知するようにトリガーを設定します。

[設定]→[テンプレート] 「A_Template_App_MySQL」行の「トリガー」をクリックします。

[图片]

「トリガーの作成」をクリックします。

[图片]

下記を設定し「追加」をクリックすればトリガーが作成されます。

[图片]

—(設定箇所)—————————

名前:{HOST.NAME} mysql

条件式:{A_Template_App_MySQL:net.tcp.service[tcp,,3306].last()}=0

深刻度:致命的な障害

——————————

条件式末尾の「0」は MySQL が起動していないことを示します。

トリガーの名前にはマクロが使用できます。上の設定 {HOST.NAME} はホストの表示名がトリガー名に表示されます。

条件式は、{<テンプレート名>:<アイテムキー>.<トリガー関数>}=<値> の形式です。手入力してもかまいませんが、なかなか複雑な書式ですので、条件式の「追加」ボタンをクリックして対象のアイテムの選択と関数を選択、Nにしきい値を入力して「挿入」ボタンをクリックすれば条件式を生成してくれます。

[图片]

▽ サポートされているトリガー関数 | Zabbix Documentaion 2.2

https://www.zabbix.com/documentation/2.2/jp/manual/appendix/triggers/functions

グラフの作成

[設定]→[テンプレート] 「A_Template_App_MySQL」行の「グラフ」をクリックします。

[图片]

「グラフの作成」をクリックします。

[图片]

「グラフ」タブを選択し、アイテムの「追加」をクリックします。

[图片]

グラフに表示したいアイテムを選択し「選択」をクリックします。

[图片]

下記を設定してアイテムが追加されていることを確認し「追加」をクリックすれば mysqld スレッド数のグラフが作成されます。

[图片]

—(設定箇所)—————————

名前:mysqld スレッド数

アイテム:A_Template_App_MySQL: 3010_mysqld スレッド数

——————————

同様に MySQスロークエリ数のグラフも作成します。

—(設定箇所)—————————

名前:mysqld スロークエリ数

アイテム:A_Template_App_MySQL: 3012_mysqld スロークエリ数

——————————

スクリーンの作成

作成したグラフをスクリーンに登録します。

[設定]→[テンプレート] 「A_Template_App_MySQL」行の「スクリーン」をクリックします。

[图片]

「スクリーンの作成」をクリックします。

[图片]

下記を設定し「追加」をクリックします。

[图片]

—(設定箇所)—————————

名前:mysql

列:2

行:1

—————————-

作成したスクリーンの名前「mysql」をクリックします。

[图片]

スクリーンセル内にある「変更」をクリックします。

[图片]

スクリーンセルの設定が開きますので、グラフ名の「選択」をクリックします。

[图片]

グラフの名前「mysqld スレッド数」をクリックします。

[图片]

グラフ名が「A_Template_App_MySQL: mysqld スレッド数」になっていることを確認して「追加」をクリックすれば登録終了です。他の値は特に変更する必要はありませんがお好みで調整してください。

[图片]

同様に下記の mysqld スロークエリ数のグラフも登録します。

完成したスクリーンは下のようになります。

[图片]

最後に作成した監視テンプレートの動作確認をして作業完了です。

>>次のページ 3-12. Memcached 監視テンプレートの設定

<<前のページ 3-10. Apache(HTTP/HTTPS)監視テンプレートの設定

Zabbix自带模板监控Windows上的MySQL数据库

http://phenixjiang.blog.51cto.com/4820059/1747884

 玩Cacti久了以后,越来越觉得Cacti的报警功能比较弱。最近开始玩Zabbix,觉得各项功能都很强大,就是画出来的图实在是丑了点。。。。。。

    言归正传,安装好zabbix后各种得瑟,设置好模板后一下午就把以前cacti的监控对象全搞定了。可是吧,这个时候想起角落里有两台Windows2008还在跑业务,没办法啊,也得监控起来啊。(我本人一直讨厌用windows做服务器)当做到监控MySQL的时候,傻了。所有的items状态全部都是not support。google上找了半天也没什么头绪,最后还是在zabbix的论坛里,一个老外给出了一个解决办法。

    要想在Windows上取得MySQL的状态数据,可以用vbs脚本运行mysql命令,

    第一步,脚本下载:http://down.51cto.com/data/2190508下载好后,放到一个文件夹中,比如d:\Zabbix\Scripts

    第二步,修改windows上的zabbix_agentd.comf文件,设置key值。在UserParameter下面加两句;

UserParameter=mysql.status[*], cscript /nologo d:\Zabbix\Scripts\MySQL_Ext-Status_Script.vbs $1

UserParameter=mysql.ping, cscript /nologo d:\Zabbix\Scripts\MySql_Ping.vbs

    第三步,重启zabbix_agentd。到zabbix_server上把mysql模板应用到主机上,查看items状态。

    然后我就看到这样:

[图片]

    一个取状态的脚本没问题了,还有个mysql ping的居然没成功。试试单独运行下脚本

[图片]

    可以得到结果啊。。。。。为毛zabbix上就不行呢?哪位好心的同学可以告诉我啊!!!

———————————————————————————–

又检查了一遍配置,原来是我自己把vbs脚本名写到agent配置文件的时候写错了。。。。。细节决定成败啊!!!

zabbix 监控windows下tomcat

http://blog.csdn.net/jhfsdfs/article/details/65629174

zabbix 监控tomcat主要使用的是zabbix的java gateway。

  1. 安装zabbix gateway。使用ubuntu,可以直接使用命令安装java gateway。

apt-get install zabbix-java-gateway

      ○ 1

修改zabbix_server的配置文件,告知zabbix server java gateway在哪个端口,并且设置poller的个数。

JavaGateway=安装ip

JavaGatewayPort=10052 #监听端口

StartJavaPollers=5

      ○ 1

      ○ 2

      ○ 3

开启java gateway,重启zabbix server

service zabbix-java-gateway start

service zabbix-server restart

      ○ 1

      ○ 2

  2. 设置tomcat,开启jmx。

在tomcat/bin下找到catalina.bat文件,在set "CURRENT_DIR=%cd%"下加上

set JAVA_OPTS=-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

      ○ 1

  3. 下载支持jmx 的jar包catalina-jmx-remote.jar,把他放到tocmat目录下的lib包中。

  4. 配置主机

[图片]

jmx的端口一定要与在catalina.bat下配置的jmxremote.port一样。

链接Template JMX Generic和Template JMX Tomcat这两个模板。