一、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