美文网首页
基础架构之日志管理平台搭建及java&net使用

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

作者: 架构师联盟 | 来源:发表于2020-05-22 10:54 被阅读0次

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

       **环境要求**:CentOS      Release:  7.5.1804
    
       **ELK****版本**:6.3.1    为方便下载我打包在百度网盘,[点击可直接下载](https://pan.baidu.com/s/17HnGeP--VV4_bC17gcq9cQ)
    

      安装

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

    rpm -ivh ./elasticsearch-6.3.1.rpm
    

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

    systemctl status elasticsearch.service
    

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

    image

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

    image

    2. Logstash

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

    image

    3. Kibana

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

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

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

    systemctl status kibana.service
    

    ,输出如下图所示,

    image

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

    image
    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.logstash.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="http://192.168.1.215:9200"
                  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.haomeiwen.com/subject/lozfahtx.html