赞
踩
1+x 2020年数据采集证书(中级)实操试卷一
采集工具运用题
#一、数据采集任务场景一(工具定制题) 使用 apache httpd、filebeat、logstash、csv完成数据采集演示。 ## 1、数据场景: ### apache httpd: 运行目录:/app/httpd/ ### filebeat 安装路径:/bigData/tools/filebeat/ 配置文件:/bigData/tools/filebeat/filebeat.yml ### logstash 安装路径:/bigData/tools/logstash/ 配置文件:/bigData/tools/logstash/config/logstash-filebeat-csv.conf
题目要求:
## 2、采集要求 1)apache httpd的配置文件修改 1.1)找到apache httpd配置文件 1.2)根据apache httpd配置文件找到access日志文件。 1.3)修改apache httpd配置文件中的apache端口为8097,然后重启apache。 1.4)通过火狐浏览器直接访问apache服务,产生新的日志数据。 2)在filebeat里配置采集的apache httpd的access日志文件路径 3)使用采集工具(filebeat)收集apache httpd的access日志数据 4)通过filebeat输出到logstash,在logstash里收集信息,通讯端口是5044。 5)通过logstash使用 HTTPD_COMMONLOG 正则规则拆分日志数据。 6)通过logstash输出到csv文件中(/home/output/httpd-outfile.csv)。 7)httpd-outfile.csv内容说明:包含"timestamp" ,"verb", "httpversion"这三个属性信息,用4个空格分隔。 ## 3、提交的内容 1)filebeat的配置文件 2)logstash的配置文件 3)csv结果文件
1)filebeat的配置文件
- filebeat.inputs:
-
- - type: log
-
- # to do
-
- enabled: true
-
- # to do
-
- paths:
-
- - /app/httpd/logs/access_log
-
- filebeat.config.modules:
-
- path: ${path.config}/modules.d/*.yml
-
- reload.enabled: false
-
- setup.template.settings:
-
- index.number_of_shards: 3
-
- setup.kibana:
-
- output.logstash:
-
- # to do The Logstash hosts
-
- hosts: ["localhost:5044"]
-
- processors:
-
- - add_host_metadata: ~
-
- - add_cloud_metadata: ~
评分标准
2)logstash的配置文件
- # Sample Logstash configuration for creating a simple# Beats -> Logstash -> Elasticsearch pipeline.
-
- input { # to do
-
- beats {
-
- port => 5044
-
- }}filter { # to do
-
- grok {
-
- match => { "message" => "%{HTTPD_COMMONLOG}" }
-
- }}output {
-
- csv {
-
- path => "/home/output/httpd-outfile.csv"
-
- fields => ["timestamp" ,"verb", "httpversion"]
-
- csv_options => {"col_sep" => " "}
-
- }
-
-
-
- stdout{
-
- codec => rubydebug #格式化
-
- }
-
- }
评分标准
25分
3)csv结果文件
"27/Jul/2020:15:52:47 +0800" GET 1.1
评分标准
采集结果:15 分. 采集结果文件中至少包含一条数据。数据内容参考如下: "27/Jul/2020:15:30:47 +0800" GET 1.1 这一条数据中的三个数据项值分别是5分。 第一个数据是时间,时间要包含 27/Jul/2020 这个关键数据。 第二个数据是请求方法值。可以是GET、POST、PUT、DELETE等其中一个。 第三个数据是HTTP版本号。值可以是 1.1 。
编程题
题目说明:
# 一、数据采集任务场景一(编程开发) ## 1、数据场景: ### 采集网站 http://117.73.11.244:9090/ ### chrome浏览器启动 启动chrome:/opt/google/chrome/google-chrome --no-sandbox ### python开发工具启动 启动pycharm:/home/pycharm-community-2020.1.1/bin/pycharm.sh ### 工程目录说明 工程目录是:/root/PycharmProjects/crawler ### 编程文件 代码文件路径: /root/PycharmProjects/crawler/src/webcrawler.py
题目要求:
1)代码文件:webcrawler.py
- #!/usr/bin/env python# -*- coding: utf-8 -*-
-
- import time
-
- import urllib, time, os, base64, json
-
- import re, sys
-
- import urllib
-
- from lxml import etree
-
- import requests #对获取到的响应网页内容进行冗余数据剔除。
-
- def getPage(base_url):
-
- try:
-
- page = urllib.request.urlopen(base_url) # 5
-
- content = page.read().decode("utf-8", "ignore").lower()
-
-
-
- re_script=re.compile('<\s*script[\S\s]*<\s*/\s*script\s*>',re.I) #Script [\\S\\s]+?使用正则去掉网页中的<script>元素及其包含的内容。
-
- re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I) #style使用正则去掉网页中的<style>元素及其包含的内容。
-
-
-
- content=re_script.sub('',content) #去掉SCRIPT
-
- content=re_style.sub('',content)#去掉style
-
- selector = etree.HTML(content.encode("utf-8",'ignore'))
-
- # answer one
-
- # menu_items = selector.xpath("/html/body/header/div/ul[@id='head_nav_list']/li/a") # 5
-
- # for item in menu_items:
-
- # writefile("/home/output/crawler_result.csv", item.attrib.get("href")) # 2
-
-
-
- # answer two
-
- menu_items = selector.xpath("/html/body/header/div/ul[@id='head_nav_list']/li/a/@href") # 5
-
- for item in menu_items:
-
- writefile("/home/output/crawler_result.csv", item) # 2
-
-
-
- except Exception as e: # 3
-
- print("Failed to read from %s." % base_url)
-
- print(sys.exc_info())
-
- return False
-
- def writefile(filename, content):
-
- try:
-
- fp = open(filename, 'a') # 5
-
- fp.write(content + "\n") # 5
-
- fp.close() # 5
-
- except:
-
- return False
-
-
-
- now = time.strftime('%Y-%m-%d %X', time.localtime(time.time()))
-
- try:
-
- # 5
-
- url = 'http://117.73.9.229:9090/'
-
- getPage(url)
-
- except Exception as e:
-
- info = '%s\nError: %s' % (now, e)
-
- writefile('Error.log', info)
-
- print (info)
-
- time.sleep(1)
评分标准
35分
2)采集结果:crawler_result.csv
- /
- http://www.inspuredu.com/sysConfigItem/showList
-
- http://www.inspuredu.com/classPackage/findAll
-
- http://www.moe.gov.cn/jyb_xwfb/s271/201904/t20190416_378207.html
-
- http://www.inspuredu.com/sysNews/list.html
-
- http://www.inspuredu.com/tikuIndex/toIndex
-
- http://www.inspuredu.com/question/comQuestionIndex
评分标准
15分
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。