在活动的开始我写的是elastic stack的相关文章,但发现没什么人看,转为撰写Jenkins相关的东西。转眼来到了尾声了,其实这两者是可以有关联的。我们可以将Jenkins的日志发送给elasticsearch。
安装与配置logstash插件
先在插件中心搜索安装Logstash。
在系统配置中找到并打开这个选项
除了elasticsearch,还有Logstash自己、Rabbit MQ、Redis等可以作为日志接收方。
因为我以前配置的elastic没有身份认证,所以这里不需要填用户名密码以及高级设置中的证书配置。
URI配置中http://127.0.0.1:9200 是elastic的路径,jenkins是想要添加的索引的名称,这个可以是一个自定义的名称。_doc 是elastic的语法,代表了写入数据
Job任务的配置
进入任务配置界面,在General区域会有Send console log to Logstash的选项,勾选后会将构建的日志逐条发送到elasticsearch数据库中。
此时可以在kibana上查看数据,查看前先建立一个和前面index对应的索引。
数据库页面大致是这样的
前几项中会标识这条数据的来源,因为我写了很多test,所以这里解释下。data开头的是数据的附带信息,buildHost是构建的节点名称,buildLabel是构建的标签,buildNum是构建的编号
data.buildVariables开头的是构建的环境变量。任务名称和Jenkins地址都在上面。data开头的和他有很多重复的项目。
最后的message是消息的主体。
如果不想这么零散的发送日志,那么可以在post阶段发送日志,配置了最大行数,最大值超过的将只会提取最后的配置行发送给数据库。
此时在kibana页面上展示的数据将是通过逗号分隔的一个大字符串
分散配置中只有最后一条会带上data.result来展示构建的结果状态,所以单条提取还是很好用的。不足的地方就是日志上的时间不能很好的确定。
这里我提出了一个问题单,希望他们有时间能加上这个功能。
[JENKINS-71559] add timestamp to each line when add logstash step at postbuild step - Jenkins Jira
全局配置
如果每个工程都要配置,那么后装这个插件的配置人员要累死了,所以系统配置里有个Enable Globally选项,勾选后可以使跑的工程默认带上日志传送的配置。要注意这个配置下的日志是分散的。
这里加个选项来进行配置为整体的需求已经有用户反馈了,希望能在后续版本更新。