经过一周的踩坑摸索,终于搭建了一套属于自己的日志监控系统,如有不到之处,还望各位不吝赐教。
来,上手开始!!!
1.拉取镜像
docker pull grafana/grafana:7.4.3
docker pull grafana/promtail:2.1.0
docker pull grafana/loki:2.1.0
2.loki搭建
1)新建配置文件
mkdir -p /data/soft/loki/
cd /data/soft/loki/
touch loki-config.yaml
配置文件内容如下:
auth_enabled: false
server:
http_listen_port: 3100 #云服务器需开放3100端口
grpc_listen_port: 9096 #云服务器需开放9096端口
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 #日志保留周期
2)启动容器
创建文件并授权
mkdir -p /data/soft/loki/index
mkdir -p /data/soft/loki/chunks
chmod -R 777 /data/soft/loki/index
chmod -R 777 /data/soft/loki/chunks
启动
我这里设置了2G内存,各位按照实际情况分配
docker run -d \
--name loki \
--privileged=true \
-v /data/soft/loki:/mnt/config \
-v /data/soft/loki/index:/opt/loki/index \
-v /data/soft/loki/chunks:/opt/loki/chunks \
-p 3100:3100 \
-p 9096:9096 \
-m 2048m \
grafana/loki:2.1.0 -config.file=/mnt/config/loki-config.yaml
验证:
curl http://127.0.0.1:3100/api/prom/label
curl localhost:3100/loki/api/v1/labels
返回分别如下图:
则说明配置成功。
3.promtail搭建
1)新建配置文件
创建目录:
mkdir -p /data/soft/promtail/
cd /data/soft/promtail/
touch promtail-config.yaml
文件内容如下:
server:
http_listen_port: 9080 #云服务器需开放9080端口
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
#把loki当客户端连接
clients:
- url: http://你的loki服务器ip:3100/loki/api/v1/push
scrape_configs:
- job_name: admin-server
pipeline_stages:
static_configs:
- targets:
- localhost
labels:
#标签,用于后面的查询
job: admin-server
__path__: /var/log/admin/*.log #注意,这里的路径是映射主机的/data/logs/admin/目录
2)启动容器
我这里设置了1G内存,各位按照实际情况分配
docker run -d \
--name promtail \
--privileged=true \
-v /data/soft/promtail:/mnt/config \
-v /data/logs/:/var/log \
-v /etc/localtime:/etc/localtime:ro \
-p 9080:9080 \
-m 1024m \
grafana/promtail:2.1.0 -config.file=/mnt/config/promtail-config.yaml
4.grafana搭建
1)启动容器
我这里设置了512m内存,各位按照实际情况分配
docker run -d \
--name grafana \
-p 3000:3000 \
-m 512m \
grafana/grafana:7.4.3
2)访问
打开grafana
192.168.12.21:3000/
输入用户名密码:admin/admin
至此,安装配置已经完成,可以测试一下是否能看到所监控的日志。
参考:https://blog.csdn.net/qq_30442207/article/details/114583870