项目作者: glinuz

项目描述 :
Prometheus IBM DB2 exporter
高级语言: Go
项目地址: git://github.com/glinuz/db2_exporter.git
创建时间: 2019-10-09T02:30:44Z
项目社区:https://github.com/glinuz/db2_exporter

开源协议:MIT License

下载


IBM DB2 exporter

A Prometheus exporter for IBM DB2,with getting by ODBC.

Description

The following metrics are exposed currently by default-metrics.toml.

  1. # HELP ibmdb2_bufferpool_bp_size_mb DB2 bufferpools size MB.
  2. # TYPE ibmdb2_bufferpool_bp_size_mb gauge
  3. ibmdb2_bufferpool_bp_size_mb{bp_name="BUFF16 "} 300
  4. ibmdb2_bufferpool_bp_size_mb{bp_name="IBMDEFAULTBP "} 800
  5. # HELP ibmdb2_bufferpool_idx_hit_ratio DB2 bufferpools INDEX_HIT_RATIO_PERCENT.
  6. # TYPE ibmdb2_bufferpool_idx_hit_ratio gauge
  7. ibmdb2_bufferpool_idx_hit_ratio{bp_name="IBMDEFAULTBP "} 100
  8. # HELP ibmdb2_bufferpool_total_hit_ratio DB2 bufferpools TOTAL_HIT_RATIO_PERCENT.
  9. # TYPE ibmdb2_bufferpool_total_hit_ratio gauge
  10. ibmdb2_bufferpool_total_hit_ratio{bp_name="BUFF16 "} 100
  11. ibmdb2_bufferpool_total_hit_ratio{bp_name="IBMDEFAULTBP "} 100
  12. # HELP ibmdb2_db_name_value DB2 name.
  13. # TYPE ibmdb2_db_name_value gauge
  14. ibmdb2_db_name_value{server="SAMPLE"} 1
  15. # HELP ibmdb2_db_version_value DB2 version.
  16. # TYPE ibmdb2_db_version_value gauge
  17. ibmdb2_db_version_value{service_level="DB2 v10.5.0.6"} 1
  18. # HELP ibmdb2_exporter_last_scrape_duration_seconds Duration of the last scrape of metrics from IBM DB2.
  19. # TYPE ibmdb2_exporter_last_scrape_duration_seconds gauge
  20. ibmdb2_exporter_last_scrape_duration_seconds 0.013067445
  21. # HELP ibmdb2_exporter_last_scrape_error Whether the last scrape of metrics from IBM DB2 resulted in an error (1 for error, 0 for success).
  22. # TYPE ibmdb2_exporter_last_scrape_error gauge
  23. ibmdb2_exporter_last_scrape_error 0
  24. # HELP ibmdb2_exporter_scrapes_total Total number of times IBM DB2 was scraped for metrics.
  25. # TYPE ibmdb2_exporter_scrapes_total counter
  26. ibmdb2_exporter_scrapes_total 2
  27. # HELP ibmdb2_tablespace_free_mb Tablespaces free space MB.
  28. # TYPE ibmdb2_tablespace_free_mb gauge
  29. ibmdb2_tablespace_free_mb{page_size="8192",state="NORMAL ",tablespace="IBMDB2SAMPLEREL ",type="LARGE "} 27
  30. ibmdb2_tablespace_free_mb{page_size="8192",state="NORMAL ",tablespace="IBMDB2SAMPLEXML ",type="LARGE "} 20
  31. ibmdb2_tablespace_free_mb{page_size="8192",state="NORMAL ",tablespace="SYSCATSPACE ",type="ANY "} 4
  32. ibmdb2_tablespace_free_mb{page_size="8192",state="NORMAL ",tablespace="SYSTOOLSPACE ",type="LARGE "} 31
  33. ibmdb2_tablespace_free_mb{page_size="8192",state="NORMAL ",tablespace="TEMPSPACE1 ",type="SYSTEMP "} 0
  34. ibmdb2_tablespace_free_mb{page_size="8192",state="NORMAL ",tablespace="USERSPACE1 ",type="LARGE "} 17
  35. # HELP ibmdb2_tablespace_total_mb Tablespaces total space MB.
  36. # TYPE ibmdb2_tablespace_total_mb gauge
  37. ibmdb2_tablespace_total_mb{page_size="8192",state="NORMAL ",tablespace="IBMDB2SAMPLEREL ",type="LARGE "} 32
  38. ibmdb2_tablespace_total_mb{page_size="8192",state="NORMAL ",tablespace="IBMDB2SAMPLEXML ",type="LARGE "} 32
  39. ibmdb2_tablespace_total_mb{page_size="8192",state="NORMAL ",tablespace="SYSCATSPACE ",type="ANY "} 128
  40. ibmdb2_tablespace_total_mb{page_size="8192",state="NORMAL ",tablespace="SYSTOOLSPACE ",type="LARGE "} 32
  41. ibmdb2_tablespace_total_mb{page_size="8192",state="NORMAL ",tablespace="TEMPSPACE1 ",type="SYSTEMP "} 0
  42. ibmdb2_tablespace_total_mb{page_size="8192",state="NORMAL ",tablespace="USERSPACE1 ",type="LARGE "} 32
  43. # HELP ibmdb2_tablespace_used_mb Tablespaces used space MB.
  44. # TYPE ibmdb2_tablespace_used_mb gauge
  45. ibmdb2_tablespace_used_mb{page_size="8192",state="NORMAL ",tablespace="IBMDB2SAMPLEREL ",type="LARGE "} 4
  46. ibmdb2_tablespace_used_mb{page_size="8192",state="NORMAL ",tablespace="IBMDB2SAMPLEXML ",type="LARGE "} 11
  47. ibmdb2_tablespace_used_mb{page_size="8192",state="NORMAL ",tablespace="SYSCATSPACE ",type="ANY "} 123
  48. ibmdb2_tablespace_used_mb{page_size="8192",state="NORMAL ",tablespace="SYSTOOLSPACE ",type="LARGE "} 0
  49. ibmdb2_tablespace_used_mb{page_size="8192",state="NORMAL ",tablespace="TEMPSPACE1 ",type="SYSTEMP "} 0
  50. ibmdb2_tablespace_used_mb{page_size="8192",state="NORMAL ",tablespace="USERSPACE1 ",type="LARGE "} 14
  51. # HELP ibmdb2_up Whether the IBM DB2 database server is up.
  52. # TYPE ibmdb2_up gauge
  53. ibmdb2_up 1

