由于prometheus
的exporter
太多了, 所以单独开了个文档
postgres_exporter
#!/bin/bash
start_pg_exporter() {
pg_host=$1
pg_port=$2
pg_user=$3
pg_password=$4
exporter_port=$5
docker kill postgresql-exporter-${exporter_port}
docker rm postgresql-exporter-${exporter_port}
docker run -d \
--restart=always \
-p ${exporter_port}:9187 \
--name postgresql-exporter-${exporter_port} \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-e DATA_SOURCE_NAME="postgresql://${pg_user}:${pg_password}@${pg_host}:${pg_port}/postgres?sslmode=disable" \
wrouesnel/postgres_exporter
}
pgid="hdy-nmg-server-001"
pg_host="10.0.18.2"
pg_port="5432"
pg_user="postgres"
pg_password=""
exporter_port=13101
start_pg_exporter ${pg_host} ${pg_port} ${pg_user} ${pg_password} ${exporter_port}
# hdy-nmg-server-001
- job_name: 'hdy-nmg-server-001'
static_configs:
- targets: ['127.0.0.1:13101']
labels:
type: postgresql
instance: hdy-nmg-server-001
#!/bin/bash
mkdir -p config/
cat << EOF > config/postgres_exporter.yml
auth_modules:
hdy-nmg-server-001:
type: userpass
userpass:
username: postgres
password: NoKgWU
options:
sslmode: disable
aliyun-hz-server-master:
type: userpass
userpass:
username: postgres
password: 9VczV
options:
sslmode: disable
EOF
docker kill postgresql-exporter
docker rm postgresql-exporter
docker run -d --net=host \
--name postgresql-exporter \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
--restart=always \
-v $(pwd)/config/:/etc/postgres-exporter/ \
quay.io/prometheuscommunity/postgres-exporter \
--config.file /etc/postgres-exporter/postgres_exporter.yml \
--web.listen-address=:13101
- job_name: 'postgresql-exporter'
scrape_interval: 15s
scrape_timeout: 10s
file_sd_configs:
- files: ['/usr/local/prometheus/groups/postgresql/*.json','/usr/local/prometheus/groups/postgresql/*.yml']
metrics_path: /probe
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [instance]
target_label: __param_auth_module
- target_label: __address__
replacement: "10.0.18.2:13101"
- targets: [ "10.0.18.2:5432"]
labels:
job_name: hdy-nmg-server-001
instance: hdy-nmg-server-001
saltid: hdy-nmg-server-001
comment: "hdy-nmg-server-001"
- targets: [ "47.xxx.xxx.xxx:5432"]
labels:
job_name: aliyun-hz-server-master
instance: aliyun-hz-server-master
saltid: aliyun-hz-server-master
comment: "aliyun-hz-server-master"
grafana
的监控模板为9628
mysql_exporter
#!/bin/bash
# hdy-nmg-server-001
port=10309
docker kill mysqld-exporte-${port}
docker rm mysqld-exporte-${port}
cat << EOF > .my.cnf
[client]
user=root
password=
EOF
docker run -d --name mysqld-exporte-${port} \
--net host \
--restart=always \
-v /etc/timezone:/etc/timezone:ro \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro \
-v $(pwd)/.my.cnf:/config/.my.cnf \
prom/mysqld-exporter:v0.15.0 \
--web.listen-address=:${port} \
--config.my-cnf="/config/.my.cnf"
# hdy-nmg-server-001
- job_name: 'mysql'
static_configs:
- targets: ['127.0.0.1:10309']
labels:
type: mysql
instance: hdy-nmg-server-001
#!/bin/bash
# hdy-nmg-server-001
port=10309
docker kill mysqld-exporte-${port}
docker rm mysqld-exporte-${port}
cat << EOF > .my.cnf
[hdy-nmg-server-001]
user=root
password=
[aliyun-hz-server-master]
user=root
password=
EOF
docker run -d --name mysqld-exporte-${port} \
--net host \
--restart=always \
-v /etc/timezone:/etc/timezone:ro \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro \
-v $(pwd)/.my.cnf:/config/.my.cnf \
prom/mysqld-exporter:v0.15.0 \
--web.listen-address=:${port} \
--config.my-cnf="/config/.my.cnf"
- job_name: 'mysql-exporter'
scrape_interval: 15s
scrape_timeout: 10s
file_sd_configs:
- files: ['/usr/local/prometheus/groups/mysql/*.json','/usr/local/prometheus/groups/mysql/*.yml']
metrics_path: /probe
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [instance]
target_label: __param_auth_module
- target_label: __address__
replacement: "10.0.18.2:10309"
- targets: [ "10.0.18.2:3306"]
labels:
job_name: hdy-nmg-server-001
instance: hdy-nmg-server-001
saltid: hdy-nmg-server-001
comment: "hdy-nmg-server-001"
- targets: [ "47.xxx.xxx.xxx:3306"]
labels:
job_name: aliyun-hz-server-master
instance: aliyun-hz-server-master
saltid: aliyun-hz-server-master
comment: "aliyun-hz-server-master"
grafana
的监控模板为7362
blackbox_exporter
#!/bin/bash
docker stop blackbox_exporter
docker rm blackbox_exporter
docker run -d \
--restart=always \
-p 9115:9115 \
--name blackbox_exporter \
-v $(pwd)/config:/config \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
quay.io/prometheus/blackbox-exporter:latest --config.file=/config/blackbox.yml
modules:
# 通用get
http_2xx:
prober: http
timeout: 35s
http:
valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
valid_status_codes: [] # Defaults to 2xx
method: GET
preferred_ip_protocol: "ip4" # defaults to "ip6"
ip_protocol_fallback: false # no fallback to "ip6"
# 无参post
http_post_2xx:
prober: http
timeout: 35s
http:
method: POST
headers:
Content-Type: application/json
- job_name: 'blackbox-exporter'
scrape_interval: 60s
scrape_timeout: 35s
file_sd_configs:
- files: ['/usr/local/prometheus/groups/blackbox/*.json','/usr/local/prometheus/groups/blackbox/*.yml']
metrics_path: /probe
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [module]
target_label: __param_module
- source_labels: [address]
target_label: address
- target_label: __address__
replacement: "127.0.0.1:9115"
- targets: [ "http://10.0.18.2:8008/api/video_type/list" ]
labels:
module: "http_2xx"
address: "http://10.0.18.2:8008/api/video_type/list"
instance: "wx-video"
redis_exporter
#!/bin/bash
port=9121
docker rm -f redis-exporter-${port}
docker run -d --name redis-exporter-${port} \
--restart=always \
-v $(pwd)/config/redis_exporter-${port}.json:/data/redis_exporter-${port}.json \
-e REDIS_PASSWORD_FILE=/data/redis_exporter-${port}.json \
-p ${port}:9121 \
oliver006/redis_exporter:v1.60.0
grafana
的监控模板为11835
- targets: [ "192.168.1.1:8405"]
labels:
job_name: ha-test-1
instance: ha-test-1
saltid: test
comment: 测试
- job_name: 'haproxy-exporter'
scrape_interval: 15s
scrape_timeout: 10s
file_sd_configs:
- files: ['/usr/local/prometheus/groups/haproxy/haproxy.json','/usr/local/prometheus/groups/haproxy/haproxy.yml']
grafana
的监控模板为12693
pve_exporter
#!/bin/bash
port=9221
docker kill pve-exporter
docker rm pve-exporter
docker run -d \
--name pve-exporter \
--restart=always \
--network=host \
-v $(pwd)/groups/pve/pve.yml:/etc/prometheus/pve.yml \
buyfakett/pve_exporter
使用buyfakett/openresty:ubuntu_focal-vts_0.2.2
镜像
- job_name: 'nginx-host-exporter'
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: '/status/format/prometheus'
file_sd_configs:
- files: ['/usr/local/prometheus/groups/nginx-host/*.json','/usr/local/prometheus/groups/nginx-host/*.yml']
grafana
的监控模板为9785
- job_name: 'node-exporter'
scrape_interval: 15s
scrape_timeout: 10s
file_sd_configs:
- files: ['/usr/local/prometheus/groups/node_exporter/*.json','/usr/local/prometheus/groups/node_exporter/*.yml']
grafana
的监控模板为1860
- job_name: 'windows-exporter'
scrape_interval: 30s
scrape_timeout: 10s
file_sd_configs:
- files: ['/usr/local/prometheus/groups/windows_exporter/*.json','/usr/local/prometheus/groups/windows_exporter/*.yml']
grafana
的监控模板为20763
#!/bin/bash
# https://github.com/burningalchemist/sql_exporter
port=9399
docker rm -f sql_exporter
mkdir -p config/
docker run -d --net host \
--name sql_exporter \
--restart=always \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/tiemzone:/etc/timezone:ro \
-v ./config/:/etc/sql_exporter/ \
registry.cn-hangzhou.aliyuncs.com/buyfakett/sql_exporter \
-config.file /etc/sql_exporter/sql_exporter.yml \
-web.listen-address ":${port}"
- job_name: 'sql_exporter'
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
static_configs:
- targets: ['192.168.1.1:9399']
检测表是否5分钟没有新增数据(查询结果用1或0显示)
SELECT CASE
WHEN EXISTS (
SELECT 1
FROM trip_information_29
WHERE createtime >= NOW() - INTERVAL '5 minutes'
) THEN 1
ELSE 0
END AS counter;
SELECT CASE
WHEN EXISTS (
SELECT 1
FROM trip_information_29
WHERE createtime >= NOW() - INTERVAL 5 MINUTE
) THEN 1
ELSE 0
END AS counter;
SELECT
if(count(*) > 0, 1, 0) AS counter
FROM
log.ngxlog
WHERE
create_time >= now() - INTERVAL 5 MINUTE