zabbix 자동 검색 및 자동 등록, 사용자 정의 모니터

첫째, 자동 검색 및 자동 등록
위의 설명에서, 우리는 간단하지만 방법은 수동으로 호스트를 추가 할 보여,하지만 당신은 호스트 매우 긴 시간을 추가 할 때, 그것은 매우 복잡하게되므로,이 방법, 호스트가이 크게 운영 및 유지 보수의 효율성을 향상시킬 것, 그것을 달성하기 위해 대량을 추가 할 수 있습니다, 답이 yes, zabbix 자동 등록 및 자동 검색 기능에 의해 제공됩니다, 당신은 대량 추가의 호스트를 얻을 수 있습니다.

zabbix 결과 즉, 세 가지 유형을 포함한다 :

 자동 네트워크 검색 (검색 네트워크)
 활성 클라이언트가 자동으로 등록 (활성 에이전트 자동 등록)
 낮은 수준의 발견 (낮은 수준의 발견)

다음은 연속적으로 소개되었다.

1.1 zabbix 자동 네트워크 검색
zabbix 아주 강력하고 유연성 자동 네트워크 검색을 제공한다. 네트워크 검색하면 zabbix이, 관리를 단순화, 배포를 가속화 과도한 관리를위한 필요없이 변화하는 환경에서 zabbix를 사용하여 얻을 수 있습니다

다음과 같은 정보를 기반으로 zabbix의 네트워크 검색 :

 IP 세그먼트가 자동으로 검색
 가능한 외부 서비스 (FTP, SSH, 웹, POP3 , IMAP, TCP 등)
정보 는 zabbix 고객에서받은
정보를 는 SNMP 클라이언트에서 수신

(1)의 원칙 자동차는 발견

발견 및 운영 (행동) : 네트워크 검색은 두 단계로 구성되어 있습니다.
zabbix는 주기적으로 IP 네트워크 검색 섹션에 정의 된 규칙을 검색합니다. 확인 빈도 각 규칙에 따라 자동으로 구성. 각 규칙은 IP 세그먼트를 확인하기 위해 지정된 서비스의 집합을 정의합니다.
액션 관련 설정의 호스트의 발견의 과정, 일반적으로 사용되는 작업을 추가하거나 호스트를 제거, 호스트를 활성화 또는 비활성화 할 수 있고, 호스트가 그룹에 추가되고, 우리는 등 그 통지 등을 발견했다.

(2) 네트워크 검색 규칙을 구성 할 수

웹 인터페이스의 "구성"을 클릭 한 후 검색 규칙을 만들려면 "자동 검색"을 선택합니다. 아래 그림과 같이 :

이 인터페이스에서 기본 세트는 여기에서 설정된 "IP 범위"전체 (213) 섹션 (254) IP에 172.16.213.1이다, 범위를 설정 한 후, zabbix는 자동으로 검사 대상에 기초하여 상기 전체 IP 세그먼트를 검사 음, 당신은, 우리가 할 수있는 "zabbix 클라이언트"를 선택, 많은 종류가 있다는 것을 확인로 나타납니다이 "새로운"버튼 "체크 유형"옵션에서 옵션을 "확인"을 클릭, 옵션을 "확인"구성해야 다음 또한 다음의 "포트 범위"와 "키"두 가지 옵션을 입력 에이전트에 기본 포트를 10050 포트를 입력해야 쉽게 여기에 입력 할 수있는 기본 키 zabbix를 입력 할 수있는 키 시스템 "입니다. UNAME 지금 만든 이러한 규칙 추가 "버튼, 자동 검색", 다음을 클릭합니다. "

요약하면,이 필드는 규칙에서 발견되는 의미 : zabbix 172.16.213.1가 자동으로 그것을 얻을 수 있는지 확인하기 위해 "system.uname"키 다음의 IP 포트 10050에 연결 차례로,이 IP (254)의 모든 세그먼트를 검색합니다 그들은 데이터를 얻을 수 있다면, 다음, 자동 검색 규칙에 추가 된 호스트를했습니다.

자동 검색이 완료 규칙을 추가 한 후, 당신은, 다음 버튼 "활동 만들기"를 클릭, 자동 검색 작업을 추가 웹 인터페이스의 "구성"을 클릭 한 후 이벤트 소스의 오른쪽 상단 "자동 검색"을 선택에서 "조치"를 선택할 수 있습니다 다음과 같이 자동 검색 작업을 만들 수 있습니다 :

