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

环境要求:CentOS      Release:  7.5.1804

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

  安装

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

rpm -ivh ./elasticsearch-6.3..rpm

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

systemctl status elasticsearch.service

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

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

  2. Logstash

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

  

  3. Kibana

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

rpm -ivh ./kibana-6.3.-x86_64.rpm

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

systemctl status kibana.service

,输出如下图所示,

  

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

    

  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使用就完成了,下一篇主要介绍跟钉钉告警及邮件通知

最新文章

  1. [转]ios push
  2. 机器学习笔记—svm算法(上)
  3. centos 6.7安装与配置vncserver
  4. SQL Server 2012中Task是如何调度的?
  5. 分布式消息队列kafka系列介绍 — 核心API介绍及实例
  6. rabbitmq例子
  7. 【转】C++中的位拷贝与值拷贝
  8. 【三分法】hdu2438 Turn the corner
  9. 控制公司 Controlling Companies
  10. 自己创建一个android studio在线依赖compile
  11. tsung&#160;HTTP协议统计报告分析
  12. 软工+C(8): 提问与回复
  13. spring-data-redis时效设置
  14. MP和OMP算法
  15. 【Django】网页跳转的问题
  16. UVA12166-Equilibrium Mobile
  17. 20175225 《Arrays和String单元测试》
  18. centos6 命令界面切换到图形界面
  19. Mac怎样改动开机password
  20. Centos 查看端口占用情况

热门文章

  1. php 多字节编码转换
  2. Locust源码目录结构及模块作用
  3. 封装通用的xhr对象(兼容各个版本)
  4. vue 2.0创建新项目
  5. how to install mapr sandbox
  6. JBoss7.1.1远程无法访问
  7. jsoup、xpath教程
  8. 九度oj 1034 寻找大富翁 2009年浙江大学计算机及软件工程研究生机试真题
  9. 【转】“无法从http://XXX/XXX.svc?wsdl获取元数据”错误的解决方法
  10. 一个Java小菜鸟的实习之路