35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/fluent/plugin/in_apache_modstatus.rb', line 35
def output
record = {}
page_content = Net::HTTP.get(URI.parse(@url))
status_values = page_content.lines.map(&:chomp)
status_values.each do |item|
if item.include? "Scoreboard: "
values = item.split(": ")
scores = values[1].split(//)
scoreboard = {
"wait" => 0,
"start" => 0,
"read" => 0,
"reply" => 0,
"keepalive" => 0,
"dns" => 0,
"closing" => 0,
"log" => 0,
"graceful" => 0,
"cleanup" => 0,
"openslot" => 0
}
scores.each do |score|
if score == "_"
scoreboard["wait"] = scoreboard["wait"] + 1
elsif score == "S"
scoreboard["start"] = scoreboard["start"] + 1
elsif score == "R"
scoreboard["read"] = scoreboard["read"] + 1
elsif score == "W"
scoreboard["reply"] = scoreboard["reply"] + 1
elsif score == "K"
scoreboard["keepalive"] = scoreboard["keepalive"] + 1
elsif score == "D"
scoreboard["dns"] = scoreboard["dns"] + 1
elsif score == "C"
scoreboard["closing"] = scoreboard["closing"] + 1
elsif score == "L"
scoreboard["log"] = scoreboard["log"] + 1
elsif score == "G"
scoreboard["graceful"] = scoreboard["graceful"] + 1
elsif score == "I"
scoreboard["cleanup"] = scoreboard["cleanup"] + 1
elsif score == "."
scoreboard["openslot"] = scoreboard["openslot"] + 1
end
end
scoreboard.each do |key,score|
record["scoreboard_count_#{key}"] = score
end
elsif item.include? ": "
values = item.split(": ")
values[0].downcase!
values[0].gsub!(/ /,"_")
if valid_float(values[1])
record[values[0]] = values[1].to_f
else
record[values[0]] = values[1]
end
end
end
time = Fluent::Engine.now
router.emit(tag,time,record)
end
|