PG部署exporter

54 阅读4分钟

一、PG部署exporter

# 使用dba的jms机器

172.25.243.96



# 每个ip后必须加一个逗号

ansible-playbook -i 172.xx.xx.xx,172.xx.xx.xx.xx, exporter_playbook.yml



## exporter_playbook 逻辑会装两个exporter:node和pg。





# 非 1921端口和/data01

/etc/default/postgres_exporter

exporter_playbook.yml文件

- name: clear rpm cache
  hosts: all
  gather_facts: no
  tasks:
    - name: rm __db file
      command: rm /var/lib/rpm/__db*
      ignore_errors: yes
    - name: rebuilddb
      command: rpm --rebuilddb
    - name: yum clean all
      command: yum clean all
    - name: remove salt repo file
      file: 
        path: /etc/yum.repos.d/salt.repo
        state: absent
    - shell: rpm -e node_exporter


- name: install node_exporter
  hosts: all
  vars_files:
    - "var_el{{ ansible_facts['distribution_major_version'] }}.yml"
  tasks:
    - name: upload rpm
      copy:
        src: "{{ node_exporter_rpm }}"
        dest: /tmp/
    - name: install rpm
      yum:
        name: "/tmp/{{ node_exporter_rpm }}"
        disablerepo: base,updates,extras,epel
        state: present
    - name: run service
      service:
        name: node_exporter
        enabled: yes
        state: restarted

- name: install postgres_exporter
  hosts: all
...skipping...
  hosts: all
  vars_files:
    - "var_el{{ ansible_facts['distribution_major_version'] }}.yml"
  tasks:
    - name: upload rpm
      copy:
        src: "{{ postgres_exporter_rpm }}"
        dest: /tmp/
    - name: install rpm
      yum:
        name: "/tmp/{{ postgres_exporter_rpm }}"
        disablerepo: base,updates,extras,epel
        state: present
    - name: upload pg exporter default config
      copy:
        src: postgres_exporter_default
        dest: /etc/default/postgres_exporter
        backup: yes

    - name: create pg exporter query dir
      file:
        path: /etc/prometheus
        state: directory
    - name: upload query sql file
      copy:
        src: postgres_exporter_queries.yaml
        dest: /etc/prometheus/postgres_exporter_queries.yaml
        backup: yes
    - name: update service file
      when: ansible_facts['distribution_major_version'] == "6"
      copy:
        src: postgres_exporter_service
        dest: /etc/init.d/postgres_exporter
        mode: 0755
        backup: yes
    - name: run service
      service:
        name: postgres_exporter
        enabled: yes
        state: restarted

#postgres_exporter

#注意是不是“非 1921端口和/data01”

DATA_SOURCE_NAME="user=postgres host=127.0.0.1 port=1921 sslmode=disable"

POSTGRES_EXPORTER_OPTS="--extend.query-path=/etc/prometheus/postgres_exporter_queries.yaml"



二、postgres_exporter 的部署步骤:

1、确认目标机器OS的版本。

如下以centos7版本为例子

2、从dba跳板机传输rpm包到目标机器的/tmp下:

scp postgres_exporter-0.10.0-1.el7.x86_64.rpm 172.25.112.29:/tmp/

3、检查目标机器上的安装的exporter

rpm -qa | grep exporter

4、安装pg exporter

rpm -i postgres_exporter-0.10.0-1.el7.x86_64.rpm

5、找到pg的目录 /data/postgres/pgdata

