职贝云数AI新零售门户

标题: ptomrtheus监控系统实际,完成企微机器人预警 [打印本页]

作者: 9W9    时间: 2022-12-30 14:43
标题: ptomrtheus监控系统实际,完成企微机器人预警
目录
关于prometheus架构
prometheus HA 部署
触及组件及版本
安装包获取途径
alertmanager部署
grafana部署
nginx部署

最近在重新建立公司的监控系统,对比了目前的监控的系统,基础资源向运用最多的照旧是zabbix,而且版本也不断在更新,还有的话,就是最近刚出了v5版本的夜莺,之前也有调研过,后者目前也支持prometheus作为数据源。
最终选择了prometheus的话,也是由于工夫比较急,公司的现状的话,也比较合适用prometheus,所以基础资源、端口、运用层的一些监控用prometheus做,告警的话,初步计划用企业微信机器人完成,后续可以加上邮件告警。
除了prometheus的话,还有就是apm监控了,对比了skyworing、pinpoint、cat后,计划用pinpoint来完成,这个后面的文章会做详细的引见。
还有的话,就是用elk搜集日志,后面后对ng的一些央求呼应做监控,后端的一些日志异常报错,也会做监控。
之前调研并实际过的夜莺v5版本:
(, 下载次数: 3)


关于prometheus架构

最末尾的想法的话,是计划做联邦集群,然后用victoriametrics,但后面估算了下运用量,其实是用不到的。
最后的一个想法是这样的:
(, 下载次数: 3)


最后实际的时分,其实没有这样做,根据实践的场景,其实是做了一个HA,如下图:
(, 下载次数: 3)


prometheus的话,后面也是这么部署的,然后关于一些采集agent,还有后续的一些告警啥的,可以看下图:
(, 下载次数: 3)


prometheus HA 部署

触及组件及版本
  1. prometheus 2.36.0nginx 1.6.2alertmanager 0.24.0grafana 8.5.3
复制代码
安装包获取途径
  1. prometheus:https://github.com/prometheus/prometheus/releases/download/v2.36.1/prometheus-2.36.1.linux-amd64.tar.gzalerthttps://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gzgrafanawget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.6-1.x86_64.rpmnginx
复制代码
prometheus部署
其中prometheus和alert采用tar包安装,nginx采用编译安装,grafana采用rpm包安装,prometheus采用systremctl管理。
部署的话,其实很简单
  1. cd /datatar -xvf prometheus-2.36.0.linux-amd64.tar.gzmv prometheus-2.36.0.linux-amd64 prometheusmkdir -p /data/prometheus/{log,data}
复制代码
然后修正配置文件,可以看下目前的配置文件,次要是触及到job的配置,还有alert的配置,
  1. global:  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.  # scrape_timeout is set to the global default (10s).alerting:  alertmanagers:    - static_configs:        - targets: ['192.168.200.9:9093']rule_files:  - "rules/*_rules.yml"  # - "first_rules.yml"  # - "second_rules.yml"scrape_configs:  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  - job_name: "prometheus"    # metrics_path defaults to '/metrics'    # scheme defaults to 'http'.    static_configs:      - targets: ["192.168.x.x:9090","192.168.x.1:9090"]  - job_name: 'linux_base'    file_sd_configs:    - refresh_interval: 1m      files:      - config_exporter.json  - job_name: blackbox_tcp    scrape_interval: 1m    metrics_path: /probe    params:      module: [tcp_connect]      file_sd_configs:    - refresh_interval: 1m      files:      - config_port.json    relabel_configs:      - source_labels: [__address__]        target_label: __param_target      - source_labels: [__param_target]        target_label: instance      - target_label: __address__        replacement: 192.168.x.2:9115
复制代码
我这边的node_exporter及blackbox exporter配置文件都是挂在外面,而且支持热更新
  1. config_exporter.json
  2. config_port.json
复制代码
详细配置可以参考:
  1. [  {    "targets": [ "192.168.x.x:9100"],    "labels": {      "env": "yw"    }  }]
复制代码
prometheus经过systemctl管理
cat /usr/lib/systemd/system/prometheus.service
  1. [Unit]Description=PrometheusAfter=network.target[Service]Type=simpleEnvironment="GOMAXPROCS=4"User=rootExecReload=/bin/kill -HUP $MAINPIDExecStart=/data/prometheus/prometheus \  --config.file=/data/prometheus/prometheus.yml \  --storage.tsdb.path=/data/prometheus/data \  --storage.tsdb.retention=30d \  --web.console.libraries=/data/prometheus/console_libraries \  --web.console.templates=/data/prometheus/consoles \  --web.listen-address=0.0.0.0:9090 \  --web.read-timeout=5m \  --web.max-connections=10 \  --query.max-concurrency=20 \  --query.timeout=2m \  --web.enable-lifecyclePrivateTmp=truePrivateDevices=trueProtectHome=trueNoNewPrivileges=trueLimitNOFILE=infinityReadWriteDirectories=/data/prometheusProtectSystem=fullSyslogIdentifier=prometheusRestart=always[Install]WantedBy=multi-user.target
复制代码
设置好后,需求重置下
systemctl daemon-reload
alertmanager部署

tar -xvf alertmanager-0.24.0.linux-amd64.tar.gz
修正配置文件,由于是经过企微信机器人去告警的,是经过python起了一个web服务,然后配置了web hook来完成
  1. route:  group_by: ['alertname']  group_wait: 30s  group_interval: 5m  repeat_interval: 1h  receiver: 'web.hook'receivers:  - name: 'web.hook'    webhook_configs:      - url: 'http://192.168.x.x:5000'inhibit_rules:  - source_match:      severity: 'critical'    target_match:      severity: 'warning'    equal: ['alertname', 'dev', 'instance']
复制代码
告警的话,大概是长这样:
  1. 【恢复】消费环境 blackbox_network_stats 有报警恢复告警级别: critical 告警类型: blackbox_network_stats 告警主机: 192.168.x.x:9100 告警系统: ops 告警概况: This requires immediate action! 告警形态: resolved 触发工夫: 2022-06-16 11:05:48 +08:00 触发结束工夫: 2022-06-16 16:06:48 +08:00
复制代码
详细关于python服务的这里就不写了,后续有需求可当前台留言。
grafana部署

这个的话,就很简单了,直接rpm部署
  1. rpm -ivh grafana-8.5.3-1.x86_64.rpm
复制代码
grafana的话,更多的是一个仪表盘展现,这里加了node和blackbox的,网上有蛮多成熟的例子,可以直接拿来用。
(, 下载次数: 3)


nginx部署

次要是用来负载prometheus,还有就是一些组件的代理出去
编译安装即可。
这样的话,一套最基础的监控系统就是部署完了,而且完成了经过企业微信机器人的告警,后面的话,是pinpoint的一个集群化部署、ELK的集群部署。
其实部署只是第一步,后面的一些运用才是重要的。




欢迎光临 职贝云数AI新零售门户 (https://www.taojin168.com/cloud/) Powered by Discuz! X3.5