Linux unix macOS

Build (go <1.11 vendor mode)

Use DB2 server or client instance ,like db2inst1, in your database server HOME directory.
Need DB2 ODBC driver file.

  1. export IBM_DB_DIR=/home/db2inst1/sqllib
  2. export CGO_LDFLAGS=-L$IBM_DB_DIR/lib
  3. export CGO_CFLAGS=-I$IBM_DB_DIR/include
  4. go build main.go

Run

Switch DB2 server CFG monitor buffpool on

  1. db2 update monitor switches using bufferpool on
  2. db2 update dbm cfg using DFT_MON_BUFPOOL on

Set export LD_LIBRARY_PATH ,check your system ENV.

  1. export LD_LIBRARY_PATH=$DB2_HOME/lib:$LD_LIBRARY_PATH

Database connect setting as env DB2_DSN,default DATABASE=sample; HOSTNAME=localhost; PORT=60000; PROTOCOL=TCPIP; UID=db2inst1; PWD=db2inst1;

Running on port 9161

  1. export DB2_DSN="DATABASE=sample; HOSTNAME=localhost; PORT=60000; PROTOCOL=TCPIP; UID=db2inst1; PWD=db2inst1;"
  2. ./main

OR

  1. ./main -log.level debug -dsn "DATABASE=sample; HOSTNAME=localhost; PORT=60000; PROTOCOL=TCPIP; UID=db2inst1; PWD=db2inst1;"

Windows

see issue #7

Zabbix template

In our case,it is worked with Prometheus and Zabbix (v3.2).
Import db2export_zabbix_templates.xml, and define Host macro {$URL} endpoint,e.g. http://localhost:9161/metrics

Howto custerm metric

Add your custerm metric ,database monitor SQL script in file: default-metrics.toml.

DB2 export