Pacemaker Exporter 사용기

Pacemaker (이하 pcs) Exporter 를 사용해보고 실제 pcs cluster 를 어떻게 모니터링 하는지 확인해보자.

pcs exporter 설치

아래 명령을 통해 설치가 가능하다.

[root@c-node-4 ~]# wget
[root@c-node-4 ~]# gzip -d ha_cluster_exporter-amd64.gz
[root@c-node-4 ~]# chmod u+x ha_cluster_exporter-amd64

pcs cluster node 에 해당 exporter 를 설치한다.

pcs exporter option

pcs exporter 의 option 은 아래와 같다.

[root@c-node-4 ~]# ./ha_cluster_exporter-amd64 --help
usage: ha_cluster_exporter-amd64 [<flags>]
  -h, --help                    Show context-sensitive help (also try --help-long and --help-man).
                                Address to listen on for web interface and telemetry.
                                Path under which to expose metrics.
                                [EXPERIMENTAL] Path to configuration file that can enable TLS or authentication.
                                path to crm_mon executable
                                path to cibadmin executable
                                path to corosync-cfgtool executable
                                path to corosync-quorumtool executable
      --sbd-path=/usr/sbin/sbd  path to sbd executable
                                path to sbd configuration
                                path to drbdsetup executable
                                path to drbd splitbrain hooks temporary files
      --enable-timestamps       [DEPRECATED] server-side metric timestamping is discouraged by Prometheus best-practices and should be avoided
      --address=         [DEPRECATED] please use --web.listen-address or --web.config.file to use Prometheus Exporter Toolkit
      --port=9664               [DEPRECATED] please use --web.listen-address or --web.config.file to use Prometheus Exporter Toolkit
      --log-level=info          [DEPRECATED] please user log.level
      --log.level=info          Only log messages with the given severity or above. One of: [debug, info, warn, error]
      --log.format=logfmt       Output format of log messages. One of: [logfmt, json]
      --version                 Show application version.

run pcs exporter

default 설정으로 exporter 를 구동하면 아래와 같이 9664 port 로 metric 을 expose 한다.

[root@c-node-4 ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::9664                 :::*                    LISTEN      27528/./ha_cluster_     <<

아래와 같이 metric expose 를 확인 할 수 있다.

[root@c-node-4 ~]# curl localhost:9664/metrics
# HELP ha_cluster_corosync_member_votes How many votes each member node has contributed with to the current quorum
# TYPE ha_cluster_corosync_member_votes gauge
ha_cluster_corosync_member_votes{local="false",node="c-node-5",node_id="5"} 1
ha_cluster_corosync_member_votes{local="false",node="c-node-6",node_id="6"} 1
ha_cluster_corosync_member_votes{local="true",node="c-node-4",node_id="4"} 1
# HELP ha_cluster_corosync_quorate Whether or not the cluster is quorate
# TYPE ha_cluster_corosync_quorate gauge
ha_cluster_corosync_quorate 1

grafana dashboard

ClusterLabs 에서 제공하는 Grafana 기본 Dashboard 를 이용하여 pcs cluster monitoring 를 한다.

해당 Dashboard 는 에서 확인이 가능하며 Grafana 에서 아래와 같이 추가를 할 수 있다.

ClusterLabs 에서 제공한 Dashboard 는 Node-exporter metric 과 pcs-exporter metric 을 같이 사용한다.
Prometheus 에서 위와 같이 Target 을 설정한다.

- job_name: "pcs"
    - targets:
        - c-node-4:9664
        - c-node-5:9664
        - c-node-6:9664
        - c-node-4:9100
        - c-node-5:9100
        - c-node-6:9100

Label 이 Node-exporterpcs-exporter 하나로 관리 되야지 Dashboard 에서 확인이 가능하다.

Dashboard 설정이 완료되면 아래와 같이 Cluster 를 monitoring 할 수 있다.


Stop Node

Cluster node 한대를 stop 한다.

위와 같이 node 하나다 offline 된 것을 볼 수 있다.

Fail Resource

Cluster Resource 문제 감지에 대한 테스트를 위해 아래와 같이 강제로 VIP 를 제거한다.

[root@c-node-4 ~]# ip addr del dev eth0
[root@c-node-4 ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:2f:96:6f brd ff:ff:ff:ff:ff:ff
    inet brd scope global dynamic eth0

[root@c-node-4 ~]# pcs status
Cluster name: testcluster
Stack: corosync
Current DC: c-node-4 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
Last updated: Mon Aug  1 14:31:28 2022
Last change: Mon Aug  1 14:30:17 2022 by root via cibadmin on c-node-4
3 nodes configured
1 resource instance configured
Online: [ c-node-4 c-node-6 ]
OFFLINE: [ c-node-5 ]
Full list of resources:
 VIP    (ocf::heartbeat:IPaddr2):       FAILED c-node-4     << 실패
Failed Resource Actions:
* VIP_monitor_10000 on c-node-4 'not running' (7): call=7, status=complete, exitreason='',
    last-rc-change='Mon Aug  1 14:31:28 2022', queued=0ms, exec=0ms
Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

위와 같이 Resource 상태 확인하고 Fail Count 를 증가한다.

Crash Cluster

강제로 node 의 interface 를 down 으로 만들어 총 Node 두대를 장애로 만들어본다.

[root@c-node-6 ~]# ifdown eth0

위와 같이 Cluster 의 status 가 KO 로 표기된다.

Clean Resouce

Cluster 정상화 이후, Resource 의 Fail count 초기화를 진행한다.

[root@c-node-4 ~]# pcs resource cleanup
Cleaned up all resources on all nodes
Waiting for 1 reply from the CRMd. OK

위와 같이 Fail count 가 초기화 된 것을 볼 수 있다.

chhanz's profile image



Read more posts by this author