Grafana-Loki搭建
概述
Loki是一个受普罗米修斯启发的水平可扩展、高可用的多租户日志聚合系统。洛基与普罗米修斯的不同之处在于,他专注于日志而非度量,并通过推送而非拉取来收集日志
- App1 和 App2 就是我们应用服务(api-server,core-server)
- Agent (promtail)是一个代理程序,监听应用服务的代理程序,会监听他的日志文件,根据策略将日志文件发送给 Grafana loki,Agent程序是要和应用服务部署在同一个节点的
- Grafana loki 是一个日志处理程序,接收Agent的写请求,数据的包装,存储…,以及负责将数据响应给Grafana进行数据显示
- Grafana 就是一个数据可视化程序,负责显示数据,有丰富的仪表盘,数据显示功能
完整的Grafana-Loki需要分别搭建Grafana,Grafana-Loki(loki,promtail)
节点,服务和目录的规划
- 准备了两个节点 192.168.52.198,192.168.17.176
- 192.168.52.198部署: 应用服务App(api/core-server)和 Agent (promtail)
- api-server的日志文件路径:/usr/local/cdap/7.0/server/web/api_server/tomcat/logs/cloudsure/api-server/
- 代理程序Agent (promtail) 的目录规划
/opt
└── fs
└── promtail
├── data // data 文件夹
├── promtail-linux-amd64 // 解压后的 zip 包
├── promtail-linux-amd64.zip //官网下载的 Agent 程序zip包
├── promtail.yml //启动代理程序的配置文件(官网也有提供)
└── tmp //tmp文件夹,后面会放positions.yaml
- 192.168.17.176部署: Grafana-Loki和Grafana
- /fs/loki/grafana :放Grafana安装相关的包
- /fs/loki/loki : 放Grafana-Loki安装相关的包
搭建Grafana
操作节点:192.168.17.176
所有的安装官网都提供了完整的步骤:
官网地址 : https://grafana.com/docs/grafana/latest/
源码包安装:https://grafana.com/grafana/download
安装 grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.3.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-10.2.3.linux-amd64.tar.gz
创建系统服务
cat>/usr/lib/systemd/system/grafana-server.service<<EOF
[Unit]
Description=Grafana Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/fs/loki/grafana/grafana
ExecStart=/fs/loki/grafana/grafana/bin/grafana-server
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
服务开机自启
systemctl daemon-reload
systemctl enable grafana-server.service && systemctl start grafana-server.service
/fs/loki/grafana/grafana/conf/defaults.ini为默认配置文件
工作端口,默认为3000。
页面测试访问:http://192.168.17.176:3000 默认用户名和密码:admin/admin
搭建Grafana-Loki
操作节点:192.168.17.176
下载zip包 下载的连接:https://github.com/grafana/loki/releases/
上传,配置,启动
[root@localhost loki]# pwd
/fs/loki/loki # 将zip 包上传此目录
[root@localhost loki]# ll
total 104804
drwxr-xr-x 3 root root Dec 21 11:11 chunks # 新建文件夹
drwxr-xr-x 2 root root 6 Dec 20 11:59 data # 新建文件夹
-rwxr-xr-x 1 root root 59707392 Dec 13 05:50 loki-linux-amd64 # 解压后的zip包
-rw-r--r-- 1 root root 19017087 Dec 20 10:52 loki-linux-amd64.zip # 上传上来的zip包
drwxr-xr-x 2 root root Dec 20 13:41 rules # 新建文件夹
-rw-r--r-- 1 root root 786 Dec 20 13:45 loki.yml # 接下来会创建
创建启动配置文件 loki.yml
参考配置文件: https://hub.fastgit.org/grafana/loki/blob/main/cmd/loki/loki-local-config.yaml
auth_enabled: false # 是否启用鉴权
server:
http_listen_port: 3100 #http访问端口
grpc_listen_port: 9096 #rpc访问端口
common:
path_prefix: /fs/loki/loki
storage:
filesystem:
chunks_directory: /fs/loki/loki/chunks #记录块存储目录,默认chunks块上的日志数量或到期后,将chunks数据打标签后存储
rules_directory: /fs/loki/loki/rules #配置规则目录
replication_factor: 1
ring:
instance_addr: 127.0.0.1 #网络地址
kvstore:
store: inmemory
query_range: #查询规则
results_cache: #结果缓存
cache:
# embedded_cache: #默认开启后会有提示,未配置缓存项,暂不开启
# # enabled: true
# # distributed: true
# # max_size_mb: 100
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 #告警通知url
chunk_store_config:
max_look_back_period: 672h #配置最多查询时间内的数据 (一个月)
table_manager:
retention_deletes_enabled: true # 开启保留策略
retention_period: 672h # 删除超过 一个月 的 chunk
后台启动
nohup ./loki-linux-amd64 --config.file=loki.yml > log.out 2>&1 &
WEB 访问
http://192.168.17.176:3100/metrics
搭建Promtail
操作节点:192.168.52.198
下载zip包 下载的连接:https://github.com/grafana/loki/releases/
上传,配置,启动
[root@localhost promtail]# pwd
/opt/fs/promtail # 规划的目录
[root@localhost promtail]# ll
drwxr-xr-x. 3 root root 12月 20 14:06 data # 新建的文件夹
-rwxr-xr-x. 1 root root 90959144 12月 13 05:52 promtail-linux-amd64 # 解压后的zip包
-rw-r--r--. 1 root root 26276450 12月 20 13:53 promtail-linux-amd64.zip # 上传的zip包
-rw-r--r--. 1 root root 500 12月 20 14:15 promtail.yml # 启动的配置文件
drwxr-xr-x. 2 root root 12月 21 11:32 tmp # 新建的文件夹(并在文件夹中新建一个空文件 touch positions.yaml)
新建启动配置文件promtail.yml
参考配置文件: https://hub.fastgit.org/grafana/loki/blob/main/cmd/loki/loki-local-config.yaml
单个job的配置promtail.yml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /opt/fs/promtail/tmp/positions.yaml
clients:
- url: http://192.168.17.176:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: clousureApi
__path__: /usr/local/cdap/7.0/server/web/api_server/tomcat/logs/cloudsure/api-server/*.log
file_sd_configs:
- files:
- /opt/fs/promtail/data/log_file/*.json
refresh_interval: 1m
多个job的配置promtail.yml(同时监听一个节点下的多个日志文件)
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /opt/fs/promtail/tmp/positions.yaml
clients:
- url: http://192.168.17.176:3100/loki/api/v1/push
scrape_configs:
- job_name: 198-API-SERVER
static_configs:
- targets:
- localhost
labels:
job: 198-API-SERVER
__path__: /usr/local/cdap/7.0/server/web/api_server/tomcat/logs/cloudsure/api-server/*.log
- job_name: 198-CORE-SERVER
static_configs:
- targets:
- localhost
labels:
job: 198-CORE-SERVER
__path__: /usr/local/cdap/7.0/server/web/core_server/tomcat/logs/cloudsure/core-server/*.log
- job_name: 198-GATEWAY
static_configs:
- targets:
- localhost
labels:
job: 198-GATEWAY
__path__: /usr/local/cdap/7.0/server/gateway/var/*.log
后台启动
nohup ./promtail-linux-amd64 --config.file=promtail.yml > log.out 2>&1 &
如果启动失败可以查看 log.out 日志文件中的详细信息
至此整个搭建完毕 !!!!
Loki日志显示和查询
Grafana 连接loki数据
Grafana 查看推送过来的数据
日志的查询
官网查询语句的文档:https://grafana.com/docs/loki/latest/query/log_queries
文档很详细,每种查询的方式都有案列
根据时间查询
根据关键字精准匹配
比如要查询 tid = 220317552729935900
字符串正则查询
比如:查询出 所有sql 执行时间超过 400 毫秒的日志
也可以组合多个查询条件