办法比较捞~

办法比较捞~

办法比较捞~

有大佬有好的方法或者现成的代码提供小弟感激不尽!!

之前zabbix做了动态监控服务器上端口监控的告警,换到prometheus 暂时还没有发现怎么做。因为有些端口新起的话 不想手动加到prometheus的配置里。

于是先用比较捞的方法,用一个8080的nginx 端口通过静态页面,ip:8080/metrics 提供给prometheus

up用来表示8080端口健康情况

downports 为1表示端口正常 非1的话为不正常,并通过value把故障的port输出

yum -y install nginx

修改nginx.conf中server配置如下

server {listen       8080;server_name  $ip  localhost;
location  / {root /opt/;index index.html;
}
location  /metrics {try_files '' /index.html;root /opt/;index index.html;
}
}

创建获取端口号的脚本 因为metrics里只能写数字 所以当有多个端口挂掉的时候 我是用4个0作为分割 一次性输出的。有点捞。

不过告警 有总比没有强。后续有更好的方案 再改进。

# 创建脚本/srv/check_port_alive.sh
#!/bin/bash
source /etc/profile
cd /srv
echo 1
if [ ! -f "port_before" ]; thenecho port_before 不存在netstat -tpln |awk '{print $4}' |awk -F[:]  '{print $NF}' |grep  '[[:digit:]]' > /srv/port_before
elseecho port_before 存在
fiecho 2
netstat -tpln |awk '{print $4}' |awk -F[:]  '{print $NF}' |grep  '[[:digit:]]' > /srv/port_nowport_dif=`grep -vFf   port_now  port_before`echo 3
if [ ! -n "$port_dif" ]; thenecho " 原先端口没有异常!"echo up 1 >  /opt/index.html ;echo  downports  1 >> /opt/index.html  >> /opt/index.htmlcp -f  /srv/port_now  /srv/port_before
elseecho " 原先端口存在异常!"cat /dev/null > /opt/index.htmlecho -n downports 0000 >> /opt/index.htmlfor i in `grep -vFf   port_now  port_before`;do echo -n  0000$i   >> /opt/index.html ;donesed -i '$aup 1'  /opt/index.html#echo up 1 >  /opt/index.html ;echo  downports  0000 >> /opt/index.html ; for i in `grep -vFf   port_now  port_before`;do echo -n  0000$i   >> /opt/index.html ;done# 覆盖一下文件 确保万一新生成的端口for i in `grep -vFf   port_now  port_before`;do echo $i >> /srv/port_now ;donecp -f  /srv/port_now /srv/port_before
fi# 添加脚本执行权限
chmod +x /srv/check_port_alive.sh

设置定时任务crontab -e

  680  systemctl  restart prometheus
* * * * *  sh /srv/check_port_alive.sh

创建prometheus告警rule文件 /srv/prometheus/conf/rule_port_down.yml

groups:
- name: 端口存活告警规则rules:- alert: 端口存活告警expr: downports != 1for: 1mlabels:user: prometheusseverity: warningannotations:description: "{{ $labels.instance }} of job {{ $labels.job }}  {{ $value }}  {{ $labels.hostname }}has been down for more than 1 minutes."# description: "{{ $labels.instance }} of job {{ $labels.job }}  {{ $value }}  {{ $labels.hostname }}挂了"

在prometheus.yml里添加如下配置

  - job_name: 'test-rule'static_configs:- targets: ['192.168.10.167:8080']  ## 目标主机

启动服务 测试一下效果

# 启动nginx
/usr/sbin/nginx
# 重启prometheus
systemctl  restart prometheus
systemctl  status  prometheus

生成了2个文件port_before port_now

查看目前启动着的端口号

安装(略)并启动一个tomcat 端口为8081 8009 8005 并在2分钟后 关闭这些端口

# 我服务器上没有其他java进程 所以用了pkill
sh /usr/local/tomcat/bin/startup.sh  ;sleep 120 ;pkill java

查看文件变化 发现已经获取到这些端口了

等待告警触发

这里字符太长了。可以直接把后面has been down 的改成中文端口挂了

告警恢复

如果不需要这些端口的话 需要修改port_now并覆盖port_before

