まだコマンドラインを使用してログを読み取っていますか?Kibanaをすばやく使用し、ログ分析YYDSを視覚化します!

最近、 SpringBoot 2.7.0をサポートするようにモールプロジェクトをアップグレードすると同時に、ELKログ収集システム全体をアップグレードしました。Kibanaインターフェースをアップグレードするたびに、特定の変更があり、よりモダンになっていることがわかりました。今日は、SpringBootがサポートする最新バージョンのELKを使用して、モールプロジェクトのログ収集メカニズムについてお話ししましょう。皆さんのお役に立てば幸いです。

SpringBootの実際のeコマースプロジェクトモール(50k + star)アドレス:github.com/macrozheng/…

ELKログ収集システムの構築

まず、Docker環境にインストールされるELKログ収集システムを構築する必要があります。

  • Elasticsearchコンテナをインストールして実行するには、次のコマンドを使用します。
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.17.3
复制代码
  • /usr/share/elasticsearch/data起動すると、ディレクトリにアクセス権がないことがわかります。ディレクトリのアクセス/mydata/elasticsearch/data許可を変更してから再起動するだけです。
chmod 777 /mydata/elasticsearch/data/
复制代码
  • Logstashコンテナーをインストールして実行するには、次のコマンド、logstash.confファイルアドレスを使用します:github.com/macrozheng/…
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
--link elasticsearch:es \
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.17.3
复制代码
  • コンテナに入り、json_linesプラグインをインストールします。
docker exec -it logstash /bin/bash
logstash-plugin install logstash-codec-json_lines
复制代码
  • Kibanaコンテナをインストールして実行するには、次のコマンドを使用します。
docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:7.17.3
复制代码
  • ELKログ収集システムが開始されると、Kibanaインターフェースにアクセスできます。アクセスアドレスは次のとおりです。http://192.168.3.105 :5601

ログ収集の原則

ログ収集システムの原理は次のとおりです。まず、アプリケーションはLogstashプラグインを統合し、TCPを介してLogstashにログを送信します。Logstashはログを受信すると、ログの種類に応じてElasticsearchのさまざまなインデックスにログを保存します。KibanaはElasticsearchからログを読み取り、Kibanaで視覚的なログ分析を実行できます。具体的なフローチャートは次のとおりです。

ログは、見やすいように次の4つのタイプに分けられます。

  • 调试日志(mall-debug):所有的DEBUG级别以上日志;
  • 错误日志(mall-error):所有的ERROR级别日志;
  • 业务日志(mall-business):com.macro.mall包下的所有DEBUG级别以上日志;
  • 记录日志(mall-record):com.macro.mall.tiny.component.WebLogAspect类下所有DEBUG级别以上日志,该类是统计接口访问信息的AOP切面类。

启动应用

首先得把mall项目的三个应用启动起来,通过--link logstash:logstash连接到Logstash。

mall-admin

docker run -p 8080:8080 --name mall-admin \
--link mysql:db \
--link redis:redis \
--link logstash:logstash \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/admin/logs:/var/logs \
-d mall/mall-admin:1.0-SNAPSHOT
复制代码

mall-portal

docker run -p 8085:8085 --name mall-portal \
--link mysql:db \
--link redis:redis \
--link mongo:mongo \
--link rabbitmq:rabbit \
--link logstash:logstash \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/portal/logs:/var/logs \
-d mall/mall-portal:1.0-SNAPSHOT
复制代码

mall-search

docker run -p 8081:8081 --name mall-search \
--link elasticsearch:es \
--link mysql:db \
--link logstash:logstash \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/search/logs:/var/logs \
-d mall/mall-search:1.0-SNAPSHOT
复制代码

其他组件

其他组件如MySQL和Redis的部署不再赘述,想部署全套的小伙伴可以参考部署文档。

www.macrozheng.com/mall/deploy…

可视化日志分析

接下来我们体验下Kibana的可视化日志分析功能,以mall项目为例,确实很强大!

创建索引匹配模式

  • 首先我们需要打开Kibana的Stack管理功能;

  • 为Kibana创建索引匹配模式

  • 大家可以看到我们之前创建的四种日志分类已经在ES中创建了索引,后缀为产生索引的日期;

  • 我们需要通过表达式来匹配对应的索引,先创建mall-debug的索引匹配模式;

  • 然后再创建mall-errormall-businessmall-record的索引匹配模式;

  • 接下来打开分析中的发现功能,就可以看到应用中产生的日志信息了。

日志分析

  • 我们先来聊聊mall-debug日志,这类日志是最全的日志,可用于测试环境调试使用,当我们有多个服务同时产生日志时,我们可以通过过滤器来过滤出对应服务的日志;

  • 当然你也可以使用Kibana的专用查询语句KQL来过滤;

  • messageクエリに含まれるログなどのファジークエリも実装でき分页、クエリの速度は非常に高速です。

  • ログを介してmall-error、アプリケーションのエラー情報をすばやく取得し、問題を正確に特定できます。たとえば、Redisサービスが停止している場合、ログはここに出力されます。

  • ログを介して、パッケージの下のDEBUGレベルより上のすべてのログmall-businessを表示できcom.macro.mallます。このログを介して、インターフェイスが呼び出されたときに出力されたSQLステートメントを簡単に表示できます。

  • ログを介してmall-record、要求パス、パラメーター、戻り結果、時間のかかる情報、アクセスが遅いインターフェースなど、インターフェース要求のステータスを一目で簡単に確認できます。

要約する

今日は、モールプロジェクトのログ収集ソリューションとKibanaを介してログ分析を実行する方法を紹介します。サーバーに直接アクセスし、コマンドラインを使用してログを表示する方がはるかに便利です。さらに、Kibanaはさまざまなサービスによって生成されたログを集約することもでき、全文検索をサポートします。これは確かに非常に強力です。

参考文献

SpringBootでログ収集メカニズムをカスタマイズする方法については、まだサーバーにアクセスしてログを収集しているという事実を参照できます。ログ収集システムを構築するのはおいしいことではありませんか。

ログを保護する必要がある場合は、誰かが私を無料で売春したいと思っているログを参照して、すぐにセキュリティ保護をオンにすることができます!

プロジェクトのソースコードアドレス

github.com/macrozheng/…

おすすめ

転載: juejin.im/post/7119669717882634271