指标监控 & 日志采集 系统

指标监控 & 日志采集

TODO

  • AlterManager 告警添加
  • K8S 动态发现指标
  • 日志上传

Prometheus

  • docker 安装: docker pull prom/prometheus,以及node-exporter: docker pull prom/node-exporter

  • 启动node-exporter:

    • docker run -itd --name node_exporter -p 9100:9100 prom/node-exporter 
      
  • 编写yaml文件:

    • 编写规则,就是要往哪个服务器监控,则编写一个相应的job_name 即可

    • global:
        scrape_interval:     60s
        evaluation_interval: 60s
      
      scrape_configs:
        - job_name: prometheus-server
          static_configs:
            - targets: ['localhost:9090','localhost:9100']  # prometheus 的启动端口,本机的端口号,以及node_exporter
              labels:
                instance: prometheus
      
        - job_name: demo-server
          static_configs:
            - targets: ['192.168.1.101:8080']	# 目标服务器
              labels:
                instance: localhost
      
  • 启动docker 文件

    • docker run -itd --name prometheus -p 9090:9090 -v ${PWD}/prometheus.yaml:/etc/prometheus/prometheus.yml prom/prometheus
  • 访问: http://localhost:9000/graph

    ​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cC89Hd6b-1600522319989)(/Users/joker/Desktop/未闻花名/个人/指标和监控/graph.png)]

  • 访问 http://localhost:9000/targets, down 先不用管,那是自定义的

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2pPqPBB-1600522319992)(/Users/joker/Desktop/未闻花名/个人/指标和监控/targets.png)]

Grafana

  • 拉取grafana : docker pull grafana/grafana

  • 启动grafana :

    docker run -itd -p 3000:3000 --name=grafana  grafana/grafana 
    
  • 访问,添加DataSource

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuWbZ3hK-1600522319994)(/Users/joker/Desktop/未闻花名/个人/指标和监控/Grafana-addDataSource.png)]

    • 主要为URL 即可,要与 prometheus 的一致

    • 添加dashboard=> 选择graph => query 更改server 为prometheus server

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1lWemGAy-1600522319996)(/Users/joker/Desktop/未闻花名/个人/指标和监控/graph-添加query条件.png)]

添加自定义指标监控

  • 编写程序

    • package main
      
      import (
      	"flag"
      	"github.com/prometheus/client_golang/prometheus"
      	"github.com/prometheus/client_golang/prometheus/promhttp"
      	"log"
      	"net/http"
      	"time"
      
      )
      
      var addr = flag.String("listen-address", ":8080", "The address to listen on for HTTP requests.")
      
      var requestTotalCount = prometheus.NewCounterVec(prometheus.CounterOpts{
      	Name: "reqeust_total_count", // 指定名字
      	Help: "Number of hello requests in total",
      },
      	// 设置两个标签 请求方法和 路径 对请求总次数在两个
      	[]string{"method", "endpoint"},
      )
      
      var requestDuration = prometheus.NewHistogramVec(prometheus.HistogramOpts{
      	Namespace:   "request_duration",
      	Subsystem:   "",
      	Name:        "request_duration",
      	Help:        "",
      	ConstLabels: nil,
      	Buckets:     nil,
      }, []string{"method", "endpoint"})
      
      func init() {
      	// 注册监控指标
      	prometheus.MustRegister(requestTotalCount)
      	prometheus.MustRegister(requestDuration)
      }
      
      func main() {
      	flag.Parse()
      	http.Handle("/metrics", promhttp.Handler())
      	http.Handle("/get", Filter(Get))
      	log.Fatal(http.ListenAndServe(*addr, nil))
      }
      
      func Get(writer http.ResponseWriter, request *http.Request) {
      	writer.Write([]byte("ok"))
      }
      
      func Filter(h http.HandlerFunc) http.HandlerFunc {
      	return func(writer http.ResponseWriter, request *http.Request) {
      		start := time.Now()
      		h(writer, request)
      		duration := time.Since(start)
      		requestTotalCount.With(prometheus.Labels{"method": request.Method, "endpoint": request.URL.Path}).Inc()
      		requestDuration.With(prometheus.Labels{"method": request.Method, "endpoint": request.URL.Path}).Observe(duration.Seconds())
      	}
      }
      
  • 在grafana 中添加dashboard

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d37uryWd-1600522319997)(/Users/joker/Desktop/未闻花名/个人/指标和监控/自定义指标.png)]

