
看了看国家法规说, 要求日志至少要存储 6 个月, 公网安备页面上也要说留存日志之类的东西.
我现在有个 Nginx 反向代理, 后端服务.
那我要把 Nginx 的日志, 后端请求 Request 和 Response, 全打印出来保存 6 个月吗?
那我这小服务器根本存不了这么多啊.
]]>[2024-10-17T16:43:21,934][ERROR][logstash.outputs.elasticsearch][audit][9b837e55c8099cbb5d15de6e33ff7d57678ffc02f082744561c30f21c7610c3c] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"asr-test-%{[appName]}-%{[serverName]}.log-2024.10.17", :routing=>nil}, {"@timestamp"=>2024-10-17T08:43:21.696Z, "logstash_destination"=>"10ip 打码 90:9889", "host"=>"1ip 打码 97", "logger_name"=>"cn.com.safeware.common.logback.GlobalTraceLogIdSetting", "thread_name"=>"http-nio-9040-exec-159", "type"=>"logback", "env"=>"test", "level_value"=>20000, "traceId"=>"369b8faa9ae54e9ea79c241236670b97", "level"=>"INFO", "app_name"=>"erp", "server_name"=>"api-web", "port"=>33726, "@version"=>"1", "message"=>"请求方式 : POST"}], :respOnse=>{"index"=>{"_index"=>"asr-test-%{[appName]}-%{[serverName]}.log-2024.10.17", "_type"=>"_doc", "_id"=>nil, "status"=>400, "error"=>{"type"=>"invalid_index_name_exception", "reason"=>"Invalid index name [asr-test-%{[appName]}-%{[serverName]}.log-2024.10.17], must be lowercase", "index_uuid"=>"_na_", "index"=>"asr-test-%{[appName]}-%{[serverName]}.log-2024.10.17"}}}} 上面是报错日志,接下来看我 logstash 的配置
cat logstash-audit.conf input { beats { port => 5044 } tcp { port => 9889 codec => json } } filter { if [stack_trace] { mutate { update => { "message" => "%{[message]}%{[stack_trace]}" } } } } output { if "erp" in [tags] { elasticsearch { hosts => [ "17ip 打码 900" ] index => "erp-log%{+YYYY.MM.dd}" } } else if "node167" in [tags] { elasticsearch { hosts => [ "17ip 打码 90" ] index => "ecow-log%{+YYYY.MM.dd}" } } else if "app" in [tags] { elasticsearch { hosts => [ "1ip 打码 9200" ] index => "app-log%{+YYYY.MM.dd}" } } else if "app_name" == "seata-server" { elasticsearch { hosts => ["http://1ip 打码 9200"] index => "pro-seata-server.log-%{+YYYY.MM.dd}" } } else { elasticsearch { hosts => ["http://17ip 打码 9200"] index => "asr-%{[env]}-%{[appName]}-%{[serverName]}.log-%{+YYYY.MM.dd}" } } } 报错影响的应该是这行配置
else { elasticsearch { hosts => ["http://17ip 打码 9200"] index => "asr-%{[env]}-%{[appName]}-%{[serverName]}.log-%{+YYYY.MM.dd}" } 可以看到我这里使用了三个变量,这里我保证这 3 个变量拿到的值一定是全小写 请问这里是什么问题,有没有知道的,或者提供下思路
]]>但是我个人开发体验上感觉 debug 这一个等级不太够用,我觉得应该新增一个 develop 等级。因为我在开发阶段有一个阶段是要寻求了解整个应用在所有必要和非必要节点上的运作细节,这比 debug 级别的需求涵盖更加广,因为后者更着重于分析和监控程序是否工作正常,而不注重运行细节,但开发人员在开发过程中需要大量调试,程序本身也没被确定下来,自然需要更多信息反复尝试。
现在遇到一个问题是,一般在应用部署初期,也不是直接调到 info 级别日志运行的,而是仍然习惯用 debug 日志跑一段时间,观察是否运行正常。但是如果在开发过程中大量使用 debug 打点的话,信息有点过于多了,不多打点的话开发体验又相当于默写,掌控感很差。
]]>auth_enabled: false server: http_listen_port: 3100 common: path_prefix: /data/loki chunk_store_config: max_look_back_period: 360h compactor: shared_store: filesystem working_directory: /data/loki/boltdb-shipper-compactor ingester: chunk_block_size: 262144 chunk_idle_period: 3m chunk_retain_period: 1m lifecycler: ring: kvstore: store: inmemory replication_factor: 1 max_transfer_retries: 0 limits_config: enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h schema_config: configs: - from: "2023-01-01" index: period: 24h prefix: index_ chunks: period: 24h prefix: chunk_ object_store: filesystem schema: v11 store: boltdb-shipper storage_config: boltdb_shipper: active_index_directory: /data/loki/boltdb-shipper-active cache_location: /data/loki/boltdb-shipper-cache cache_ttl: 24h shared_store: filesystem filesystem: directory: /data/loki/chunks table_manager: retention_deletes_enabled: true retention_period: 360h 我估计是 schema_config 内 index 的 period 设置出的问题,我理解这个设置的意思是在 24h 后重建索引,但是不明白 Loki 重建索引的规则是什么,为什么只有 filename 的 label 丢失了,有大佬解答一下吗
]]>日志对程序的重要性不言而喻,轻巧、简单、无需费脑,程序代码中随处可见,帮助我们排查定位一个有一个问题问题。但看似不起眼的日志,却隐藏着各式各样的“坑”,如果使用不当,不仅不能帮助我们,反而会成为服务“杀手”。 本文主要介绍生产环境日志使用不当导致的“坑”及避坑指北,高并发系统下尤为明显。同时提供一套实现方案能让程序与日志“和谐共处”。
欢迎访问我的原创文章:性能调优——小小的 log 大大的坑
]]>目前我们公司测试环境因为登陆不了测试服务器所以没有办法查看文件,线上的话是使用的先放入到 redis 的 list 中,然后从 redis list 中取出然后放入到 MySQL 的 json 文件中,最后查询日志的话查询 MySQL 的 json,想问下大家都是怎么查询日志的呢,有没有什么好的最佳实践呢🤔
]]>