자동 검색 작업을 구성 인터페이스 어려운 조건이 자동으로 설정 발견에서, "새로운 트리거 조건"옵션에서 선택할 수 있습니다 트리거 조건을 추가 할 수있는 기본 "및 / 또는 (기본값)"버튼을 선택 "계산" 트리거 조건은 트리거 조건은 매우, 여기 당신은 위의 "조건"옵션을 넣어 선택한 트리거 조건을 추가하려면 "추가"를 클릭 완료되면 선택, 4 개의 빨간색 상자를 선택할 수 있습니다.

자동 검색의 조건을 설정하는 것뿐만 아니라, 또한 당신은 자동 검색의 작동 모드를 설정 제공 한 다음 화면도에 "작업"위의 링크를 클릭해야합니다

此界面是设置自动发现主机后,要执行哪些操作,这里重点是设置操作的细节,点击左下角的“新的”按钮可以设置多个操作动作,一般情况下设置四个即可,也就是发现主机后,首选自动将这个主机添加到zabbix web上来,然后将“Linux servers”主机组和“Template OS Linux”模板也自动链接到此主机下。最后在zabbix web中启用这个主机。

经过三个步骤的操作,zabbix的自动发现配置就完成了,稍等片刻,就会有符合条件的主机自动添加到zabbix web中来。

1.2、主动客户端自动注册
自动注册(agent auto-registration)功能主要用于Agent主动且自动向Server注册。与前面的Network discovery具有同样的功能,但是这个功能更适用于特定的环境,当存在一个条件未知(如agent端的IP地址段、agent端的操作系统版本等信息)时,Agent去请求Server仍然可以实现主机自动添加到zabbix web中的功能。比如云环境下的监控,云环境中,IP分配就是随机的,这个功能就可以很好的解决类似的问题。

配置主动客户端自动注册有两个步骤,分别是:

 在客户端配置文件中设置参数
 在zabbix web中配置一个动作(action)

(1)、客户端修改配置文件

打开客户端配置文件zabbix_agentd.conf,修改如下配置:

Server=172.16.213.231 ServerActive=172.16.213.231 #这里是主动模式下zabbix服务器的地址 Hostname=elk_172.16.213.71 HostMetadata=linux zabbix.alibaba #这里设置了两个元数据,一个是告诉自己是linux服务器,另一个就是写一个通用的带有公司标识的字符串。

自动注册请求发生在每次客户端发送一个刷新主动检查请求到服务器时。请求的延时在客户端中配置文件zabbix_agentd.conf的RefreshActiveChecks 参数中指定。第一次请求将在客户端重启之后立即发送。

(2)、配置网络自动注册规则

点击web界面的“配置”,然后选择“动作”,在右上角事件源选择“自动注册”,接着点击“创建动作”按钮,即可创建一个自动注册的动作,如下图所示:

在自动注册动作配置界面中,难点是设置自动注册的条件,“计算方式”选择默认的“与/或(默认)”即可,要添加触发条件,可以在“新的触发条件”选项下选择触发条件,触发条件有非常多,这里选择红框内的两个即可,这两个条件其实都是在zabbix agent端手工配置上去的,选择完成后,点击“添加”就把选择的触发条件添加到了上面的“条件”选项中。

除了自动注册条件的设置,还需要设置自动注册后操作的方式,点击上图中的“操作”链接,进入下图设置界面:

此界面是设置自动注册主机后,要执行哪些操作,这里重点是设置操作的细节,点击左下角的“新的”按钮可以设置多个操作动作,一般情况下设置四个即可,也就是发现主机后,首选自动将这个主机添加到zabbix web上来,然后将“Discovered hosts”主机组和“Template OS Linux”模板也自动链接到此主机下。最后在zabbix web中启用这个主机。

经过两个步骤的操作,zabbix的自动注册配置就完成了,稍等片刻,就会有符合条件的主机自动添加到zabbix web中来。

