docker搭建Grafana+Loki+Promtail日志分析

环境搭建

Grafana 搭建

docker search grafana
docker pull grafana/grafana
docker run -d -p 3000:3000 --name grafana grafana/grafana

Loki 搭建

创建宿主机目录

mkdir -p /usr/local/glp/loki/index
mkdir -p /usr/local/glp/loki/chunks
chmod -R 777 /usr/local/glp/loki/index
chmod -R 777 /usr/local/glp/loki/chunks

创建loki 配置文件

mkdir /usr/local/glp/loki-config.yaml

loki-config.yaml内容

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 3110
  grpc_server_max_recv_msg_size: 1073741824  #grpc最大接收消息值,默认4m
  grpc_server_max_send_msg_size: 1073741824  #grpc最大发送消息值,默认4m

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s
  max_transfer_retries: 0
  max_chunk_age: 20m  #一个timeseries块在内存中的最大持续时间。如果timeseries运行的时间超过此时间,则当前块将刷新到存储并创建一个新块

schema_config:
  configs:
    - from: 2021-01-01
      store: boltdb
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 168h

storage_config:
  boltdb:
    directory: /opt/loki/index #存储索引地址
  filesystem:
    directory: /opt/loki/chunks

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  ingestion_rate_mb: 30  #修改每用户摄入速率限制,即每秒样本量,默认值为4M
  ingestion_burst_size_mb: 15  #修改每用户摄入速率限制,即每秒样本量,默认值为6M

chunk_store_config:
        #max_look_back_period: 168h   #回看日志行的最大时间,只适用于即时日志
  max_look_back_period: 0s

table_manager:
  retention_deletes_enabled: false #日志保留周期开关,默认为false
  retention_period: 0s  #日志保留周期

安装loki

docker search loki
docker pull grafana/loki
docker run -d \
--name loki \
--privileged=true \
-v /usr/local/glp/loki:/mnt/config \  #挂载配置文件目录
-v /usr/local/glp/loki/index:/opt/loki/index \  #挂载宿主机索引目录
-v /usr/local/glp/loki/chunks:/opt/loki/chunks \
-p 3100:3100 \
grafana/loki \
-config.file=/mnt/config/loki-config.yaml  # 使用挂载的配置文件

Promtail搭建

创建promtail 配置文件

mkdir /usr/local/glp/promtail
vi /usr/local/glp/promtail/promtail-config.yaml
promtail-config.yaml配置内容
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

#连接Loki的地址
clients:
  - url: http://192.168.124.111:3100/loki/api/v1/push

scrape_configs:
 - job_name: system
   pipeline_stages: # 描述如何对目标日志进行结构化
   static_configs: #静态配置允许指定一个目标列表和标签集
   - targets:  # 这是 Prometheus 服务发现代码所要求的,但并不适用于Promtail,它只能查看本地机器上的文件。因此,它应该只有 localhost 的值,或者可以完全移除它,Promtail 会使用 localhost 的默认值。
      - localhost
     labels:
      #标签,用于后面的查询
      job: demo
      #容器内存储的日志文件路径 创建容器的时候需要此目录和宿主机的日志目录挂载
      __path__: /var/log/*.log

启动容器

docker run -d \
--name promtail \
--privileged=true \
-v /usr/local/glp/promtail:/mnt/config \ #配置文件目录
-v /root/demo/log:/var/log \  # 挂载宿主机的日志目录到容器内 让容器可读 宿主机目录:上面配置 __path__ 指定的容器内目录
# -v /usr/local/joyoh/log:/var/log \ #可以挂载多个日志目录
grafana/promtail \
-config.file=/mnt/config/promtail-config.yaml  #使用挂载的配置文件

界面配置

打开Grafana安装路径 http://192.168.124.111:3100
初始账户密码为 :admin/admin

docker搭建Grafana+Loki+Promtail日志分析_第1张图片

添加Loki
docker搭建Grafana+Loki+Promtail日志分析_第2张图片
docker搭建Grafana+Loki+Promtail日志分析_第3张图片
docker搭建Grafana+Loki+Promtail日志分析_第4张图片
查看日志
docker搭建Grafana+Loki+Promtail日志分析_第5张图片

配置好的标签会在这里展示,选择即可查看对应日志

docker搭建Grafana+Loki+Promtail日志分析_第6张图片
docker搭建Grafana+Loki+Promtail日志分析_第7张图片

查询表达式:
	对于查询表达式的标签部分,将其包装在花括号中{}使用键值对的语法来选择标签多个标签表达式用逗号分隔
	{filename="/var/log/demo.log",job="demo"}
匹配运算符:
	= 等于
	!= 不相等
	=~ 正则表达式匹配
	!~ 不匹配正则表达式
	Loki 过滤器
	搜索表达式


搜索表达式可以只是文本或正则表达式
表达式接受RE2语法
匹配项区分大小写
过滤器类型:
	|= 行包含字符串。
	!= 行不包含字符串。
	|~ 行匹配正则表达式。
	!~ 行与正则表达式不匹配
{filename="/var/log/demo.log",job="demo"}|~ "8测试"

docker搭建Grafana+Loki+Promtail日志分析_第8张图片

你可能感兴趣的:(docker,docker,grafana,运维)