?前言
Loki是Grafana Labs團(tuán)隊(duì)的開源項(xiàng)目,是一個(gè)水平可擴(kuò)展,高可用性,多租戶的日志聚合系統(tǒng),它的設(shè)計(jì)非常簡潔易于操作。
受Prometheus啟發(fā)的,可以水平擴(kuò)展、高可用以及支持多租戶的日志聚合系統(tǒng),使用了和Prometheus相同的服務(wù)發(fā)現(xiàn)機(jī)制,將標(biāo)簽添加到日志流中而不是構(gòu)建全文索引,從promtail接收到的日志和應(yīng)用的Metrics指標(biāo)就有相同的標(biāo)簽集,不僅提供了更好的日志和指標(biāo)之間的上下文切換,還避免了對日志進(jìn)行全文索引。
日常的網(wǎng)絡(luò)運(yùn)維中,如果能把網(wǎng)絡(luò)設(shè)備的日志收集起來,集中查看,在處理故障或日常巡檢時(shí),會比較方便一些
如果沒有專業(yè)的日志收集硬件或軟件設(shè)備,那么可以搭建Loki進(jìn)行收集,并使用Grafana查看收集好的日志
本文的主要內(nèi)容如下:
- 如何安裝部署loki
- 如何配置網(wǎng)絡(luò)設(shè)備的syslog
- 如何使用rsyslog收集到網(wǎng)絡(luò)設(shè)備的日志
- 如何配置Grafana并查看日志
環(huán)境準(zhǔn)備
1臺主機(jī),可以是云主機(jī)、虛機(jī),可以根據(jù)日志的多少來決定配置的大小,本實(shí)驗(yàn)中的配置是4C8G的
OS為Debian11,但其他發(fā)行版如CentOS,大部分情況下也是適用的
該主機(jī)將會安裝loki,rsyslog、promtail
*本文檔不再介紹如何安裝Grafana
安裝部署Loki
下載最新的版本https://github.com/grafana/loki/releases/?[1]在Linux中安裝時(shí)可下載loki-linux-amd64.zip
解壓可執(zhí)行文件到目標(biāo)目錄
unzip -d /usr/local/bin/ loki-linux-amd64.zip
創(chuàng)建用戶
useradd -r -s /sbin/nologin loki
創(chuàng)建配置文件
mkdir -pv /etc/loki /data/loki
chown -R loki:loki /etc/loki
編輯Loki的配置文件
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
path_prefix: /data/loki
storage:
filesystem:
chunks_directory: /data/loki/chunks
rules_directory: /data/loki/rules
replication_factor: 1
ring:
instance_addr: 10.20.20.20
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
請修改以上幾項(xiàng)內(nèi)容
instance_addr,修改為安裝主機(jī)的IP地址
alertmanager_url:修改為alertmanager的url,本次并未使用alertmanager,所以寫的localhost
編輯Systemd[2]的服務(wù)配置文件vim /lib/systemd/system/loki.service
[Unit]
Description=Loki service
After=network.target
[Service]
Type=simple
User=loki
ExecStart=/usr/local/bin/loki-linux-amd64 -config.file /etc/loki/loki-my-config.yaml
[Install]
WantedBy=multi-user.target
啟動并設(shè)置為開機(jī)自啟動
systemctl start loki; systemctl enable loki
systemctl status loki
安裝并配置promtail
從https://github.com/grafana/loki/releases[3] 下載安裝包
下載示例的配置文件
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/promtail/promtail-local-config.yaml
也可以直接使用如下的示例配置,注意個(gè)別地址需要修改,已進(jìn)行注釋
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /etc/promtail/positions.yaml
clients:
# 將地址修改為實(shí)際的 loki Server 的地址
- url: http://10.20.20.20:3100/loki/api/v1/push
scrape_configs:
- job_name: loki
static_configs:
- targets:
- localhost
labels:
job: syslog
env: prod
location: whcq
vendor: loki
hostname: m-loki
__path__: /var/log/network/m-loki-127.0.0.1.log
- job_name: syslog
static_configs:
- targets:
- localhost
labels:
job: syslog
env: prod
location: whcq # 設(shè)備的機(jī)房或者所在的位置
vendor: huawei # 品牌
hostname: Test-S6720-254 # 主機(jī)名
__path__: /var/log/network/Test-S6720-254-10.20.99.254.log # 日志的路徑
- job_name: syslog
static_configs:
- targets:
- localhost
labels:
job: syslog
env: prod
location: shbd
vendor: cisco
hostname: Test-C3560G
__path__: /var/log/network/192.168.99.254-192.168.99.254.log
調(diào)整promtail執(zhí)行文件和配置文件的路徑
mv promtail-linux-amd64 /usr/local/bin/
mkdir -pv /etc/promtail; mv promtail-local-config.yaml config-promtail.yml
創(chuàng)建用戶并修改文件的權(quán)限
useradd -r promtail
chown promtail:promtail /tmp/positions.yaml
編輯 Promtail.servicevim /lib/systemd/system/promtail.service
[Unit]
Description=Promtail service
After=network.target
[Service]
Type=simple
User=promtail
ExecStart=/usr/local/bin/promtail -config.file /etc/promtail/config-promtail.yml
[Install]
WantedBy=multi-user.target
啟動服務(wù)
systemctl start promtail
systemctl enable promtail
使用rsyslog收集到網(wǎng)絡(luò)設(shè)備的日志
配置文件如下vim /etc/rsyslog.conf
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
$template IpTemplate,"/var/log/network/%HOSTNAME%-%FROMHOST-IP%.log"
*.* ?IpTemplate
& ~
%HOSTNAME%-%FROMHOST-IP%.log是日志文件的名字,表示主機(jī)名+發(fā)送源主機(jī)的IP
重啟服務(wù)
systemctl restart rsyslog
配置交換機(jī)發(fā)送日志到Loki
# 設(shè)置發(fā)送日志的源端口
logging source-interface Vlan99
# 設(shè)置目標(biāo)主機(jī)
logging 10.20.20.20
# 根據(jù)實(shí)際情況修改源接口,或者不配置
info-center loghost source Vlanif999
# 設(shè)置 syslog 的目標(biāo)主機(jī)
info-center loghost 10.20.20.20
# 默認(rèn)情況下是Info級別,所以此命令可以不執(zhí)行
info-center source default channel loghost log level informational
導(dǎo)入ID為13639的Dashboard
配置Variables,建議的配置如下

查看日志

參考資料:
[1]https://github.com/grafana/loki/releases/: https://github.com/grafana/loki/releases/
[2]Systemd: https://www.wolai.com/5YUVEN1zqVdZG2inbWBKh9
[3]https://github.com/grafana/loki/releases: https://github.com/grafana/loki/releases?