使用loki+ mtail + grafana + prometheus server分析应用问题

loki 是一个方便的类似prometheus 的log 系统,mtail 是一个方便的日志提取工具,
可以暴露为http 服务——支持导出prometheus metrics

环境准备

  • docker-compose 文件
version: "3"
services:
  nginx-log:
    build: ./
    ports:
    - "8090:80"
    - "3903:3903"
    volumes:
    - "./examples/linecount.mtail:/progs/linecount.mtail"
    - $PWD:/etc/promtail
  loki:
    image: grafana/loki:master
    ports:
      - "3100:3100"
    volumes:
      - $PWD:/etc/loki
    command: -config.file=/etc/loki/loki-local-config.yaml
  promtail:
    image: grafana/promtail:make-images-static-26a87c9
    volumes:
      - $PWD:/etc/promtail
      - ./log:/var/log
    command: 
      -config.file=/etc/promtail/promtail-docker-config.yaml
  grafana:
    image: grafana/grafana:master
    ports:
      - "3000:3000"
    environment:
    - "GF_EXPLORE_ENABLED=true"
  prometheus:
    image: prom/prometheus
    volumes:
    - "./prometheus.yml:/etc/prometheus/prometheus.yml"
    ports:
    - "9090:9090"
  • dockerfile 说明
    dockerfile 主要是一个简单的openresty 服务,集成了mtail+loki,dockerfile 使用multi stage 处理
FROM dalongrong/mtail as builder
FROM grafana/promtail:make-images-static-26a87c9 as promtail
?
FROM openresty/openresty:alpine
ENV TINI_VERSION v0.18.0
RUN apk add --update \
    && apk add --no-cache tini
ADD entrypoint.sh /entrypoint.sh
ADD mtail.sh /mtail.sh
ADD promtail.sh /promtail.sh
COPY nginx.conf usr/local/openresty/nginx/conf/
COPY --from=builder /usr/bin/mtail /usr/bin/
COPY --from=promtail /usr/bin/promtail /usr/bin/
EXPOSE 80 3903
ENTRYPOINT ["/sbin/tini","-s", "--", "/entrypoint.sh"]
  • 启动脚本(entrypoint)
#!/bin/sh
sh mtail.sh
sh promtail.sh
exec /usr/local/openresty/bin/openresty -g "daemon off;"
?
mtail.sh:
?
#!/bin/sh
nohup /usr/bin/mtail -logtostderr -progs /progs/linecount.mtail -logs /var/log/error.log & 
?
promtail.sh:
?
#!/bin/sh
nohup /usr/bin/promtail -config.file=/etc/promtail/promtail-docker-config2.yaml & 
  • prometheus server 配置
    prometheus.yml 文件
scrape_configs:
  - job_name: openresty-metrics
    metrics_path: /metrics
    static_configs:
      - targets: [‘nginx-log:3903‘]
  • loki 配置
    主要是agent 以及server
promtail-docker-config2.yaml:
server:
  http_listen_port: 0
  grpc_listen_port: 0
?
positions:
  filename: /tmp/positions.yaml
?
client:
  url: http://loki:3100/api/prom/push
?
scrape_configs:
- job_name: system
  entry_parser: raw
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs-nginx
      __path__: /var/log
  • mtail 配置
# Copyright 2011 Google Inc. All Rights Reserved.
# This file is available under the Apache license.
?
counter line_count
?
/$/ {
  line_count++
}
?

启动&&测试

  • 构建镜像
docker-compose build
  • 启动
docker-compose up -d
  • grafana 配置
    很简单,需要配置的有datasource(loki,prometheus)
  • 测试
    模拟访问故障 http://localhost:8090/demoapp
    mtail 界面


    prometheus server

    集成metrics&&log 分析

说明

grafana 的log 功能很方便,这样我们可以同时支持分析,以及问题排查了,而且不需要使用太多的工具就能解决问题

参考资料

https://www.cnblogs.com/rongfengliang/p/10112500.html
https://github.com/grafana/loki#getting-started
https://github.com/rongfengliang/grafana-loki-demo
https://github.com/google/mtail/blob/master/docs/Building.md
https://github.com/rongfengliang/mtail-nginx-docker-compose-demo

原文地址:https://www.cnblogs.com/rongfengliang/p/10117107.html

时间: 2024-11-06 05:54:00

使用loki+ mtail + grafana + prometheus server分析应用问题的相关文章

Grafana+prometheus监控体系实践

