部署日志收集系统

木屋管理员
木屋管理员
发布于 2024-05-30 / 62 阅读
0
0

部署日志收集系统


创建日期: 2024-05-17 09:35
tags:

  • loki
  • promtail


[!NOTE] Title
旨在搭建一个监控告警平台,包括了服务器系统,容器,日志收集,日志查看等功能。架构参考了
prometheus(数据处理)+node-exporter(数据采集)+grafan(图形化展示);
loki(数据处理)+promtail(数据采集)+grafana (图形化展示);
cadvisor(容器监控)+prometheus(数据处理)+grafana (图形化展示);
夜莺监控开源系统;
通过夜莺平台可以替代服务器状态的监控,暂时不能实现日志收集,不过集成了loki , 通过 loki+promtail的形式,在夜莺平台进行展示。不过夜莺平台生成的容器数量比较多,资源占用会比较大,不过平台功能也比较多,配置比prometheus+grafana更方便。展示更加直观。
目前已经有zabbix支持服务器的监控和告警,如果只是日志查看,只要部署promtail、loki和grafana就好了。相较于夜莺平台,资源占用和容器数量都相对来说少一点。

promethues部署

下载镜像

docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana

启动主机监控代理node-exporter

docker run -d -p 9100:9100 \
  --name=node-exporter \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro" \
  prom/node-exporter

# 如果不监控主机,只查日志的话,可以不装。
# 通过网页查看监控数据:http://x.x.x.x:9100/metrics

启动prometheus

# 新建目录prometheus,编辑配置文件prometheus.yml
mkdir /opt/prometheus
cd /opt/prometheus/
vi prometheus.yml

# 这部分YML语法最好是手动输入一下,直接复制会导致语法错误。容器启动失败。
global:
  scrape_interval:     60s
  evaluation_interval: 60s
 
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
 
  - job_name: linux
    static_configs:
      - targets: ['x.x.x.x:9100']   # 这里监控的是本机数据,其他主机可以继续添加targets
        labels:
          instance: localhost

prometheus启动命令

docker run  -d \
  -p 10050:9090 \
  --name prometheus \
  -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
  prom/prometheus

# 通过访问:http://x.x.x.x:10050/graph 查看页面
# 通过页面的status下面的targets来查看标签状态

启动grafana图形展示

 docker run -d \
  -p 10051:3000 \
  --name grafana \
  -e "GF_SERVER_ROOT_URL=http://grafana.server.name" \  # 可以自定义grafana服务器的URL
  -e "GF_SECURITY_ADMIN_PASSWORD=********" \   # 这里配置自定义的密码 , 用户是admin
  grafana/grafana

# 通过 访问 http://x.x.x.x:10051  , 用户名:admin ;密码:********

添加数据源

![[Pasted image 20240520115221.png]]

加载模板

这里试用了容器模板:模板ID:8321 ; LINUX模板ID:20389
![[Pasted image 20240520115330.png]]

LOKI简介

Loki聚合日志集成至grafana搭建

Loki简介

Loki的第一个稳定版本于2019年11月19日发布,是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。

Loki 由以下3个部分组成:

  • loki是主服务器,负责存储日志和处理查询。

  • promtail是代理,负责收集日志并将其发送给 loki 。

  • Grafana用于 UI 展示。

相对于ELk对于小团队来说还是过于笨重,没有loki来的轻量,所以出于多方便考虑,小编还是选择了loki作为日志收集。

安装loki

创建目录

mkdir -p /data/loki && cd /data/loki

下载配置文件模板

sudo wget https://raw.githubusercontent.com/grafana/loki/v2.0.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml sudo wget https://raw.githubusercontent.com/grafana/loki/v2.0.0/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

如果下载失败可去github复制

https://github.com/grafana/loki/blob/v2.0.0/cmd/promtail/promtail-docker-config.yaml
https://github.com/grafana/loki/blob/master/cmd/loki/loki-docker-config.yaml

启动容器

docker run -d --name loki \
  --restart always \
  -v /data/loki:/mnt/config \
  -p 9200:3100 \
  grafana/loki:latest \
  -config.file=/mnt/config/loki-config.yaml

查看loki

(http://x.x.x.x:9200/ready)
显示ready

安装promtail

启动容器

docker run -d --name promtail \
  --restart always \
  -v /opt/data/loki:/mnt/config \
  -v /var/log:/var/log  \  # 这个目录是采集日志所在的目录,需要把宿主机上的日志目录映射到容器里的目录上
  grafana/promtail:latest \
  -config.file=/mnt/config/promtail-config.yaml

配置文件编辑

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://ip:9200/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/** #扫描挂载目录下所有得log文件

添加数据源

查看日志

这里主要用到loki的查询语句,需要用标签名称进行查询
{job=“varlogs”} 为promtail配置里的名称,在prometheus里查看的时候注意一下时间区间。只显示时间区内的文件

= 完全相同
!= 不等于
=~ 正则表达式匹配
!~ 非正则匹配

{job="varlogs"} |= "error"
{filename="/var/log/nginx/access.log"}  # 可以通过文件名称,来查看对应的日志

监控容器运行情况

安装docker监控agent

docker run -d 
--volume=/:/rootfs:ro 
--volume=/var/run:/var/run:ro 
--volume=/sys:/sys:ro 
--volume=/data/docker/:/var/lib/docker:ro   # 这里注意容器的root目录,默认我们会修改默认目录到/data下面
--volume=/dev/disk/:/dev/disk:ro 
--publish=9300:8080 
--detach=true 
--name=cadvisor 
google/cadvisor:latest

在prometheus配置文件中增加监听项

- job_name: 'docker'
    static_configs:
    - targets: ['ip:9300']

评论