[root@KSSHV149628 pgdata]# pwd
/data/postgres/pgdata
[root@KSSHV149628 pgdata]# ll
total 88
-rw-------  1 postgres postgres   232 Jan 17 05:02 backup_label.old
drwx------ 11 postgres postgres   130 Jan 17 09:52 base
-rw-------  1 postgres postgres    47 Mar 24 00:00 current_logfiles
drwx------  2 postgres postgres  4096 Mar 18 00:52 global
drwx------  2 postgres postgres    32 Jan 17 05:02 log
drwx------  2 postgres postgres     6 Jan 17 05:11 pg_commit_ts
drwx------  2 postgres postgres     6 Jan 17 05:02 pg_dynshmem
-rw-------  1 postgres postgres  6609 Jan 18 15:41 pg_hba.conf
-rw-------  1 postgres postgres  1636 Jan 17 05:02 pg_ident.conf
drwx------  2 postgres postgres  8192 Mar 24 00:00 pg_log
drwx------  4 postgres postgres    68 Mar 24 14:04 pg_logical
drwx------  4 postgres postgres    36 Jan 17 05:02 pg_multixact
drwx------  2 postgres postgres    18 Jan 17 05:12 pg_notify
drwx------  2 postgres postgres     6 Mar 23 02:12 pg_replslot
drwx------  2 postgres postgres     6 Jan 17 05:02 pg_serial
drwx------  2 postgres postgres     6 Jan 17 05:02 pg_snapshots
drwx------  2 postgres postgres     6 Jan 17 05:11 pg_stat
drwx------  2 postgres postgres   134 Mar 24 14:04 pg_stat_tmp
drwx------  2 postgres postgres    18 Mar 24 13:25 pg_subtrans
drwx------  2 postgres postgres     6 Jan 17 05:02 pg_tblspc
drwx------  2 postgres postgres     6 Jan 17 05:11 pg_twophase
-rw-------  1 postgres postgres     3 Jan 17 05:02 PG_VERSION
drwx------  3 postgres postgres   284 Mar 24 14:04 pg_wal
drwx------  2 postgres postgres  4096 Mar 24 13:23 pg_xact
-rw-------  1 postgres postgres    88 Jan 17 05:02 postgresql.auto.conf
-rw-------  1 postgres postgres 20669 Jan 17 05:02 postgresql.conf
-rw-------  1 postgres postgres    27 Jan 17 05:12 postmaster.opts
-rw-------  1 postgres postgres    83 Jan 17 05:12 postmaster.pid
-rw-------  1 postgres postgres   227 Jan 17 05:12 recovery.conf
[root@KSSHV149628 pgdata]# 

6、从dba跳板机传输替换postgres_exporter_default 文件到目标机器

scp postgres_exporter_default 172.25.112.29:/etc/default/postgres_exporter

7、将pg目录改写 /etc/default/postgres_exporter 中host

[root@KSSHV149628 pgdata]# vim /etc/default/postgres_exporter
DATA_SOURCE_NAME="user=postgres host=/data/postgres/pgdata port=1921 sslmode=disable"
POSTGRES_EXPORTER_OPTS="--extend.query-path=/etc/prometheus/postgres_exporter_queries.yaml"

第二种方案:改成 127.0.0.1

DATA_SOURCE_NAME="user=postgres host=127.0.0.1 port=1921 sslmode=disable"

POSTGRES_EXPORTER_OPTS="--extend.query-path=/etc/prometheus/postgres_exporter_queries.yaml"

8、从dba跳板机传输替换postgres_exporter_queries.yaml文件到目标机器

scp postgres_exporter_queries.yaml 172.25.112.29:/etc/prometheus/postgres_exporter_queries.yaml

9、centos6版本有的一步

从dba跳板机传输postgres_exporter_service 文件到 目标机器

scp postgres_exporter_service 172.25.112.29:/etc/init.d/postgres_exporter

10、启动pg exporter

systemctl start postgres_exporter

systemctl restart postgres_exporter

检查pg exporter运行状态

# 

curl 172.25.112.29:9187



[root@KSSHV149628 pgdata]# curl 172.25.112.29:9187/metrics -s | grep pg_up
# HELP pg_up Whether the last scrape of metrics from PostgreSQL was able to connect to the server (1 for yes, 0 for no).
# TYPE pg_up gauge
pg_up 1