1.3、低级别发现Low-level discovery(LLD)
在对主机的监控中,可能出现这样的情况,例如对某主机网卡eth0进行监控,可以指定需要监控的网卡是eth0,而将网卡作为一个通用监控项时,根据主机操作系统的不同,网卡的名称也不完全相同,有些操作系统的网卡名称是eth开头的,而有些网卡名称是em开头的,还有些网卡是enps0开头的,遇到这种情况,如果分别针对不同的网卡名设置不同的监控项,那就太繁琐了,此时使用zabbix的低级发现功能就可以解决这个问题。

在Zabbix中,支持三种现成的类型的数据项发现,分别是:

 文件系统发现
 网络接口发现
 SNMP OID发现
 CPU核和状态

下面是zabbix自带的LLD key,

 vfs.fs.discovery #适用于zabbix agent监控方式
 snmp.discovery #SNMP agent监控方式
 net.if.discovery #适用于zabbix agent监控方式
 system.cpu.discovery #适用于zabbix agent监控方式

可以用zabbix-get来查看key获取的数据,对于snmp,不能通过zabbix-get来验证,只能在web页面中进行配置使用。

下面是zabbix-get的一个例子:

[root@localhost ~]#/usr/local/zabbix/bin/zabbix_get  -s 172.16.213.232 -k net.if.discovery
{"data":[{"{#IFNAME}":"eth0"},{"{#IFNAME}":"lo"},{"{#IFNAME}":"virbr0-nic"},{"{#IFNAME}":"virbr0"}]}

