您的位置 首页 java

基础架构之日志管理平台搭建及java&net使用

在现代化的软件开发流程中,日志显得非常的重要,不可能再零散的游离在各个项目中,等查看日志的时候再登录服务器去到特定的目录去查看,这显然很繁琐且效率低下,所有整合一套日志管理平台,也显得非常重要,这篇文章是日志管理平台搭建的第一篇,第二篇为告警及邮件通知

环境要求 :CentOS Release: 7.5.1804

ELK版本 :6.3.1 为方便下载我打包在百度网盘,点击可直接下载

  安装

  1. ElasticSearch 解压后上传到服务器,直接用rpm命令安装即可,如运行如下命令安装elasticsearch

 rpm -ivh ./elasticsearch-6.3.1.rpm  

,等命令执行完成后,输入

 systemctl status elasticsearch.service  

,可查看当前运行的状态,如图所示,状态为active 说明我们的elasticsearch 服务已经启动。

基础架构之日志管理平台搭建及java&net使用

在浏览器输入,查看返回结果,说明elasticsearch服务已经成功运行。

基础架构之日志管理平台搭建及java&net使用

  2. Logstash

  安装logstash比较简单,在命令行运行rpm -ivh ./logstash-6.3.1.rpm,等命令执行完成后,输入systemctl status logstash.service 查看服务状态如下图所示,即表示logstash服务已经运行。

  

基础架构之日志管理平台搭建及java&net使用

  3. Kibana

  最后,我们安装kibana,在解压目录下运行

 rpm -ivh ./kibana-6.3.1-x86_64.rpm  

命令,等命令执行完后,输入

 systemctl status kibana.service  

,输出如下图所示,

  

基础架构之日志管理平台搭建及java&net使用

  说明kibana服务已经启动,我们在浏览器输入来验证下,如果不出意外,应该显示如下所示

    

基础架构之日志管理平台搭建及java&net使用

  1. 安装遇到的问题

    a) 如果遇到出现 端口号 被占中的情况,用netstat命令查看被哪个进程占中,杀掉即可,也可以在配置文件修改端口,ELK默认端口:Elasticsearch: 9200 ,Kibana: 5601

    b) 打开kibana,如果提示认证提示,则修改下kibana的配置文件,默认路径在/etc/kibana/kibana.yml,添加如下设置 xpack.security.enabled: false即可。

  日志接入

  1. java

  a) 在添加logstash包

 <dependency>
   <groupId>net. Log stash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
   <version>5.1</version>
</dependency>  

  b) 日志配置信息

  

 <appender name="logstash"
          class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>xxx.xxx.xxx.xxx:xxxx</destination>
    <queueSize>1048576</queueSize>
    <!-- encoder必须配置,有多种可选 -->
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
        <customFields>{"appname":"${Application_Name}"}</customFields>
    </encoder>
    <connectionStrategy>
        <roundRobin>
            <connectionTTL>5 minutes</connectionTTL>
        </roundRobin>
    </connectionStrategy>
</appender>  

c) Root配置

 <springProfile name="log">
        <root level="debug"><appender-ref ref="logstash" /></root>
    </springProfile>  

d) 在logstash的配置文件路径,默认为/etc/logstash/conf.d添加文件biz_es.conf,文件名称可以自己根据实际需求修改。

 input {
        tcp {  
        ##host:port就是上面appender中的 destination,这里其实把logstash作为服务,开启9601端口接收logback发出的消息  
            host => "0.0.0.0"
        #模式选择为 server   
            mode => "server" 
            port => xxxx
        ##格式 json   
            codec => "json"
            type => "server"
        }  
    
    } 
    
    output {
            if[type]=="server"{
            elasticsearch {
            action => "index"
            #ES地址
                    hosts => "192.168.1.215"
            #指定索引名字,不适用默认的,用来区分各个项目
                    index => "%{[appname]}-%{+YYYY.MM.dd}"
            }
        }
    }  

  e) 需要注意点

i. Logstash监听的端口号要与日志配置的端口号一致

ii. 防火墙要放开监听的端口,测试环境也可以把防火墙关闭

  2. Net

a) 添加 NLog.Targets.ElasticSearch 程序包

b) 编辑Nlog.config

  

 <extensions>

          <add assembly="NLog.Targets.ElasticSearch"/>

        </extensions>

        <target xsi:type="ElasticSearch"

               name="ElasticLog"

               uri="#34;

               index="nlog-${date:format=yyyy.MM.dd}"

               documentType="logevent"

               includeAllProperties="true">

            <field name="private" layout="${assembly-version}" />

        </target>

      <rules>

      <logger name="Kibana" minlevel="Info" writeTo="ElasticLog"/>

</rules>  

c) 添加日志

i. 帮助 Utils

  

 public class LogHelper

    {

        private static Logger logger;

        private static string logRuleName = "Kibana";

        static LogHelper()

        {

            logger = LogManager.GetLogger(logRuleName);

            logger.LoggerReconfigured += logger_LoggerReconfigured;

        }

 

        static void logger_LoggerReconfigured(object sender, System.EventArgs e)

        {

            logger = LogManager.GetLogger(logRuleName);

        }

 

        public static void WirtError(string  message )

        {

            logger.Log(LogLevel.Error, message);

        }

 

        public static void WirtDebug(string message)

        {

            logger.Log(LogLevel.Debug, message);

        }

}  

d) 记录日志

   LogHelper.WirtError("elk log info");  

到这里elk搭建及java&net使用就完成了,下一篇主要介绍跟钉钉告警及邮件通知

文章来源:智云一二三科技

文章标题:基础架构之日志管理平台搭建及java&net使用

文章地址:https://www.zhihuclub.com/178742.shtml

关于作者: 智云科技

热门文章

网站地图