loki 是类似prometheus 的log 可视化展示、收集系统,已经集成在grafana 6.0 版本中了
说明: 测试环境使用了docker-compose 运行

环境准备

  • docker-compose 文件
 
version: "3"
services:
  nginx:
    build: ./
    ports:
    - "8090:80"
    volumes:
    - $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"
 
 
  • 配置说明
    nginx loki 配置,主要是使用容器运行多个应用
    dockerfile
 
FROM grafana/promtail:make-images-static-26a87c9 as builder
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 promtail.sh /promtail.sh
COPY nginx.conf usr/local/openresty/nginx/conf/
COPY --from=builder /usr/bin/promtail /usr/bin/
EXPOSE 80
ENTRYPOINT ["/sbin/tini","-s", "--", "/entrypoint.sh"]
 
 

entrypoint.sh:

#!/bin/sh
sh promtail.sh
exec /usr/local/openresty/bin/openresty -g "daemon off;"
 
 

promtail.sh:
后台方式运行,配置通过数据卷挂载

 
#!/bin/sh
nohup /usr/bin/promtail -config.file=/etc/promtail/promtail-docker-config2.yaml & 
 
 

nginx log 配置:
很简单,就是基本的配置

 
worker_processes 1;
+ error_log /var/log/error.log error;
user root;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    gzip on;
    resolver 114.114.114.114;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                               '$status $body_bytes_sent "$http_referer" '
                               '"$http_user_agent" "$http_x_forwarded_for"';
+ access_log /var/log/access.log main;
 
 

promtail ,loki 配置可以参考项目:https://github.com/rongfengliang/grafana-loki-demo
https://www.cnblogs.com/rongfengliang/p/10112500.html

启动&&测试

  • 构建包含agent 的 nginx
 
docker-compose build
  
  • 启动
docker-compose up -d
 

参考资料

https://www.cnblogs.com/rongfengliang/p/10112500.html
https://github.com/grafana/loki#getting-started
https://github.com/rongfengliang/grafana-loki-demo

使用 loki grafana 分析nginx 请求日志的更多相关文章

  1. elk收集分析nginx access日志

    elk收集分析nginx access日志 首先elk的搭建按照这篇文章使用elk+redis搭建nginx日志分析平台说的,使用redis的push和pop做队列,然后有个logstash_inde ...

  2. 采集并分析Nginx访问日志

    日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,帮助您快速采集并分析Nginx日志. 许多个人站长选取了Nginx作为服务器搭建网站,在对网站访问情况进行分析 ...

  3. 使用hive分析nginx访问日志方法

    以下案例是使用hive分析nginx的访问日志案例,其中字段分隔通过正则表达式匹配,具体步骤如下: 日志格式: 192.168.5.139 - - [08/Jun/2017:17:09:12 +080 ...

  4. 【.NET 6+Loki+Grafana】实现轻量级日志可视化服务功能

    前言:日志功能是几乎所有程序或系统都必备的一个功能.该文章通过使用Loki+Grafana来实现日志记录与可视化查询,欢迎围观. 有关环境: 操作系统:WIN 10 .NET环境:.NET 6 开发环 ...

  5. Grafana分析Nginx日志

    配置Groub by -Terms时报错,提示需要设置fielddata=true,报错内容大概如下: "Fielddata is disabled on text fields by de ...

  6. GoAccess安装及分析nginx实时日志

    GoAccess是一个基于终端的快速日志分析器.其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器(如果您希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作),终端输出是默 ...

  7. 利用GoAccess分析Nginx访问日志

    原文链接:https://blog.csdn.net/yown/article/details/56027112 需求:及时得到线上用户访问日志分析统计结果,以便给开发.测试.运维.运营人员提供决策! ...

  8. python脚本分析nginx访问日志

    日志格式如下: 223.74.135.248 [11/May/2017:11:19:47 +0800] "POST /login/getValidateCode HTTP/1.1" ...

  9. 命令分析nginx访问日志的用法

    awk分析日志常用高级使用命令方法 分析访问日志(Nginx为例) 日志格式: '$remote_addr - $remote_user [$time_local] "$request&qu ...

随机推荐

  1. [Leetcode 62]机器人走路Unique Path 动态规划

    [题目] A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below) ...

  2. SQL-7查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t (group 与count)

    题目描述 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数tCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int ...

  3. Eclipse几点常用设置+个人喜好

    1.代码自动提示 在我们忘记方法名或者想偷懒时,代码自动提示很管用.不过Eclipse默认是输入"."后才会出现包或类成员的提示,也就意味着我们必须先输入一个完整的类名,提示才能出 ...

  4. Java基础复习

    java语言的一个核心:jdk, java development kits---面向开发人员jre, java Runtime Environment---服务器上 java虚拟机---(以字节码为 ...

  5. 2019.3.5 L261 Are All Our Organs Vital?

    Medicine has not always shown a lot of respect for the human body. Just think about the ghoulish dis ...

  6. usort 函数

    function getNameFromNumber($num){ // Used to figure out what the Excel column name would be for a gi ...

  7. Python基础4--一看就会的选择与循环

    1 选择 if elif else 注意后面均有: if age>18: print 'adult' elif age>6: print 'teenager' else: print 'k ...

  8. Windows10下pip的配置文件设置

    pip.ini的内容: [global] index-url = http://mirrors.aliyun.com/pypi/simple trusted-host = mirrors.aliyun ...

  9. 看我怎么扒掉CSDN首页的底裤(python selenium+phantomjs爬取CSDN首页内容)

    这里只是学习一下动态加载页面内容的抓取,并不适用于所有的页面. 使用到的工具就是python selenium和phantomjs,另外调试的时候还用了firefox的geckodriver.exe. ...

  10. 6--Python入门--Python基本运算符

    算数运算符 运算符 描述 示例 + 相加 1+1→2 - 相减 1-1→0 * 相乘 1*2→2 / 相除 1/2→0.5 % 取余数 3%2→1 ** 幂运算 2**2→4 // 取商 7//2→3 ...