[prometheus]Step11-prometheus动态监控服务器端口并告警相关推荐

  1. Prometheus配置监控ip、端口连通,get、post接口连通和状态码

    Prometheus配置监控ip.端口连通,get.post接口连通和状态码 ##方法:blackbox_exporter 部署在一台主机上集中配置 第一部分 1.1下载blackbox_export ...

  2. 【监控利器Prometheus】——Prometheus+Grafana监控服务器资源

    Prometheus+Grafana监控服务器资源 1. 配置 Node Exporter 采集服务器数据 2. Prometheus配置 3. 在Grafana中创建监控看板 在Prometheus ...

  3. prometheus之记录规则(recording rules)与告警规则(alerting rule)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Prometheus支持两种类型的规则:记录规则和警报规则. 要在Prometheus中包含规则,请创建一个包含必要规则语句的文件,并让Prometh ...

  4. 【Prometheus】 Prometheus 入门到实战搭建监控系统

    Prometheus (普罗米修斯)是一款基于时序数据库的开源监控告警系统,说起 Prometheus 则不得不提 SoundCloud,这是一个在线音乐分享的平台,类似于做视频分享的 YouTube ...

  5. k8s部署Kube Prometheus(Prometheus Operator)

    摘要 本文通过Prometheus-operator框架一键化安装prometheus.alertmanage.granfana,并配置企业微信api以及告警推送,搭建 prometheus 的前提环 ...

  6. Ninth3: Prometheus server Prometheus monitored Grafana monitoring database | Cloud computing

    云计算专题目录 Catalogue | Cloud computing Ninth3: Prometheus server & Prometheus monitored & Grafa ...

  7. 【Prometheus】Prometheus 远端存储

    1.Prometheus支持的数据库 这里使用Influxdb:https://docs.influxdata.com/influxdb/v1.8/supported_protocols/promet ...

  8. docker port如何增加端口_Docker 动态添加端口映射解决思路

    Docker 动态添加端口映射? docker 创建容器的时候,我们如果使用docker的桥接网络(bridge)那么一般需要暴露容器内一些端口到宿主机上,也就是容器与宿主机间的端口映射.最近很多的人 ...

  9. 【TDSQL】资源存在隔离端口产生告警的处置

    TDSQL资源存在隔离端口产生告警的处置 告警信息样例 [TDSQL]XX集群(192.168.6.10):资源存在隔离端口产生告警,判断频率(1/1),后续180分钟内屏蔽告警:异常策略:!=阀值( ...

最新文章

  1. 【算法导论学习笔记】第3章:函数的增长
  2. 凝聚世界著名的UNIX/Linux专家Sobell十年功力的巨著2
  3. 《主算法》作者Pedro Domingos:做机器学习硬件不能只考虑深度学习
  4. 获取 HTML5 网页设计灵感的10个网站推荐
  5. IEEE ISO/IEC简介
  6. 【报告分享】万达文旅项目新媒体营销操作手册.pdf(附下载链接)
  7. 《机器人学导论》Matlab计算坐标系变换矩阵
  8. viper12a电源电路图_viper12_viper12a工作原理详解_简单viper12a电路图
  9. 2022,程序员的出路在哪里?
  10. 【视频编码】【Vue】【明星开源项目】| Chat · 预告
  11. 计算机考研统考压分吗,担忧!考研初试会被压分吗?
  12. Leetcode——237. 删除链表中的节点(Java)
  13. java 1 20内奇数的乘积_计算所有奇数的乘积
  14. Latex 语法 备忘录
  15. 免费翻译英文文献自动生成PDF双语文档小技巧
  16. 深圳互联网科技公司|外企篇
  17. subclipse-1.8.4安装方法
  18. 4个基本不等式的公式高中_不等式链(高中4个基本不等式链推导)
  19. 大话Linux发展史
  20. TCP协议——三次握手

热门文章

  1. 【Python】python初学者应该知道与其他语言差异化的高效编程技巧(附测试代码+详细注释)
  2. ceph搭建及使用详解
  3. MD5、SHA、AES、Rabit 、RC4、TripleDES Ripemd160 加密解密工具
  4. 1276. 不浪费原料的汉堡制作方案-数学消元法
  5. Tracup|使用项目管理独一无二的六大好处
  6. android版本内存多少,内存大小决定Android系统版本?
  7. iphone相册储存空间已满_苹果iPhone手机存储空间满了怎么办以及解决方法
  8. 解析少儿编程与创客教育的实战原理
  9. 使用python manage.py startapp myapp未报错,但是没有创建出myapp
  10. C++ opencv之像素操作之逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)