Prometheus 安装 准备:
1 mkdir -p /data/logs /data/soft/monitor
安装核心服务 Prometheus 下载 Prometheus 到 /data/soft 目录,并解压到 /data/soft/monitor/prometheus
执行命令为:
1 2 3 mkdir -p /data/soft/monitor && mkdir -p /data/logs && cd /data/soft wget https://hekr-files.oss-cn-shanghai.aliyuncs.com/soft/prometheus/linux/prometheus-2.14.0.linux-amd64.tar.gz && tar -xvf prometheus-2.14.0.linux-amd64.tar.gz && mv prometheus-2.14.0.linux-amd64 monitor/prometheus
启动
1 2 cd /data/soft/monitor/prometheussetsid ./prometheus --config.file="prometheus.yml" --web.enable-lifecycle >> /data/logs/prometheus.log 2>&1
上面使用默认配置启动了Prometheus,至于配置文件下面会再进行修改。
检查是否启动成功,输入命令 curl -XGET -sI localhost:9090/metrics|head -n1
如果输出 HTTP/1.1 200 OK
则代表成功,否则查看日志 /data/logs/prometheus.log
定位问题。
安装Linux监控组件 该组件需要安装在被监控的主机上,如果主机有多台,那么应该分别进行安装并启动。
下载 node_export 到 目录 /data/soft/monitor 并解压,命令:
1 2 3 4 cd /data/softwget https://hekr-files.oss-cn-shanghai.aliyuncs.com/soft/prometheus/linux/node_exporter-0.18.1.linux-amd64.tar.gz tar -xvf node_exporter-0.18.1.linux-amd64.tar.gz && mv node_exporter-0.18.1.linux-amd64 monitor/node_exporter
启动 node_exporter
1 2 3 cd /data/soft/monitor/node_exportersetsid ./node_exporter >> /data/logs/node_exporter.log 2>&1
检查是否启动成功, curl -XGET -sI localhost:9100/metrics|head -n1
如果输出 HTTP/1.1 200 OK
则启动成功,否则查看日志 /data/logs/node_exporter.log
定位问题。
安装 redis 监控组件 下载 redis-exporter 到目录 /data/soft
并解压,命令:
1 2 3 4 cd /data/softwget https://hekr-files.oss-cn-shanghai.aliyuncs.com/soft/prometheus/linux/redis_exporter-v1.3.4.linux-amd64.tar.gz tar -xvf redis_exporter-v1.3.4.linux-amd64.tar.gz && mv redis_exporter-v1.3.4.linux-amd64 monitor/redis_exporter
运行 redis_exporter
1 2 cd /data/soft/monitor/redis_exportersetsid ./redis_exporter -redis.addr='redis://192.168.25.150:6379' --check-keys=db1=stream*,db0=stream* >> /data/logs/redis_exporter.log 2>&1
注意 --check-keys
参数是要监控的 redis 对应 db 的 key名字,比如要监控 db0
中的 stream
开头的key,则加入参数 --check-keys='db1=stream*'
,多个用英文逗号隔开,这里需要根据 iot 服务部署时候设置的redis db 设置,默认是1。
-redis.addr
是redis 地址。
检查是否启动成功, curl -XGET -sI localhost:9121/metrics|head -n1
如果输出 HTTP/1.1 200 OK
则启动成功,否则查看日志 /data/logs/redis_exporter.log
定位问题。
安装大盘显示组件 Grafana 下载 grafana 到目录 /data/soft
并解压,命令:
1 2 3 4 cd /data/softwget https://hekr-files.oss-cn-shanghai.aliyuncs.com/soft/prometheus/linux/grafana-6.4.4.linux-amd64.tar.gz tar -xvf grafana-6.4.4.linux-amd64.tar.gz && mv grafana-6.4.4 monitor/grafana
启动:
1 2 cd /data/soft/monitor/grafanasetsid bin/grafana-server -config conf/defaults.ini >> /data/logs/grafana.log 2>&1
检查是否启动成功, curl -XGET -sI localhost:3000/login|head -n1
如果输出 HTTP/1.1 200 OK
则启动成功,否则查看日志 /data/logs/grafana.log
定位问题。
安装告警组件 AlertManager 下载 alertmanager 到目录 /data/soft
并解压,命令:
1 2 3 4 cd /data/softwget https://hekr-files.oss-cn-shanghai.aliyuncs.com/soft/prometheus/linux/alertmanager-0.19.0.linux-amd64.tar.gz tar -xvf alertmanager-0.19.0.linux-amd64.tar.gz && mv alertmanager-0.19.0.linux-amd64 monitor/alertmanager
启动:
1 2 cd /data/soft/monitor/alertmanagersetsid ./alertmanager --config.file="alertmanager.yml" >> /data/logs/alertmanager.log 2>&1
检查是否启动成功, curl -XGET -sI http://localhost:9093|head -n1
如果输出 HTTP/1.1 200 OK
则启动成功,否则查看日志 /data/logs/grafana.log
定位问题。
安装 健康检查附加组件 该组件可以针对 http,tcp 等端口进行检查,从而获得服务运行状态并进行告警。
下载 black_exporter 到目录 /data/soft
并解压,命令:
1 2 3 4 cd /data/softwget https://hekr-files.oss-cn-shanghai.aliyuncs.com/soft/prometheus/linux/blackbox_exporter-0.16.0.linux-amd64.tar.gz tar -xvf blackbox_exporter-0.16.0.linux-amd64.tar.gz && mv blackbox_exporter-0.16.0.linux-amd64 monitor/blackbox_exporter
启动:
1 2 cd /data/soft/monitor/blackbox_exportersetsid ./blackbox_exporter --config.file="blackbox.yml" >> /data/logs/blackbox_exporter.log 2>&1
检查是否启动成功, curl -XGET -sI http://localhost:9115 |head -n1
如果输出 HTTP/1.1 200 OK
则启动成功,否则查看日志 /data/logs/blackbox_exporter.log
定位问题。
配置检查项 将如下配置文件写入(覆盖) balckbox.yml
:
1 2 3 4 5 6 7 8 9 10 11 12 13 modules: http_spring: prober: http timeout: 3s http: fail_if_body_not_matches_regexp: - '"status":"UP"' http_2xx: prober: http timeout: 3s tcp_connect: prober: tcp timeout: 3s
使用命令: curl -XPOST http://localhost:9115/-/reload
使其重新加载生效。
检查服务是否都已经启动 检查已经启动服务: ps -ef|grep -v grep|egrep "prometheus|grafana|exporter|alarmmanager"
。
增加监控配置 修改 /data/soft/monitor/prometheus/prometheus.yml
,替换为如下内容,注意 {{}} 内的内容需要动态替换为对应内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: - localhost:9093 rule_files: - "rules/*.yml" scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090' ] - job_name: redis_exporter static_configs: - targets: ['{{localhost:9121}} ' ] - job_name: iot_cloud_os_core metrics_path: /actuator/prometheus static_configs: - targets: ['{{ core ip:port }} ' ] - job_name: linux_host static_configs: - targets: ['{{ localhost:9100 }} ' ] - job_name: emqx static_configs: - targets: ['{{localhost:9540}} ' ] - job_name: health_iot_cloud_os_core metrics_path: /probe params: module: [http_spring ] static_configs: - targets: - '{{localhost:8001}} /actuator/health' relabel_configs: - source_labels: [__address__ ] target_label: __param_target - source_labels: [__param_target ] target_label: instance - target_label: __address__ replacement: "{{192.168.25.192:9115}} " - job_name: health_redis_port metrics_path: /probe params: module: [tcp_connect ] static_configs: - targets: - '{{localhost:6379}} ' relabel_configs: - source_labels: [__address__ ] target_label: __param_target - source_labels: [__param_target ] target_label: instance - target_label: __address__ replacement: "{{192.168.25.192:9115}} " - job_name: health_mongodb_port metrics_path: /probe params: module: [tcp_connect ] static_configs: - targets: - '{{localhost:27017}} ' relabel_configs: - source_labels: [__address__ ] target_label: __param_target - source_labels: [__param_target ] target_label: instance - target_label: __address__ replacement: "{{192.168.25.192:9115}} " - job_name: health_mongodb_port metrics_path: /probe params: module: [tcp_connect ] static_configs: - targets: - '{{localhost:9876}} ' relabel_configs: - source_labels: [__address__ ] target_label: __param_target - source_labels: [__param_target ] target_label: instance - target_label: __address__ replacement: "{{192.168.25.192:9115}} "
保存后输入 curl -XPOST localhost:9090/-/reload
使Prometheus重新加载配置,如果没有输出则正确。
添加告警配置 创建目录 mkdir -p /data/soft/monitor/prometheus/rules
并将以下文件内容保存 /data/soft/monitor/prometheus/rules
目录下:
health.yml
1 2 3 4 5 6 7 8 9 10 11 groups: - name: 监控检查 rules: - alert: "健康检查失败" expr: probe_success!=1 for: 1m labels: severity: critical annotations: summary: "健康检查失败 {{$labels.job}} {{$labels.instance}} " description: "健康检查失败 {{$labels.job}} {{$labels.instance}} "