zabbix 포트 자동 검색 서비스 모니터링 튜토리얼

서문 :

1, 온라인 비즈니스 모니터링을 할 수백 haproxy 서비스의 수십를 사용하여 이러한 서비스 (haproxy 포트 모니터 TCP 연결, haproxy 서비스 모니터링 해당 포함).

2, "UserParameter"방식으로 내부 zabbix_agentd.conf의 일반적인 구성이 너무 복잡, 여기 (집계 된 데이터가 데이터를 수집하기 위해) 방식으로 테이블을 구축하는 데 사용할.

3, 데이터는 타사를 통해 데이터 처리를위한 스크립트를 만들 수 치료를받을하고 결과를 모니터링 표에 요약되어있다.

데이터 테이블을 만듭니다 (정보 서비스를 수집 haproxy)

  1. zabbix_DB에서 테이블을 만들기 : t_3party_server를

create table t_3party_server(
app varchar(64) NOT NULL,
server varchar(64) NOT NULL,
division varchar(64) NOT NULL,
node varchar(64) NOT NULL,
port varchar(64) NOT NULL,
remark int(10) unsigned NOT NULL,
PRIMARY KEY (app,server,division,node,port) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注释:
app          #这里写的是项目名称(MOBA项目)
server       #服务名称(haproxy服务)
division     #由于起了多个haproxy实例,名称也不一样,所以这里做了区分
node         #haproxy服务IP地址
port         #haproxy服务端口,多个实例端口不同  
remark       #备注作用(由于线上某些haproxy服务安装路径不一致,所以此处用来区分路径,也可以区分其他)
PRIMARY KEY (app,server,division,node,port)  #添加主键
  1. 테이블 구조보기를 마친 후

  1. 그런 다음 데이터 테이블 내부에 데이터를 삽입합니다 :

    insert into t_3party_server(app,server,division,node,port,remark) values('MM','haproxy','haproxy-login','192.168.32.128','30000','0');
  2. 최종 테이블 결과

생성 된 데이터의 테이블에 대한 모니터링을 수행

모니터링 스크립트 zabbix_server 아래에 배치 "/ INSTALL_PATH / zabbix_server / 주 / zabbix / externalscripts"

<?php
 
if ($_SERVER["argc"] != 2) {
        echo "Usage: " . $_SERVER["argv"][0] . " host\n";
        return;
}
 
$host = $_SERVER["argv"][1];
 
$mysqlconn = new mysqli("localhost", "root", "123", "zabbix", 3306);
if (mysqli_connect_errno()) {
        echo "fail to connect mysql: " . mysqli_connect_error() . "\n";
        return;
}
 
$result = $mysqlconn->query("SELECT * FROM t_3party_server WHERE node=\"" . $mysqlconn->real_escape_string($host) . "\"");
 
$hostvalue = array(
        "data" => array()
);
while ($row = $result->fetch_assoc()) {
        $app = $row["app"];
        $server = $row["server"];
        $division = $row["division"];
        $node = $row["node"];
        $port = $row["port"];
        $remark = $row["remark"];
 
        if ($remark == "/usr/local")
        {
            $hostvalue["data"][] = array(
                "{#APP}" => $app,
                "{#SERVER}" => $server,
                "{#DIVISION}" => $division,
                "{#PORT}" => $port,
                "{#PATH}" => "/usr/local/" . $division . "/sbin",
            );
 
             continue;
        }
 
        $server = substr($server, 0, 15);
 
        $hostvalue["data"][] = array(
                "{#APP}" => $app,
                "{#SERVER}" => $server,
                "{#DIVISION}" => $division,
                "{#PORT}" => $port,
                "{#PATH}" => "/data/app/" . $division . "/sbin",
                #"{#MFW_PATH}" => "/data/app/" . $division . "/" . ($division ? $division . "/" : "") . $server,
        );
}
 
echo json_encode($hostvalue);
echo "\n";

스크립트 생성 데이터 :

[root@localhost externalscripts]# ./haproxy_discovery.php 192.168.32.128
{"data":[{"{#APP}":"MM","{#SERVER}":"haproxy","{#DIVISION}":"haproxy-login","{#PORT}":"30000","{#PATH}":"\/data\/app\/haproxy-login\/sbin"}]}

JSON 형식으로 변환 :

{
    "data":[
        {
            "{#APP}":"MM",
            "{#SERVER}":"haproxy",
            "{#DIVISION}":"haproxy-login",
            "{#PORT}":"30000",
            "{#PATH}":"/data/app/haproxy-login/sbin"
        }
    ]
}

시스템에 구성 Haproxy 서비스

1, 구성 : zabbix_agentd.conf

#用来监控TCP连接数
UserParameter=haproxy.tcp.[*],/usr/sbin/ss -ant sport eq :"$1" | awk 'NR>1{++s[$$1]} END {for(k in s){print k,s[k]}}' |grep -w "ESTAB" |awk '{print $$2}'

配置完成后重启zabbix_agentd

zabbix에 모니터링 추가

> 자동 검색 규칙 - 템플릿 만들기

매크로 변수 정의 : 매크로 값이 도출된다 JSON

Item1:检查haproxy进程是否存在
Key:proc.num["{#SERVER}",,,"{#PATH}"]

Trigger1:对应Item1
{customize template:proc.num["{#SERVER}",,,"{#PATH}"].last()}<1

Item2:检查haproxy端口对应的TCP连接数   
Key:haproxy.tcp.[{#PORT}]

Trigger2:对应Item2
{Template moba server:haproxy.tcp.[{#PORT}].last()}>40000

haproxy 새로운 서비스가 모니터링 프로세스에 추가하면 다음과 같다

1、在zabbixDB上的t_3party_server表里添加数据:
INSERT INTO `zabbix`.`t_3party_server` (`app`, `server`, `division`, `node`, `port`, `remark`) VALUES ('MOBA', 'haproxy', 'haproxy', '10.111.152.15', '30032', '0');
  
2、在机器上添加配置参数:
vim /data/app/zabbix_agent/etc/zabbix_agentd.conf
#Haproxy
UserParameter=haproxy.tcp.[*],/usr/sbin/ss -ant sport eq :"$1" | awk 'NR>1{++s[$$1]} END {for(k in s){print k,s[k]}}' |grep -w "ESTAB" |awk '{print $$2}'

3、配置完毕后重启 zabbix_agentd
pkill zabbix_agentd
/data/app/zabbix_agent/sbin/zabbix_agentd
 
4、到zabbix上监控haproxy服务是否被监控

추천

출처www.cnblogs.com/qinyujie/p/11470232.html