遇到的问题

  • 为什么要使用node-exporter
    • 因为内部提供了系统监控的相关信息,就不用自己写了
  • 怎么导入 node-exporter的东西
    • 需要导入的是json文件即可
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rTAXMJ6H-1600522319998)(/Users/joker/Desktop/未闻花名/个人/指标和监控/导入node-exporter 1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-msEsYzqi-1600522319999)(/Users/joker/Desktop/未闻花名/个人/指标和监控/导入node-exporter 2.png)]

  • Q: 对于那些埋点的服务,需要创建DataSource 吗
    • A: 不需要,因为埋点的服务,都汇集在了Prometheus服务中,不需要特殊操作,只需要通过 这个Prometheus DataSource 创建dashBoard 就可以了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器运行状态监控系统全文共3页,当前为第1页。服务器运行状态监控系统全文共3页,当前为第1页。服务器运行状态监控系统 服务器运行状态监控系统全文共3页,当前为第1页。 服务器运行状态监控系统全文共3页,当前为第1页。 系统目标 本系统的主要功能是对各种服务器进行实时监控,基于Windows系统(包括Windows XP/2021/2021),采用C/S模式,使用VC6.0开发。其中,Client客户端安装在受监控的服务器上,Server服务器端安装在网管人员的PC机上。网管人员可以随时通过Server端获知任意一台受监控服务器的运行状态,并在服务器出现异常的情况下(如:服务器意外down机、存储空间不足、CPU利用率过高等),及时的收到Server端的短信报警信息。 2.1、Client端主要功能 (1) 采集服务器的各种性能指标数据,并发送到Server端,使网络管理员能实时查看服务器的状态。主要包括:CPU使用率、内存使用率、进程数量监控、进程运行状况监控等。 (2) 采集服务器的相关信息,并保存在服务器的日志文件中,供网络管理员进行定期的数据分析。主要包括:重点分区文件的变动信息、容量大小信息、服务器重新启动信息等。 (3) 服务器进程信息的监测。主要包括进程列表的实时扫描、黑名单监测和白名单监测。其中,黑名单监测是指对非正常进程的监测(如病毒进程),当发现监测服务器上运行着这类非正常进程时,便会向Server端发送告警信息,并自动关闭进程。白名单是指对服务器上守护进程的监控,当发现服务器守护进程没有正常运行时,便会 向Server端发送告警信息,并自动重新启动进程。 (4) 日志文件监控。此项功能实现对服务器日志文件所占存储空间的监控。当监控日志文件大小超过其预设阀值时,Client端便会向Server端发送告警信息,通知网络管理人员进行及时处理。 (5) Web服务器监控。对WEB服务器的实时监控,当发现受监控的Web服务器不能正常提供服务时,自动重新启动该服务,使其能够正常运行,并将WEB服务器发生问题的时间和处理信息写入日志文件,以供网络管理人员进行分析。主要提供对Tomcat、IIS(6.0)等Web服务器的监控。 (6) 数据库服务器监控。对服务器上运行的数据库服务器的实时监控,当发现受监控的数据库服务不能正常提供服务时,自动重新启动该服务,以使其能够运行正常,并将问题发生时间和处理信息写入日志文件,以供网络管理人员进行分析。主要提供对SQL Server、Oracle等数据库的监控。 (7) 盘符容量监控。选定某一监控盘符后,设置其容量大小,当容量不足时,向Server端发送报警信息。 服务器运行状态监控系统全文共3页,当前为第2页。服务器运行状态监控系统全文共3页,当前为第2页。 2.2、Server端主要功能 服务器运行状态监控系统全文共3页,当前为第2页。 服务器运行状态监控系统全文共3页,当前为第2页。 Server端的主要功能是接收Client端发送的数据,并根据设置阈值在这些海量数据中筛选出异常数据向网络管理员进行告警。 (1) 参数设置:对一些基本参数进行设置,保存设置后,Server端按照参数的设定范围对接收的数据进行分析。主要包括: 告警时间间隔:两次告警间的时间间隔。即在前一次告警发出后,网络管理员没有做出响应的前提下,确定下一次告警的时间。 CPU使用率:设置CPU使用率正常值的范围,超出该范围,Server端便会将其筛选出来进行告警。 内存空闲率:设置内存空闲率正常值的范围,超出该范围,Server端便会将其筛选出来进行告警。 进程数:设置服务器系统在正常情况下进程数的范围,超出该范围,Server端便会将其筛选出来进行告警。 短信猫:设置发送短信的间隔时间和设备管理人员的电话号码,将服务器的各种报警信息自动发送到管理员。 (2) 端口扫描:对任意一台受监控的服务器的相关端口进行扫描,以获取其端口状态。此功能既支持对某一特定端口进行扫描,也支持对多个连续的端口进行扫描。 (3) 端口分析:显示传输层中各种端口的使用情况,包括listen、Time_wait、Established等状态。列出当前系统中全部使用TCP或UDP协议进行通信的进程和端口状态,当发现异常时,可关闭端口停止进程的运行。 (4) 远程监控:当位于Server端的网络管理员发现某台服务器出现异常时,可以通过此项功能在自己的PC机上直接进行处理。 (5) 数据库的备份:对Server端收集到的数据进行备份,以供网络管理员对历史数据进行分析。 (6) 历史数据显示:对收集到的Client端的历史告警数据进行 显示。这些告警数据主要包括:CPU、内存、邮件、黑名单、白名单、进程数、日志等。 (7) 数据动态波形图:对

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值