公司网络设备有很多靠本身存储logs在掉电后会丢失,根据这一痛点趁这个机会搭建统一logs平台来对设备的logs进行收集
通过rsyslog采集 promtail+loki+grafana 展现的方案来对日志进行可视化。
环境为 Ubuntu 2004
使用系统自带的rsyslog进行配置,首先默认配置文件中注释掉以下两行开启UDP514端口
bashmkdir -p /data/logs/data
chown syslog:adm /data/logs/data
vim /etc/rsyslog.conf
# 取消注释以下两行
$ModLoad imudp
$UDPServerRun 514
# 在这个文件夹下新建自己的模板文件
root@logs:~# ll /etc/rsyslog.d/
total 24
drwxr-xr-x 2 root root 4096 Jul 24 15:07 ./
drwxr-xr-x 102 root root 4096 Jul 24 15:50 ../
-rw-r--r-- 1 root root 314 Jan 22 2020 20-ufw.conf
-rw-r--r-- 1 root root 255 Dec 9 2022 21-cloudinit.conf
-rw-r--r-- 1 root root 1862 Aug 11 2020 50-default.conf
vim /etc/rsyslog.d/60-network.conf
# 写入以下两行 这里是自定义了logs文件的存放方法,log文件将以ip为文件夹,按天分割
$template RemoteLogs,"/data/logs/data/%fromhost-ip%/%HOSTNAME%-%$YEAR%-%$MONTH%-%$DAY%.log"
:fromhost-ip, !isequal, "127.0.0.1" ?RemoteLogs
& ~
# 编辑完成后重启服务
systemctl restart rsyslog
参照官网示例使用Docker方式拉起容器。
bash# loki
mkdir /data/loki
cd /data/loki
wget https://raw.githubusercontent.com/grafana/loki/v2.8.0/cmd/loki/loki-local-config.yaml -O loki-config.yaml
docker run --name loki -d -v $(pwd):/mnt/config -p 3100:3100 grafana/loki:2.8.0 -config.file=/mnt/config/loki-config.yaml
# promtail
mkdir /data/promtail
cd /data/promtail
wget https://raw.githubusercontent.com/grafana/loki/v2.8.0/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml
docker run --name promtail -d -v $(pwd):/mnt/config -v /data/logs/data:/var/log/network --link loki grafana/promtail:2.8.0 -config.file=/mnt/config/promtail-config.yaml
Grafana这里,如果按照官方文档后面不跟版本号,那么会拉下来8.3老版本的镜像,比较难用,建议查看docker hub的标签后重新指定版本。 Grafana Docker hub tag
bashmkdir /data/grafana
cd /data/grafana
docker run -d -p 3000:3000 --name=grafana --user "$(id -u)" --volume "$PWD/data:/var/lib/grafana" grafana/grafana-enterprise:10.0.2-ubuntu
在 ip:3000 端口访问Grafana后数据源添加loki,url填入loki容器暴露的地址和端口点确定即可,同时可以将Grafana容器内的/usr/share/grafana/conf
也一同映射出来,方便调整配置,
如可以修改default_language = zh-Hans
,官方有部分汉化,有的总比没得好。