下载loki promtail grafana
#loki promtail
https://github.com/grafana/loki/releases
#grafana
https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1
启动命令
./grafana-server web &
nohup /mnt/data/filebeat/filebeat -e > logs/stdout.log 2>&1 &
?
nohup ./loki-linux-amd64 -config.file=/mnt/loki-local-config.yaml > log-loki.file 2>&1 &
nohup ./promtail -config.file=/mnt/data/promtail-config.yaml > log-promtail.file 2>&1 &
loki配置文件
auth_enabled: false
?
server:
http_listen_port: 8100
?
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
?
schema_config:
configs:
? - from: 2020-06-22
? ? store: boltdb
? ? object_store: filesystem
? ? schema: v11
? ? index:
? ? ? prefix: index_
? ? ? period: 168h
?
storage_config:
boltdb:
? directory: /mnt/data/ELK/loki/data/index
?
filesystem:
? directory: /mnt/data/ELK/loki/data/chunks
?
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
?
chunk_store_config:
max_look_back_period: 0s
?
table_manager:
retention_deletes_enabled: true
retention_period: 336h
promtail配置文件
server:
http_listen_port: 9080
grpc_listen_port: 0
?
positions:
filename: /tmp/positions.yaml
?
clients:
- url: http://192.168.13.82:8100/loki/api/v1/push
?
scrape_configs:
- job_name: 28-home-log
static_configs:
- targets:
? ? - localhost
? labels:
? ? job: 28-home-log
? ? host: 192.168.13.28
? ? env: prod
? ? __path__: /mnt/data/iot-home/*/logs/*.log
?
- targets:
? ? - 192.168.13.29
? labels:
? ? job: 29-home-log
? ? host: 192.168.13.29
? ? env: prod
? ? __path__: /mnt/data/iot-home/*/logs/*.log
?
- targets:
? ? - 192.168.13.29
? labels:
? ? job: 29-smart-log
? ? host: 192.168.13.29
? ? env: prod
? ? __path__: /mnt/data/iot-smart/*/logs/*.log
?
- targets:
? ? - 192.168.13.30
? labels:
? ? job: 30-smart-log
? ? host: 192.168.13.30
? ? env: prod
? ? __path__: /mnt/data/iot-smart/*/logs/*.log
?
- targets:
? ? - 192.168.13.42
? labels:
? ? job: 42-smart-log
? ? host: 192.168.13.42
? ? env: prod
? ? __path__: /mnt/data/iot-smart/*/logs/*.log
?
- targets:
? ? - 192.168.13.42
? labels:
? ? job: 42-home-log
? ? host: 192.168.13.42
? ? env: prod
? ? __path__: /mnt/data/iot-home/*/logs/*.log
?
- targets:
? ? - 192.168.13.75
? labels:
? ? job: 75-smart-log
? ? host: 192.168.13.75
? ? env: prod
? ? __path__: /mnt/data/iot-smart/*/logs/*.log
?
- targets:
? ? - 192.168.13.75
? labels:
? ? job: 75-home-log
? ? host: 192.168.13.75
? ? env: prod
? ? __path__: /mnt/data/iot-home/*/logs/*.log
?
- targets:
? ? - 192.168.13.77
? labels:
? ? job: 77-smart-log
? ? host: 192.168.13.77
? ? env: prod
? ? __path__: /mnt/data/iot-smart/*/logs/*.log
?
- targets:
? ? - 192.168.13.78
? labels:
? ? job: 78-home-log
? ? host: 192.168.13.78
? ? env: prod
? ? __path__: /mnt/data/iot-home/*/logs/*.log
?
?
启停脚本
#!/bin/bash
?
start(){
? pid=`ps -ef |grep promtail |grep -v grep |awk '{print $2}'`
? if [ ! "$pid" ];then
nohup ./promtail -config.file=/mnt/data/promtail/promtail-config.yaml > promtail.log 2>&1 &
echo "Starting promtail success!"
? else
? ? ? echo "promtail is already start!"
? ? ? echo -n "pid : $pid"
? ? ? exit
? fi
}
?
stop(){
? echo -n $"Stopping promtail: "
? pid=`ps -ef |grep promtail |grep -v grep |awk '{print $2}'`
? if [ ! "$pid" ];then
echo "promtail is not running!"
? else
echo "$pid"
? ? ? kill $pid
echo "stop promtail success! pid : $pid"
? fi
}
?
restart() {
? stop
? sleep 3s
? start
}
?
status(){
? pid=`ps -ef |grep promtail |grep -v grep |awk '{print $2}'`
? if [ ! "$pid" ];then
? ? ? echo "promtail is not running"
? else
? ? ? echo "promtail is running! pid: $pid"
? fi
}
?
case "$1" in
? start)
? ? ? start
? ;;
? stop)
? ? ? stop
? ;;
? restart)
? ? ? restart
? ;;
? status)
? ? ? status
? ;;
? *)
? ? ? echo $"Usage: $0 {start|stop|restart|status}"
? ? ? exit 1
esac
grafana配置
1.添加loki数据源
?
2.打开展示板 explore
?
3.查看日志数据 选择标签 可以在配置文件自定义标签
?
4.查询语法
?
Loki Cheat Sheet See your logs Start by selecting a log stream from the Log labels selector. Alternatively, you can write a stream selector into the query field: {job="default/prometheus"} Combine stream selectors {app="cassandra",namespace="prod"} Returns all log lines from streams that have both labels. Filtering for search terms. {app="cassandra"} |~ "(duration|latency)s*(=|is|of)s*[d.]+" {app="cassandra"} |= "exact match" {app="cassandra"} != "do not match" LogQL supports exact and regular expression filters. Count over time count_over_time({job="mysql"}[5m]) This query counts all the log lines within the last five minutes for the MySQL job. Rate rate(({job="mysql"} |= "error" != "timeout")[10s]) This query gets the per-second rate of all non-timeout errors within the last ten seconds for the MySQL job. Aggregate, count, and group sum(count_over_time({job="mysql"}[5m])) by (level) Get the count of logs during the last five minutes, grouping by level
|