docker-compose安装grafana+prometheus+loki 监控docker容器收集服务日志

使用docker-compose部署springboot项目后想找一个比较好用的日志收集工具,用elk感觉太重了,小项目承担不起,无意中发现loki,与grafana集成度很高,最重要的是使用成本低,记录下安装过程。

创建grafana,prometheus文件夹及配置文件

# 创建grafana文件夹 mkdir /docker/grafana/grafana mkdir /docker/grafana/grafana/data # 创建prometheus文件夹 mkdir /docker/grafana/prometheus mkdir /docker/grafana/prometheus/data mkdir /docker/grafana/prometheus/log # 创建prometheus配置文件 vi /docker/grafana/prometheus/prometheus.yml
global: scrape_interval: 15s evaluation_interval: 15s # 报警暂时不需要,后续可以添加 #alerting: # alertmanagers: # - static_configs: # - targets: # - alertmanager:9093 rule_files: - "*rules.yml" scrape_configs: # prometheus - job_name: 'prometheus' static_configs: - targets: ['host-ip:9090'] # 主机监控 - job_name: 'node' static_configs: - targets: ['host-ip:9100'] # docker资源监控 - job_name: 'cadvisor' static_configs: - targets: ['host-ip:8080'] # mysql - job_name: 'mysql' static_configs: - targets: ['host-ip::9104'] labels: instance: mysql # springboot 项目监控 # springboot 监控需要项目中集成prometheus # - job_name: 'test-server' # metrics_path: '/actuator/prometheus' # static_configs: # - targets: ['tesete-server-ip:8081'] # - job_name: 'alertmanager' # static_configs: # - targets: ['alertmanager:9093']

创建loki 文件夹及配置文件

mkdir /docker/grafana/loki mkdir /docker/grafana/loki/chunks mkdir /docker/grafana/loki/rules vi /docker/grafana/loki/local-config.yaml
auth_enabled: false server: http_listen_port: 3100 common: path_prefix: /loki storage: filesystem: chunks_directory: /loki/chunks rules_directory: /loki/rules replication_factor: 1 ring: instance_addr: 127.0.0.1 kvstore: store: inmemory schema_config: configs: - from: 2020-10-24 store: boltdb-shipper object_store: filesystem schema: v11 index: prefix: index_ period: 24h ruler: alertmanager_url: http://localhost:9093 limits_config: enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h per_stream_rate_limit: 100MB per_stream_rate_limit_burst: 200MB #ingestion_rate_mb: 32 #采集速率 32 #ingestion_burst_size_mb: 64 #单次采集大小 64 #max_entries_limit_per_query: 0 #查询返回的条目的最大行数,默认是5000,0表示无限制 #retention_period: 24h #全局保留期,超过这个时间的日志会被删除,具体删除规则在compactor里配置 #retention_stream: #局部保留期 #- selector: '{level="error"}' # priority: 1 # period: 720h table_manager: retention_deletes_enabled: true # 注意和索引存储时间一致,按1周为单位 retention_period: 1344h

创建compose文件

vi /docker/grafana/docker-compose.yml
version: "2" networks: prom: services: prometheus: image: prom/prometheus:latest container_name: prometheus hostname: prometheus restart: always user: root volumes: # 挂载prometheus配置文件 - /docker/grafana/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - /docker/grafana/prometheus/data:/prometheus - /docker/grafana/prometheus/log:/var/log/ command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention.time=7d' ports: - "9090:9090" networks: - prom grafana: image: grafana/grafana:latest container_name: grafana hostname: grafana restart: always user: root volumes: - /docker/grafana/grafana/data:/var/lib/grafana ports: - "3000:3000" networks: - prom node-exporter: image: prom/node-exporter:latest container_name: node-exporter hostname: exporter restart: always ports: - "9100:9100" networks: - prom cadvisor: image: google/cadvisor:latest container_name: cadvisor hostname: cadvisor restart: always volumes: # 挂载docker目录,为了监控docker使用情况,必须 - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ports: - "8080:8080" networks: - prom # 数据库监控 mysql-exporter: image: prom/mysqld-exporter container_name: mysql-exporter restart: always environment: DATA_SOURCE_NAME: "root:root@(192.168.2.182:3306)/" ports: - "9104:9104" volumes: - /docker/service/logs:/Users/zhuzuopeng/Documents/dr-project/logs loki: image: grafana/loki:latest container_name: loki hostname: loki restart: always user: root volumes: # 挂载chunks文件夹及配置文件,loki收集到日志后会存储到chunks中 - /docker/grafana/loki/chunks:/loki/chunks - /docker/grafana/loki/rules:/loki/rules - /docker/grafana/loki/local-config.yaml:/etc/loki/local-config.yaml ports: - "3100:3100" networks: - prom
cd /docker/grafana docker-compose up -d

收集日志

使用loki-docker-driver

docker 安装loki驱动收集日志
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
需要使用loki记录日志的docker-compose文件中替换日志收集驱动
logging: driver: loki options: loki-url: "http://loki-server-ip:3100/api/prom/push" loki-retries: "5" loki-batch-size: "400"

使用promtail收集日志文件

开启promtail服务
version: "2" services: grafana_promtail: container_name: promtail2 image: grafana/promtail:2.4.0 restart: always user: root volumes: - /docker/test-service/logs:/var/log - /docker/grafana/promatil/data:/var/log-position - /docker/grafana/promatil/config.yml:/etc/promtail/config.yml
vi /docker/grafana/promatil/config.yml
server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /var/log-position/positions.yaml # 记录日志上传的行号 # loki服务地址 client: url: http://loki-server-ip:3100/loki/api/v1/push scrape_configs: - job_name: my-service static_configs: - targets: - localhost labels: job: test-service host: *.*.*.* __path__: /var/log/*.log

好用的grafana模板下载

https://grafana.com/dashboards Spring Boot Statistics 6756 1 Node Exporter for Prometheus Dashboard EN 20201010 11074 Docker and system monitoring 893 Docker Container & Host Metrics 10619

__EOF__

本文作者yg0070
本文链接https://www.cnblogs.com/yg0070/p/16437578.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   yg0070  阅读(1895)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示