跳转至

Loggie的监控与报警

Loggie的monitor eventbus被设计为发布和订阅模式,各个组件发送metrics到指定的topic中,由独立的listener来消费处理。

比如file source会将采集日志的一些指标数据,发送至filesource topic,由filesource listener来消费,filesource listener会将数据聚合计算之后,打印至日志,暴露出Prometheus指标。

组件和topic以及listener之间是松耦合关系,比如file source还会定时将全量匹配的日志文件指标发送至filewatcher topicfilewatcher listener会处理和暴露指标。

Monitor配置

monitor eventbus配置在全局的系统配置中,示例如下:

Config

loggie:
  monitor:
    logger:
      period: 30s
      enabled: true
    listeners:
      filesource: ~
      filewatcher: ~
      reload: ~
      queue: ~
      sink: ~
  http:
    enabled: true
    port: 9196

其中logger控制所有的metrics指标的日志打印,会在period时间间隔将配置listeners产生的metrics聚合打印在Loggie日志中,便于回溯和排查问题。

listeners则用于配置相关的listener是否开启。

Prometheus格式metrics默认通过http.port端口暴露在/metrics。可以通过curl <podIp>:9196/metrics来查看当前的metrics指标。

日志采集核心指标

目前有以下的listener,主要包含:

  • filesource: 当前日志采集的指标数据,比如当前有哪些文件在采集中,采集状态如何
  • filewatcher: 定时的全量遍历(默认5min)配置path匹配的所有文件,监控全局采集状态,判断是否有未及时采集的文件等
  • reload: reload次数
  • queue: 队列状态
  • sink: 发送的指标,比如发生成功或者失败的个数等

部署Prometheus和Grafana

可以使用环境已有的Prometheus或者Grafana,如果需要新部署,可参考:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack

使用Helm部署:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack -nprometheus --create-namespace

Note

由于众所周知的原因,你的环境里可能无法下载其中的某些k8s.gcr.io镜像,可以考虑下载chart包替换后再重新部署。

确认Pod正常running后,可以根据实际环境访问grafana。通过代理访问grafana的方式可参考:

kubectl -nprometheus port-forward --address 0.0.0.0 service/prometheus-grafana 8181:80

Grafana用户名和密码可在prometheus-grafana sercret中,通过base64 -d来查看。

增加Loggie Prometheus监控

在部署了Loggie的Kubernetes集群中,需要创建如下的ServiceMonitor来让Prometheus采集Loggie Agent指标。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    app: loggie
    release: prometheus
  name: loggie-agent
  namespace: prometheus
spec:
  namespaceSelector:
    matchNames:
    - loggie
  endpoints:
  - port: monitor
  selector:
    matchLabels:
      app: loggie
      instance: loggie

同时,我们需要在Grafana中添加install工程中的json来展示Loggie的监控控制台。

Note

Kubernetes版本和Grafana版本不同,可能导致图表展示不兼容,需要根据情况进行修改。

导入的Grafana图表目前包含监控大盘和节点Agent的监控图表,如下图所示: