前言:

日志监控告警系统,较为流行的有两种技术栈。

一种是Elasticsearch 、 Logstash和Kibana核心套件构成,简称ELK。另外一种是Promtail + Loki + Grafana核心组件构成,简称PLG。

其中,ELK的技术栈方案,久经考验,很多大公司的团队在使用。相比之下,PLG开源不久,是一股新兴的力量,目前较多的小团队在使用。

经过衡量和思考,考虑到Loki轻量(ELK很多复杂的功能项目上没有使用需求)、低成本(容易实现)、操作简单等特性,以及计划使用prometheus体系对监控进行改造,我采用了第二种技术栈方案。

组件:

promtail: 日志收集的代理,安装部署在需要收集和分析日志的服务器,promtail会将日志发给Loki服务。  

Loki: 主服务器,负责存储日志和处理查询。

Grafana:提供web管理界面,数据展示功能。

搭建Promtail + Loki + Grafana 日志监控告警系统

部署:

安装docker:

yum update -y

#安装国内阿里源

wget  -P /etc/yum.repos.d/ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce -y

#docker -v  查看docker版本

搭建Promtail + Loki + Grafana 日志监控告警系统

 

systemctl start docker  #启动

systemctl enable docker #开机自启

##########################

安装docker-compose:

yum install epel-release -y

yum install -y python-pip

pip install docker-compose #报错

搭建Promtail + Loki + Grafana 日志监控告警系统

pip install --upgrade pip

搭建Promtail + Loki + Grafana 日志监控告警系统

pip install docker-compose

docker-compose -v

搭建Promtail + Loki + Grafana 日志监控告警系统

######################################

 

#docker镜像地址选择版本下载:https://hub.docker.com/r/grafana/promtail/tags

1、拉取镜像文件:

  1. docker pull grafana/loki:master
  2. docker pull grafana/grafana:master

###或者导入镜像 docker load <镜像文件

搭建Promtail + Loki + Grafana 日志监控告警系统

创建loki配置文件:(配置文件放在/etc)

vim /etc/loki/local-config.yaml

auth_enabled: false 

server: 
  http_listen_port: 3100 

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 

schema_config: 
  configs: 
    - from: 2018-04-15 
      store: boltdb 
      object_store: filesystem 
      schema: v9 
      index: 
        prefix: index_ 
        period: 168h 

storage_config: 
  boltdb: 
    directory: /tmp/loki/index 

  filesystem: 
    directory: /tmp/loki/chunks 

limits_config: 
  enforce_metric_name: false 
  reject_old_samples: true 
  reject_old_samples_max_age: 168h 

#chunk_store_config:
##  max_look_back_period: 0
#
##table_manager:
##  chunk_tables_provisioning:
##    inactive_read_throughput: 0
##    inactive_write_throughput: 0
##    provisioned_read_throughput: 0
##    provisioned_write_throughput: 0
##  index_tables_provisioning:
##    inactive_read_throughput: 0
##    inactive_write_throughput: 0
##    provisioned_read_throughput: 0
##    provisioned_write_throughput: 0
##  retention_deletes_enabled: false
##  retention_period: 0
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2、编辑docker-compose文件启动Loki/grafana:

vim docker-compose.yml #注意后面每行有个空格

version: "3"
services:
  loki:
    image: grafana/loki:master
    container_name: loki
    restart: always
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml #配置文件存放路径
  grafana:
    image: grafana/grafana:master
    container_name: grafana
    restart: always
    ports:
      - "3000:3000"
 

 

 

 

 

 

 

 

 

 

 

docker-compose up -d  #运行启动loki/grafana

搭建Promtail + Loki + Grafana 日志监控告警系统

docker ps -a #查看容器是否正常启动

搭建Promtail + Loki + Grafana 日志监控告警系统

搭建Promtail + Loki + Grafana 日志监控告警系统
 

3、运行promtail

下载 promtail (解压为执行文件)

curl -O -L "https://github.com/grafana/loki/releases/download/v1.5.0/promtail-linux-amd64.zip"

unzip -q promtail-linux-amd64.zip 

### 创建 promtail 配置文件

vim promtail-local-config.yaml


server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml  #默认会自动创建收集到得log文件

clients:
  - url: http://localhost:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs  #页面获取得标签
      __path__: /usr/local/nginx/logs/*log #需要采集的日志路径
 

 

 

 

 

 

 

 

 

 

 

 

nohup /software/promtail/promtail-linux-amd64 -config.file=/software/promtail/promtail-local-config.yaml >>./promtail.log 2>&1 &   #路径根据自己配置的实际路径

搭建Promtail + Loki + Grafana 日志监控告警系统

 

##########容器端口正常,浏览器输入IP+端口,登录grafana页面,默认密码admin+admin(第二次为修改密码)

搭建Promtail + Loki + Grafana 日志监控告警系统

######################################  Welcome to Grafana ##################

搭建Promtail + Loki + Grafana 日志监控告警系统

在设置-->数据源列表中选择Loki,配置 Loki 源地址:

搭建Promtail + Loki + Grafana 日志监控告警系统

源地址配置http://loki:3100即可,保存。

搭建Promtail + Loki + Grafana 日志监控告警系统

保存完成后,切换到 grafana 左侧区域的Explore,即可进入到Loki的页面,点击Log labels就可以把当前系统采集的日志标签给显示出来,可以根据这些标签进行日志的过滤查询:

搭建Promtail + Loki + Grafana 日志监控告警系统

 

 

 

 

 

相关文章: