在现代化的软件开发流程中,日志显得很是的重要,不可能再零散的游离在各个项目中,等查看日志的时候再登陆服务器去到特定的目录去查看,这显然很繁琐且效率低下,全部整合一套日志管理平台,也显得很是重要,这篇文章是日志管理平台搭建的第一篇,第二篇为告警及邮件通知html
环境要求:CentOS Release: 7.5.1804java
ELK版本:6.3.1 为方便下载我打包在百度网盘,点击可直接下载spring
安装json
1. Elasticsearch 解压后上传到服务器,直接用rpm命令安装便可,如运行以下命令安装elasticsearch浏览器
rpm -ivh ./elasticsearch-6.3.1.rpm
,等命令执行完成后,输入服务器
systemctl status elasticsearch.service
,可查看当前运行的状态,如图所示,状态为active 说明咱们的elasticsearch 服务已经启动。app
在浏览器输入http://192.168.1.215:9200,查看返回结果,说明elasticsearch服务已经成功运行。elasticsearch
2. Logstashtcp
安装logstash比较简单,在命令行运行rpm -ivh ./logstash-6.3.1.rpm,等命令执行完成后,输入systemctl status logstash.service 查看服务状态以下图所示,即表示logstash服务已经运行。测试
3. Kibana
最后,咱们安装kibana,在解压目录下运行
rpm -ivh ./kibana-6.3.1-x86_64.rpm
命令,等命令执行完后,输入
systemctl status kibana.service
,输出以下图所示,
说明kibana服务已经启动,咱们在浏览器输入http://192.168.1.215:5601来验证下,若是不出意外,应该显示以下所示
a) 若是遇到出现端口号被占中的状况,用netstat命令查看被哪一个进程占中,杀掉便可,也能够在配置文件修改端口,ELK默认端口:Elasticsearch:9200,Kibana:5601
b) 打开kibana,若是提示认证提示,则修改下kibana的配置文件,默认路径在/etc/kibana/kibana.yml,添加以下设置 xpack.security.enabled: false便可。
日志接入
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使用就完成了,下一篇主要介绍跟钉钉告警及邮件通知