近期在整理项目总结材料,顺便利用学到的ELK知识对项目管理过程数据进行抽取、导入和分析。
手上的数据来源有禅道管理系统、会议纪要和问题跟踪记录,禅道管理系统用于日常任务分配和工时记录,具有较高的参考价值,首先就以禅道管理系统中的数据为例进行工时统计。
禅道管理系统提供了数据导出功能,所以很方便拿到想要的数据。登录后进入“项目>任务”,选取所有任务,点击“导出”,选择需要的字段并另存为CSV文件。
将导出后的CSV文件使用文本编辑器打开,由于存在“多人任务”这种类型,会对后续的数据导入存在影响,所以先剔除,对整体影响不大。
启动Elasticsearch,地址为http://****:9200。
启动Kibana,地址为http://****:5601。
创建配置文件task.conf
input { stdin { } file{ path => "D:/Projects/2021-智慧人防/项目总结/hnrf-task.csv" start_position => "beginning" sincedb_path => "D:/WebSites/ELK/History" } } filter { csv { separator => "," columns => ["编号","任务名称","任务类型","优先级","预计开始","实际开始","截止日期","任务状态","最初预计","总计消耗","预计剩余","进度","由谁创建","创建日期","指派给","指派日期","由谁完成","实际完成","由谁取消","取消时间","由谁关闭","关闭时间","关闭原因"] } mutate { convert => {"最初预计" => "float"} convert => {"总计消耗" => "float"} convert => {"预计剩余" => "float"} remove_field => ["message"] } } output { stdout { codec => json_lines } elasticsearch { hosts => "localhost:9200" index => "task" document_type => "_doc" #document_id => "%{IDNumber}" } }
定义输入input、过滤器filter和输出output。在input中定义需要导入的CSV文件路径,在filter中定义需要导入的列和需要转换格式的字段,在output中定义Elasticsearch服务的地址和索引名称(定义索引为task)。
使用命令行启动logstash
.\logstash.bat -f ..\config\hnrf-task.conf启动后可以看到飞速滚动的输出日志,说明数据在导入了。
使用浏览器访问Kibana(http://****:5601),打开“Management>开发工具”,查看已导入的数据。
可以看到已导入数据4773条,同时也可以使用DSL语言进行搜索查询。
在Kibana中打开“StackManagement>Kibana>索引模式”,点击“创建索引模式”开始创建。
从现有索引中选择,点击“下一步”继续。
在Kibana中选择“Dashboard仪表板”,创建仪表板并创建可视化。
在可视化编辑面板左侧工具栏选择索引模式为task。
在中间板块选择图表类型为柱状图。
在右侧面板中分别定义X轴和Y轴,在这个图表里计划使用开发人员姓名作为Y轴,累计工时作为X轴。因此Y轴的的设定为数据来源是“由谁完成.keyword”,显示名称为“完成人”。
X轴的设置为数据源为“总计消耗”的求和,显示名称为“工时消耗合计”。
点击保存即可作为可视化图表在仪表盘中使用和查看。最终效果如下。
仪表盘可作为独立链接发布或者嵌入至iframe中。如果觉得Kibana的图表不好看,可以将Kibana查询数据的接口提供给echarts等图表控件,同样能有很好的效果。