其中,{#IFNAME}就是一个宏变量,会返回系统中所有网卡的名字。宏变量可以定义在主机、模板以及全局,宏变量都是大写的。使用宏变量,可以使zabbix功能更加强大。

在自动发现中使用zabbix自带的宏,固定的语法格式为:

{#MACRO}

zabbix还支持用户自定义的宏,这些自定义的宏也有特定的语法:

{$MACRO}

在LLD中,常用的内置宏有{#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}等。其中,{#FSNAME}表示文件系统名称,{#FSTYPE}表示文件系统类型,{#IFNAME}表示网卡名称,{#SNMPINDEX}会获取OID中最后一个值;例如:

# snmpwalk -v 2c -c public 10.10.10.109 1.3.6.1.4.1.674.10892.5.5.1.20.130.4.1.2  
SNMPv2-SMI::enterprises.674.10892.5.5.1.20.130.4.1.2.1 = STRING: "Physical Disk 0:1:0" SNMPv2-SMI::enterprises.674.10892.5.5.1.20.130.4.1.2.2 = STRING: "Physical Disk 0:1:1" SNMPv2-SMI::enterprises.674.10892.5.5.1.20.130.4.1.2.3 = STRING: "Physical Disk 0:1:2"

那么, {#SNMPINDEX}, {#SNMPVALUE}获取到的值为:

{#SNMPINDEX} -> 1,{#SNMPVALUE} -> "Physical Disk 0:1:0" {#SNMPINDEX} -> 2,{#SNMPVALUE} -> "Physical Disk 0:1:1" {#SNMPINDEX} -> 3,{#SNMPVALUE} -> "Physical Disk 0:1:2"

宏的级别有多种:其优先级由高到低顺序如下:

 主机级别的宏优先级最高
 第一级模板中的宏
 第二级模板中的宏
 全局级别的宏

因此,zabbix查找宏的顺序为:首选查找主机级别的宏,如果在主机级别不存在宏设置,那么zabbix就会去模板中看是否设置有宏。如果模板中也没有,将会查找使用全局的宏。若是在各级别都没找到宏,将不使用宏。

二、zabbix自定义监控项
有时候当我们监控的项目在zabbix预定义的key中没有定义时,这时候我们可以通过编写zabbix的用户参数的方法来监控我们要求的项目item。形象一点说zabbix代理端配置文件中的User parameters就相当于通过脚本获取要监控的值,然后把相关的脚本或者命令写入到配置文件中的User parameter中,然后zabbix server读取配置文件中的返回值通过处理前端的方式返回给用户。

2.1、zabbix agent端开启Userparameter指令
在zabbix_agent.conf文件中开启如下参数:

UnsafeUserParameters=1

启用agent端自定义item功能,设置此参数为1后,就可以使用UserParameter指令了。

UserParameter用于自定义itme。语法格式为:

UserParameter=<key>,<command>

其中:

UserParameter为关键字
key为用户自定义key名字可以随便起
为我们要运行的命令或者脚本。

一个简单的例子:

UserParameter=ping,echo 1

代理程序程序将会永远的返回1当我们在服务器端添加item的key为 ping时候。

稍微复杂的例子:

UserParameter=mysql.ping, /usr/local/mysql/bin/mysqladmin ping|grep -c alive

当我们执行mysqladmin -uroot ping命令的时候如果mysq存活要返回mysqld is alive,我们通过grep–c来计算mysqld is alive的个数,如果mysql存活着,则个数为1,如果不存活很,明显mysqld is alive的个数为0,通过这种方法我们可以来判断mysql的存活状态。

当我们在服务器端添加item的key为mysql.ping时候,对于zabbix代理程序,如果mysql存活,则状态将返回1,否则,状态将返回0。

2.2、让key接受参数
让key也接受参数的方法使item添加时更具备了灵活性,例如,系统预定义key :

vm.memory.size[<mode>]

其中的mode模式就是用户要接受的参数,当我们填写为free时则返回的为内存的剩余大小,如果我们填入的为userd时返回的是内存已经使用的大小。

相关语法如下:

UserParameter=key[*],command

其中,Key的值在主机系统中必须是唯一的,其中*代表命令中接受的参数,command表示命令,也就是客户端系统中可执行的命令

看下面一个例子:

UserParameter=ping[*],echo $1

如果执行ping[0],那么将一直返回 ‘0’,如果执行ping[aaa],将一直返回 ‘aaa’

三、zabbix的主动模式与被动模式
默认情况下,zabbix server会直接去每个agent上抓取数据,这对于zabbix agent来说,是被动模式,也是默认的一种获取数据的方式,但是,当zabbix server监控主机数量过多的时候,由Zabbix Server端去抓取agent上的数据,Zabbix server会出现严重的性能问题,主要表现如下:

 Web操作很卡,容易出现502错误
 监控图形中图层断裂
 监控告警不及时

所以下面主要从两个方面进行优化,分别是:

 通过部署多个zabbix Proxy模式做分布式监控
 调整Zabbix Agentd为主动模式

Zabbix Agentd主动模式的含义是Agentd端主动汇报自己收集到的数据给Zabbix Server,这样,Zabbix Server就会空闲很多,下面介绍下如何开启agent的主动模式。

3.1、zabbix Agentd配置调整
修改zabbix_agentd.conf配置文件,主要是如下三个参数:

ServerActive=172.16.213.231 Hostname=172.16.213.232 StartAgents=1

ServerActive, 그래서 zabbix 서버, StartAgents 기본값은 3가, 수동 모드를 해제 할 수있는 대응 관계를 찾기 위해 데이터를 수신, 호스트 이름이 호스트 협회의 끝과 zabbix 웹 호스트 이름에 추가해야합니다 보낼 Agentd 수집되는 데이터를 지정 포트의 에이전트 측 수동 모드와의 호환성을 위해, 여기 10,050 폐쇄 된 동작 모드를 닫은 후, 0으로 설정 StartAgents 0으로 설정하지 StartAgents 않았다 개시 활성 모드를 사용하는 경우, 그것은 0으로 설정 StartAgents 추천 닫혀 수동 모드.

3.2 Zabbix 서버 측 구성을 조정
온 활성제 단말이 데이터 패턴을 전송하는 경우, 두 개의 매개 변수는 최종 성능 보장 zabbix 서버는 다음과 같이 수정 될 필요가있다.

StartPollers=10  #把这个zabbix Server主动收集数据进程减少一些。
StartTrappers=200 #把这个负责处理Agentd推送过来数据的进程开大一些。

3.3 템플릿을 조정
데이터 수집 모드가 변경 되었기 때문에, 따라서 또한 원래 "zabbix 클라이언트"로에서 모니터링되는 모든 유형의 항목을 모니터링해야 "zabbix 클라이언트 (활성)."

이 세 단계로 동작 후, 상기 스위칭 동작에 있어야 수를 줄이고, 조정 후에는 zabbix 서버 부하에서 관찰 할 수 있고, 동작 모드가 완료되면, 서버는 카드 아니다 층은 ZABBIX 금되지 성능 문제가 해결됩니다.

추천

출처www.cnblogs.com/flytor/p/11440769.html