一.前言 1.1.grafana介绍 Grafana是一个开源指标分析和可视化套件,常用于可视化基础设施的性能数据和应用程序分析的时间序列数据.也可以应用于其他领域,包括工业传感器,家庭自动化,天气和过程控制.但请注意,我们使用Grafana最关心的是如何把数据进行聚合后进行展示.Grafana支持多种不同的时序数据库数据源,Grafana对每种数据源提供不同的查询方法,而且能很好的支持每种数据源的特性.它支持下面几种数据源:Graphite.Elasticsearch.CloudWatch.I

GPE监控预警系统(Grafana+Prometheus+Exporter)

GPE监控预警系统(Grafana+Prometheus+Exporter) GPE监控预警系统结构图 一: Grafana 1:简介 大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具.目前已经支持绝大部分常用的时序数据库. Grafana支持许多不同的数据源.每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源. 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,

MS SQL Server分析数据库的I/O性能

系统有的时候响应会明显很慢,有的时候可以是因为访问人数增加导致,有的时候可能因为数据库的磁盘I/O访问次数频繁导致.MS SQL Server提供了一些动态管理视图和函数供我们分析磁盘I/O性能. 1.sys.dm_io_virtual_file_stats SELECT DB_NAME(vfs.database_id) AS database_name , vfs.database_id , vfs.FILE_ID , io_stall_read_ms / NULLIF(num_of_read

[译]SQL Server分析服务的权限配置

简介: 本文介绍如何配置SSAS数据库和cube相关维度的安全设置. 相对数据引擎来说,在Management Studio中配置分析服务的安全设置基本没什么区别.但是也会有一些限制,比如SSAS的权限配置都是围绕角色进行的,其次,角色的成员必须是基于windows或者ad环境的,SQL Server用户(比如sa)是无法使用的.还有,权限是无法直接授予给windows或者ad用户或者组的,这些用户或者组必须填加到角色中才可以.另外,如果UAC处于打开的状态,那么比如要以"Run as Admi

SQL Server分析服务的权限配置

 简介: 本文介绍如何配置SSAS数据库和cube相关维度的安全设置. 相对数据引擎来说,在Management Studio中配置分析服务的安全设置基本没什么区别.但是也会有一些限制,比如SSAS的权限配置都是围绕角色进行的,其次,角色的成员必须是基于windows或者ad环境的,SQL Server用户(比如sa)是无法使用的.还有,权限是无法直接授予给windows或者ad用户或者组的,这些用户或者组必须填加到角色中才可以.另外,如果UAC处于打开的状态,那么比如要以"Run as A

Grafana+Prometheus系统监控之webhook

概述 Webhook是一个API概念,并且变得越来越流行.我们能用事件描述的事物越多,webhook的作用范围也就越大.Webhook作为一个轻量的事件处理应用,正变得越来越有用. 准确的说webhoo是一种web回调或者http的push API,是向APP或者其他应用提供实时信息的一种方式.Webhook在数据产生时立即发送数据,也就是你能实时收到数据.这一种不同于典型的API,需要用了实时性需要足够快的轮询.这无论是对生产还是对消费者都是高效的,唯一的缺点是初始建立困难. Webhook有

Prometheus TSDB分析

Prometheus TSDB分析 概述 Prometheus是著名开源监控项目,其监控任务调度给具体的服务器,该服务器到目标上抓取监控数据,然后保存在本地的TSDB中.自定义强大的PromQL语言查询实时和历史时序数据,支持丰富的查询组合. Prometheus 1.0版本的TSDB(V2存储引擎)基于LevelDB,并且使用了和Facebook Gorilla一样的压缩算法,能够将16个字节的数据点压缩到平均1.37个字节. Prometheus 2.0版本引入了全新的V3存储引擎,提供了更

高性能server分析 - Hadoop的RpcServer

一.Listener Listener线程,当Server处于运行状态时,其负责监听来自客户端的连接,并使用Select模式处理Accept事件. 同时,它开启了一个空闲连接(Idle Connection)处理例程,如果有过期的空闲连接,就关闭.这个例程通过一个计时器来实现. 当select操作调用时,它可能会阻塞,这给了其它线程执行的机会.当有accept事件发生,它就会被唤醒以处理全部的事件,处理事件是进行一个doAccept的调用. doAccept: void doAccept(Sel

Grafana+Prometheus系统监控之SpringBoot

前言 前一段时间使用SpringBoot创建了一个webhook项目,由于近期项目中也使用了不少SpringBoot相关的项目,趁着周末,配置一下使用prometheus监控微服务Springboot. 项目配置 引入坐标 <!-- Exposition spring_boot --> <dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_spring_boo