Centos7 LDAP クラスターのクラスター監視

LDAPクラスターの監視

LDAP クラスターはデュアルマスター モードとマスター/スレーブ モードをサポートしており、現在はマスター/スレーブ モードを使用しています。

モニタリング指標:

  • マスタースレーブサービスの存続
  • マスタ・スレーブ同期監視

モニタリングのアイデア

  • zabbix はスクリプトまたはサービスのステータス、マスター/スレーブのステータスを監視します
  • LDAP の動作ステータスを取得するための prometheus オープン ソース エクスポート [サードパーティのクライアント ソフトウェア、多くの監視項目があるが、十分に合理化されていない]

モニタリングの実現

監視スクリプトを使用して主従LDAPサービスの生存情報と主従同期の監視情報をzabbixに渡し、主従サービスの生存と同期監視を実現します。
参考: https://github.com/MrCirca/OpenLDAP-Cluster-Zabbix

サービス生存監視の実装

原理

ldap のサービスポートはポート 389 で、通常業務では ldap コマンドを使用してマスターホストとスレーブホストにリモートアクセスでき、アクセスが正常であればサービスは正常と判断されます。

## slave实例上面访问
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -s base -b "$BASE_DN" contextCSN 2> /dev/null
echo $?
##若slave实例异常,则返回非0

## slave实例访问master的接口
ldapsearch -Q -LLL -x -H ldap://"$PROVIDER_URI" -Y EXTERNAL -H ldapi:/// -s base -b "$BASE_DN" contextCSN 2> /dev/null
echo $?
##若master实例异常,则返回非0

マスタ・スレーブ同期監視の実現

原理

LDAPはマスタ・スレーブ・レプリケーション後のcontextCSN値となり、この値は更新されるたびに再計算されます。マスタ・インスタンスとスレーブ・インスタンスの値が同じ場合、マスタ・スレーブ同期が完了したと判断されます。は普通

# 获取slave实例的contextCSN值
[root@hn-nameserver02-2-205 ~]# ldapsearch -LLL -x -s base -b "dc=local,dc=cn" contextCSN 
dn: dc=local,dc=cn
contextCSN: 20190514075500.340075Z#000000#000#000000

# 获取master实例的contextCSN值
[root@hn-nameserver02-2-205 ~]# ldapsearch -LLL -x -H ldap://172.16.2.204 -s base -b "dc=local,dc=cn" contextCSN 
dn: dc=local,dc=cn
contextCSN: 20190514075500.340075Z#000000#000#000000
contextCSN: 20190514075500.340075Z#000000#000#000000

監視スクリプト情報:

ステータスチェックスクリプト

[root@hn-nameserver02-2-205 ~]# cat /etc/zabbix/external_scripts/ldap_check_status.sh 
#!/bin/bash
BASE_DN=$(ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config 2> /dev/null | grep "olcSuffix:" | cut -d " " -f 2)
PROVIDER_URI=$1
LDAP_CSN_CONSUMER_COMMAND=$(ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -s base -b "$BASE_DN" contextCSN 2> /dev/null)
LDAP_CSN_CONSUMER_RC=$?
LDAP_CSN_PROVIDER_COMMAND=$(ldapsearch -LLL -x -H ldap://"$PROVIDER_URI" -s base -b "$BASE_DN" contextCSN 2> /dev/null)
LDAP_CSN_PROVIDER_RC=$?
PROVIDER_CSN=$(echo -e $LDAP_CSN_PROVIDER_COMMAND | grep contextCSN | cut -d " " -f 2)
CONSUMER_CSN=$(echo -e $LDAP_CSN_CONSUMER_COMMAND | grep contextCSN | cut -d " " -f 2)

if [[ "$LDAP_CSN_CONSUMER_RC" != "0" ]] && [[ "$LDAP_CSN_PROVIDER_RC" == "0" ]]; then
 	echo "1"

elif [[ "$LDAP_CSN_PROVIDER_RC" != "0" ]] && [[ "$LDAP_CSN_CONSUMER_RC" == "0" ]]; then
	echo "2"

elif [[ "$LDAP_CSN_PROVIDER_RC" != "0" ]] && [[ "$LDAP_CSN_CONSUMER_RC" != "0"  ]]; then
	echo "3"

elif [[ "$PROVIDER_CSN" == "$CONSUMER_CSN" ]]; then
	echo "4"
else
	echo "100"
fi

zabbix カスタム監視項目

[root@hn-nameserver02-2-205 ~]# tail -n1 /etc/zabbix/zabbix_agentd.conf 
UserParameter=ldap.clusterstatus[*],/etc/zabbix/external_scripts/ldap_check_status.sh $1

監視指示

  1. スレーブノードで監視を実行し、監視項目にマスターの監視IPを実行します
  2. ステータス検出スクリプトが 1 を返した場合、スレーブ インスタンスが利用できないことを意味します
  3. ステータス検出スクリプトが 2 を返した場合、マスター インスタンスが使用できないことを意味します
  4. ステータス検出スクリプトが 3 を返した場合、マスターとスレーブが同期していないことを意味します。

PS: zabbix テンプレートをインポートし、マスター インスタンスの値を変更することをお勧めします。

おすすめ

転載: blog.csdn.net/weixin_43423965/article/details/105215684